Field guide/Reference

Settings

Every Deskfish setting, its default, and what it changes.

Open Settings and search for Deskfish, or click the model chip in the sidebar. All settings live under the deskfish prefix.

Model#

SettingDefaultWhat it does
deskfish.provideropenai-compatibleWhich adapter drives the desktop: anthropic, openai-compatible, or mock
deskfish.autonomyfreefree: the tank is the boundary, the agent may use any account or saved login in it and completes what you ask. guided: it asks before anything irreversible and never uses credentials you did not give it
deskfish.modelclaude-opus-5The model name exactly as the provider expects it (claude-opus-5, grok-4, llama3.2-vision, …)
deskfish.baseUrl(empty)Endpoint for OpenAI-compatible providers, the part before /chat/completions. Leave empty for Anthropic unless you use a gateway
deskfish.anthropicWorkspaceId(empty)Anthropic workspace ID (wrkspc_…). Needed only when your Anthropic key is identity-linked; see Models and providers

The API key is not a setting; it is stored in the keychain through Deskfish: Set LLM API Key.

Behavior#

SettingDefaultWhat it does
deskfish.maxSteps0Cap on model turns per task. 0 = no cap: the agent works until it is done or you press Stop. A number stops the task there with a summary; "continue" resumes
deskfish.maxCostUsd0Cost budget per task in dollars: at list prices for Claude used directly, or the cost OpenRouter reports. 0 = none. At 80% the agent is told to wrap up; at the budget it summarizes and stops; "continue" resumes
deskfish.promptCachingautoCache breakpoints on OpenAI-compatible endpoints: auto adds them for openrouter.ai only, on for any gateway that passes them through (LiteLLM), off never. The Anthropic provider always caches. See Models and providers
deskfish.reflectEvery5After how many finished tasks the agent reflects (alone with its journal and notes: saves facts, may revise its self file). 0 = only when you run Deskfish: Let Her Reflect. See Memory
deskfish.scheduleGraceMinutes5A scheduled task still starts this many minutes after its due time when Deskfish was only just opened; later it is reported as missed and skipped. A task due while the agent was busy always runs once she is free. See Schedules
deskfish.screenshotWidth1280Screenshots are scaled to this width before going to the model; coordinates are mapped back automatically. Smaller is cheaper, larger is sharper
deskfish.settleMs800Milliseconds to wait after a batch of actions before the next screenshot, so pages can react

The tank#

SettingDefaultWhat it does
deskfish.desktop.autoStarttrueTurn the tank on when the Deskfish view opens. Running a task turns it on regardless
deskfish.desktop.openOnRuntrueOpen the Desktop tab whenever you send a task, so the live view is in front of you. The chat keeps keyboard focus
deskfish.desktop.screen1280x800x24The virtual screen: width × height × color depth. Applied the next time the tank starts
deskfish.desktop.containerCliautoWhich container engine to use: podman, docker, or auto (Podman if installed and Docker is not, otherwise Docker)
deskfish.desktop.daemonUrlhttp://localhost:9990Where the tank's control API is. Change only for a tank on another machine
deskfish.desktop.vncUrlws://localhost:9990/websockifyWhere the live view connects. Change only for a tank on another machine
deskfish.desktop.token(empty)Bearer token for the control API and the live view, if the tank was started with one. Empty means no authentication, which is fine when the port is bound to 127.0.0.1
deskfish.desktop.vncPassword(empty)Password for the live view, if the tank was started with one
deskfish.desktop.composeFile(empty)For people who start the tank with a compose file instead of the power button. The power button does not use it

The remote-tank settings are explained in Advanced setups.

Deskfish v0.1.0 · Apache 2.0Back to the little fish