# stdio

Source: https://zshot-cli.com/reference/llm_connections/stdio/
Markdown: https://zshot-cli.com/reference/llm_connections/stdio/index.md
Section: [Reference](https://zshot-cli.com/reference/) › [LLM Connections](https://zshot-cli.com/reference/llm_connections/)
Protocol: [`stdio://`](https://zshot-cli.com/reference/llm_connections/) · Default model: None
Key env: None · [Roles](https://zshot-cli.com/reference/llm_connections/roles/): [Formats](https://zshot-cli.com/reference/llm_connections/roles/#formats) · [Navigates](https://zshot-cli.com/reference/llm_connections/roles/#navigates) · [Writes](https://zshot-cli.com/reference/llm_connections/roles/#writes)
License: [Pro](https://zshot-cli.com/support/licenses/pro)

Hands the navigator's decisions, or a formatter's output, to an external agent, a program or a person at a terminal, in place of a model. Each turn ZShot writes a plain-text frame and reads back the agent's reply.

| Endpoint | Channel |
| --- | --- |
| `stdio` | Replies on stdin, prompts on stdout |
| `stdio://3` | One bidirectional file descriptor, such as a `socketpair` the parent passes in |
| `stdio://?rfd=3&wfd=4` | Separate inherited read and write descriptors |
| `stdio://?read=/in.fifo&write=/out.fifo` | Named pipes. A plain file gives the reader EOF instead of blocking for the reply |

## Frames

ZShot writes the rendered prompt, then any screenshot as an `<img src="file://…">` line pointing at a per-session temp file, then a `<<END>>` line. The first frame carries a short protocol preamble. The temp directory is removed when the session ends.

The endpoint's `?vision=` sets when frames carry a screenshot. The agent replies `VISION` to see the page, and every later frame on that page carries one.

## Replies

The agent replies in the navigator action language, ending with a `<<END>>` line or a blank line:

`CLICK @e7`, `FILL @e7: text`, `SELECT @e7: Blue`, `PRESS_KEY Escape`, `NOTE the total is $42.10`, `SCROLL DOWN 600 @e12`, `SCROLL TO @e7`, `POINTER_DOWN @e5`, `POINTER_MOVE @e7 TOP`, `POINTER_MOVE 640:412`, `POINTER_UP`, `WAIT 5`, `READ`, `VISION`, `NAVIGATE_TO_TAB 1`, `ACCEPT`, `DISMISS`, `ESCALATE opus`, `DONE`, `IMPOSSIBLE`, `RESTART`

An action that names its ref, and its value or options, takes one frame; one that leaves them out gets a follow-up frame asking for them. A fill value stays on one line; write a line break as `\n`.

## Limits

- Rejected in server mode. In MCP server mode it must use an inherited descriptor rather than fd 0 or 1.
- Bare `stdio` writes to stdout, so it cannot be combined with `-f -`.
- Exactly one URL.
- A navigator and formatter both on `stdio` share one channel, one atomic exchange at a time.

## Options

| Option | On stdio |
| --- | --- |
| `fd`, `rfd`, `wfd`, `read`, `write` | The channel, as the endpoint table gives it |
| [`vision`](/reference/llm_connections/options#vision-and-frames) | `stall:3` unless set |
| [`timeout`](/reference/llm_connections/options#timeout) | 60 seconds unless set; `0` waits without limit |
| `frames` | As [listed](/reference/llm_connections/options) |
| [Navigator options](/reference/llm_connections/options#navigator-options) | Every one |

## Example

**CLI**

```sh
zshot --navigate "Open the formats page" \
  --navigator-type "stdio" \
  -f shot.png https://zshot-cli.com/
```

## Related

Flags:

- [`--navigator-type`](https://zshot-cli.com/reference/flags/navigator/navigator-type/)
- [`--llm-format-model`](https://zshot-cli.com/reference/flags/document/llm-format-model/)

Topics:

- [Actions](https://zshot-cli.com/reference/navigator/actions/)
- [Connection String Options](https://zshot-cli.com/reference/llm_connections/options/)

## Navigation

- [Examples](https://zshot-cli.com/examples/)
- [Download](https://zshot-cli.com/download/)
- [Purchase](https://zshot-cli.com/purchase/)
- [Reference](https://zshot-cli.com/reference/)
  - [Formats](https://zshot-cli.com/reference/formats/)
  - [Flags](https://zshot-cli.com/reference/flags/)
  - [Agents](https://zshot-cli.com/reference/agents/)
  - [Configuration](https://zshot-cli.com/reference/configuration/)
  - [Crawling](https://zshot-cli.com/reference/crawling/)
  - [Docker](https://zshot-cli.com/reference/docker/)
  - [Exit Codes](https://zshot-cli.com/reference/exit_codes/)
  - [Linux](https://zshot-cli.com/reference/linux/)
  - [LLM Connections](https://zshot-cli.com/reference/llm_connections/)
    - [Connection String Options](https://zshot-cli.com/reference/llm_connections/options/)
    - [Roles](https://zshot-cli.com/reference/llm_connections/roles/)
    - [Anthropic](https://zshot-cli.com/reference/llm_connections/anthropic/)
    - [OpenAI](https://zshot-cli.com/reference/llm_connections/openai/)
    - [Google](https://zshot-cli.com/reference/llm_connections/google/)
    - [Ollama](https://zshot-cli.com/reference/llm_connections/ollama/)
    - [Mistral](https://zshot-cli.com/reference/llm_connections/mistral/)
    - [DeepSeek](https://zshot-cli.com/reference/llm_connections/deepseek/)
    - [Mercury](https://zshot-cli.com/reference/llm_connections/mercury/)
    - [Groq](https://zshot-cli.com/reference/llm_connections/groq/)
    - [HuggingFace](https://zshot-cli.com/reference/llm_connections/huggingface/)
    - [TypeSafe](https://zshot-cli.com/reference/llm_connections/typesafe/)
    - [Cloudflare](https://zshot-cli.com/reference/llm_connections/cloudflare/)
    - [OpenRouter](https://zshot-cli.com/reference/llm_connections/openrouter/)
    - **stdio**
  - [LLM Formatting](https://zshot-cli.com/reference/llm_formatting/)
  - [Local Inputs](https://zshot-cli.com/reference/inputs/)
  - [Navigator](https://zshot-cli.com/reference/navigator/)
  - [Security](https://zshot-cli.com/reference/security/)
  - [Server](https://zshot-cli.com/reference/server/)
  - [Shell completions](https://zshot-cli.com/reference/shell_completions/)
  - [Storage](https://zshot-cli.com/reference/storage/)
  - [Timeouts](https://zshot-cli.com/reference/timeouts/)
  - [Web Bot Auth](https://zshot-cli.com/reference/web_bot_auth/)
- [Support](https://zshot-cli.com/support/)
- [Changelog](https://zshot-cli.com/changelog/)

Site index: https://zshot-cli.com/llms.txt

