> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trynito.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Screenshot Debugger

> Attach a screenshot of an error, a broken UI, or a diagram to a vision model through Nito and get an explanation, from your terminal or inside your chat, with a batch option for many images.

**Goal.** Sometimes the fastest way to explain a problem is a picture: a stack-trace screenshot, a red build log, a misrendered UI, an architecture diagram. This recipe attaches an image to a **vision-capable model** through Nito and asks about it, from the terminal or from inside Claude Code or Codex, with a batch loop for a folder of screenshots.

**When to reach for it.** A crash you captured as a screenshot, a layout bug that is easier to show than describe, a diagram you want explained or turned into notes, or a folder of QA screenshots to triage. For a document (PDF, DOCX), use [Document Q\&A Pipeline](/cookbook/batch-document-qa) instead; images and documents take different paths.

## Images Need a Vision Model

Documents work with any model because Nito extracts their text first. **Images do not:** the model itself has to accept image input, so you must pick a vision-capable model. Nito refuses an image on a non-vision model with a clear message rather than guessing. Supported image formats are PNG, JPEG, and WebP. See [Image input](/features/multimodal/image-input).

Find vision models with `nito agent models` (look for image support). `qwen/qwen3-vl-235b-a22b-instruct` (open-weight, Private) and `anthropic/claude-haiku-4-5` (frontier, Anonymous) both accept images; pick by the privacy level you want.

## Prerequisites

* **Nito installed and signed in.** See [Nito CLI](/cli/reference).
* **A vision-capable model** (see above).
* Screenshots in PNG, JPEG, or WebP.

## Step 1: Ask about one screenshot

From the terminal, attach the image with `--file` and name a vision model:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
# Explain an error captured as a screenshot
nito ask --model qwen/qwen3-vl-235b-a22b-instruct --file ./error.png \
  "What is causing this error, and how do I fix it?"
```

## Step 2: Read the result

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
Nito · Hosted · anthropic/claude-haiku-4-5 · Anonymous · Prompt with 1 image

The traceback shows a KeyError on "user_id" in serializers.py line 88. The
request payload does not include user_id, so `data["user_id"]` raises. Guard it
with data.get("user_id"), or validate the field before access.
```

The label confirms an image was attached (`Prompt with 1 image`) and which model and privacy level answered.

## Inside a Chat

The same works with the plugin, using an image path in your workspace:

<Tabs>
  <Tab title="Claude Code">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
    /nito:ask --model qwen/qwen3-vl-235b-a22b-instruct --file ./ui-bug.png Why is this button overlapping the header?
    ```
  </Tab>

  <Tab title="Codex">
    ```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
    $nito:ask --model qwen/qwen3-vl-235b-a22b-instruct --file ./ui-bug.png Why is this button overlapping the header?
    ```
  </Tab>
</Tabs>

## Triage a Folder of Screenshots

To triage many images at once, for example a directory of failing-test screenshots, loop over them and collect a one-line diagnosis per file:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
#!/usr/bin/env bash
# triage-shots.sh [folder]
set -euo pipefail

DIR="${1:-./screenshots}"
MODEL="anthropic/claude-haiku-4-5"

shopt -s nullglob
files=("$DIR"/*.png "$DIR"/*.jpg)
[ ${#files[@]} -eq 0 ] && { echo "No images in $DIR" >&2; exit 0; }

for img in "${files[@]}"; do
  echo "=== $(basename "$img") ==="
  nito ask --model "$MODEL" --file "$img" --quiet \
    "In one sentence, what does this screenshot show and what is wrong, if anything?"
done
```

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
./triage-shots.sh ./failing-tests
```

## Variations

**Use a frontier vision model instead.** The examples above run at the Private level. If you want a frontier model on the image and the screenshot is not sensitive, `anthropic/claude-haiku-4-5` accepts images at the Anonymous level:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
nito ask --model anthropic/claude-haiku-4-5 --file ./mockup.png \
  "Describe this layout."
```

**Turn a diagram into notes.** Point it at an architecture diagram or a whiteboard photo:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
nito ask --model qwen/qwen3-vl-235b-a22b-instruct --file ./architecture.png \
  "List the components in this diagram and how data flows between them."
```

**Review a UI mockup.** Ask for an accessibility or UX critique:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["typescript","python","curl"]}}
nito ask --model qwen/qwen3-vl-235b-a22b-instruct --file ./mockup.png \
  "Give three accessibility issues in this design and how to fix each."
```

## Troubleshooting

| What you see                                                      | Why                                | Fix                                                           |
| :---------------------------------------------------------------- | :--------------------------------- | :------------------------------------------------------------ |
| "cannot accept image attachments; choose an vision-capable model" | The model does not do vision       | Pick a vision model (check `nito agent models`)               |
| An unsupported-format error                                       | The file is not PNG, JPEG, or WebP | Convert the image, or use a document flow for PDFs            |
| "file not found"                                                  | Wrong path                         | Use a path relative to where you launched the command         |
| The model misreads small text                                     | The screenshot is low resolution   | Crop to the relevant area and re-capture at higher resolution |

## Where to Go Next

<CardGroup cols={2}>
  <Card title="Image input" icon="image" href="/features/multimodal/image-input">
    How image attachments work and which models accept them.
  </Card>

  <Card title="Document Q&A Pipeline" icon="folder-tree" href="/cookbook/batch-document-qa">
    The document path, for PDFs and office files.
  </Card>

  <Card title="Choosing a Model" icon="list-check" href="/commands/choosing-a-model">
    Finding vision-capable models and their privacy levels.
  </Card>

  <Card title="Scripting and Automation" icon="terminal" href="/cli/scripting-and-automation">
    Output modes and looping for batch triage.
  </Card>
</CardGroup>
