Skip to main content
Stdio is how most assistants reach Pomeroy, and it is the one Pomeroy’s Connections pane calls Direct. It is always on and has no setting, because there is nothing about it to configure: the filesystem has already decided who may speak to it.

The command

Most assistants take a command to run. This is that command, and it takes no arguments:
Because it lives inside the app bundle, Pomeroy can update itself without any assistant’s configuration changing. Move Pomeroy out of /Applications and the path moves with it, and Pomeroy’s own panel always shows the right one for your Mac. The commonest shape an assistant wants it in:
Your assistant’s own page has the exact spelling it takes. The key is servers in VS Code, context_servers in Zed, and a TOML table in Codex. Find yours.

The Claude Desktop extension

Claude Desktop gets a .mcpb bundle instead, which Pomeroy opens for you; Claude Desktop then shows its own install prompt. Nothing is written to Claude’s configuration file. Inside the bundle is a small Node script that does not speak MCP. It connects to Pomeroy’s socket, launches the app if it is not running, and copies bytes. That is why it never needs updating. Pomeroy can add tools, change every answer, and the extension carries on copying bytes.

What is actually happening

Both stdio doors are byte pipes onto one Unix domain socket in your home folder:
The socket is mode 0600, so it is readable and writable only by processes running as you, on this Mac. Nothing else guards it, which is why there is no key to manage and nothing to leak.
A stdio session loads no AppKit, no Sparkle and no analytics library. It is a pipe and nothing else. Neither bridge parses JSON-RPC, and neither knows what a tool is.
The architecture in full.

Why there is no prompt

An assistant that comes through stdio is never asked to identify itself, and Pomeroy never asks you to approve it. It can only reach Pomeroy through a file your own macOS account owns, so anything that got there was already running on your Mac as you, so a prompt would be asking you to approve yourself. Setting an assistant up is the consent: it was you choosing that assistant.

When stdio is not enough

Stdio needs the assistant to be able to start a program inside your user session. Three cases cannot:
  • An assistant running in a container or a virtual machine
  • A CI runner, or a script on another schedule
  • A client that takes a URL and nothing else
Those want the local HTTP endpoint, which is off until you switch it on.

If it does not connect

It could not run the command. Check the path matches where Pomeroy actually lives, and copy it from Pomeroy’s own panel rather than typing it.
Most assistants read their server list at launch. Quit it fully and open it again; Claude Code, Gemini CLI and goose want a new session instead. More
It does not need to be. The pipe launches it. If it will not start at all, open it from Applications and see what it says.