Add system

AI provider (leave empty to inherit the defaults)

Global defaults

Every system inherits these unless it overrides them.

Connect to

Approve this agent on the target server. The code below expires shortly.

…

Open verification page ↗

Waiting for authorization…

Users

Everyone listed here has full access — there are no roles.

UsernameCreatedLast sign-in

Add user

Change admin password

Configuring a system

Leave any field empty on a system to inherit it from Defaults.

Two ways to reach a model

ai_provider set The API is called directly. Tools are passed as native JSON function calls, and tokens and cost are tracked per message.
ai_provider empty ai_command is run instead: the prompt goes in on stdin, the reply is read from stdout. Your backend's tools are pasted into the prompt as curl recipes rather than function calls, and there is no cost tracking.

API providers

ProviderModelAPI key field
deepseek deepseek-chat DeepSeek API key
openai gpt-4o OpenAI API key
gemini gemini-2.5-flash Google AI Studio key
openrouter google/gemini-2.5-flash OpenRouter key
ollama llama3 Base URL, not a key — defaults to http://localhost:11434

Ollama is the odd one out: it needs no key, so the API key field doubles as its base URL. Its model is required; the others fall back to a default when left empty.

DeepSeek models

ModelUse forCost / M tokens
deepseek-chat The V3 general chat model. The default when no model is set, and the right choice for normal agent traffic. $0.27 in · $1.10 out
deepseek-reasoner R1, the reasoning model. Slower and dearer; worth it only when a task needs real deliberation. $0.55 in · $2.19 out

Rates are the cache-miss standard prices the cost tracker bills against. Any unrecognised model name is charged at deepseek-chat rates.

Using Claude Code (claude -p)

Leave Provider empty and set AI command to:

claude -p --allowedTools "Bash(curl:*)"

The allowlist is not optional. With a bare claude -p, every curl call is stopped by the permission prompt that non-interactive runs can never answer. The agent still replies — it just reports that it could not reach your backend, which looks like a broken endpoint rather than a missing flag.

Choose the model in the command, not in the Model field — ai_model is ignored in command mode:

claude -p --model opus --allowedTools "Bash(curl:*)"

--dangerously-skip-permissions also works and needs no allowlist, but it permits every tool, including file writes and arbitrary shell. Agent prompts carry text written by whoever is on the other end of the chat, so prefer the narrow allowlist above.

Command mode details