ollie/data/agents/README.md

4.8 KiB

Agents

Each .json file defines an agent configuration. Agent configs are installed to ~/.config/ollie/agents/ and selected at runtime via /agent <name>.

Config format

{
  "prompt": ["$XDG_CONFIG_HOME/ollie/prompts/agent-coding.md"],
  "userPrompts": ["$XDG_CONFIG_HOME/ollie/prompts/rules.md"],
  "tools": ["shell", "file_read", "file_edit", "file_glob", "file_grep"],
  "temperature": 0.5,
  "maxTokens": 16384,
  "reasoningEffort": "medium",
  "backend": "openrouter",
  "model": "deepseek/deepseek-v4-flash",
  "systemPrompt": "/path/to/override.md",
  "compactionModel": "cheap-model-name"
}
Field Purpose
prompt File paths to concatenate as the agent prompt (system preamble). Env vars expanded.
userPrompts File paths to concatenate as active global rules. Prepended to every user message at turn start. Env vars expanded.
tools Tools loaded at session start. Add more at runtime with the /tool_load ctl command.
temperature Sampling temperature.
maxTokens Max output tokens per response.
reasoningEffort How hard a reasoning-capable model thinks: low, medium, or high. See below.
thinkingBudget Advanced: explicit thinking-token budget. Overrides reasoningEffort. See below.
backend Override backend for this agent.
model Override model for this agent.
systemPrompt Override the embedded system prompt with a file path.
compactionModel Use a cheaper model for context compaction.

Reasoning effort

reasoningEffort is the primary, human-facing control for how much a reasoning-capable model deliberates before answering. It takes one of three levels — set it and forget it; you do not need to reason about token counts.

Level Use for Thinking budget
low Quick lookups, inline assistance, read-only monitoring 4096 tokens
medium General coding, exploration, writing 8192 tokens
high Planning, orchestration, security/code review 16384 tokens

How each backend applies it:

  • OpenAI, OpenRouter, Copilot, Gemini — sent as the discrete reasoning_effort level (low/medium/high).
  • Kiro — enables summarized adaptive thinking and maps the level to its output_config.effort.
  • Anthropic — has no discrete level, so the level is translated to the thinking-token budget in the table above (extended thinking). Because thinking tokens are drawn from the output budget, the runtime automatically grows maxTokens above the thinking budget and forces temperature to 1 (both are Anthropic requirements when thinking is enabled).

An invalid reasoningEffort (anything other than low/medium/high) is a config error and the agent will fail to load, rather than silently doing nothing.

thinkingBudget (advanced override)

thinkingBudget sets an explicit thinking-token budget and takes precedence over reasoningEffort. Use it only when you need a specific budget that the three levels don't provide; most agents should use reasoningEffort instead. It only affects backends that accept a numeric budget (Anthropic).

Agents

Name Role
default Base coding agent. Also the base for JIT subagents.
driver Full-featured agent with all tools, LSP, GUI, memory, subagents.
copilot Read-only code copilot. Suggests changes as code fences.
navigator Pair programming partner. Reads and advises, doesn't edit.
explorer Code exploration and explanation. Read-only.
librarian Document search and knowledge curation. Read-only.
taskmanager TODO list management and planning.
theo Security auditor (Theo de Raadt voice). Read-only.

System prompt assembly

The final system prompt sent to the model is assembled in sections:

  1. system — embedded base prompt (prompts/system_prompt.md)
  2. env — runtime environment (cwd, platform, date, git status)
  3. agent — concatenated files from the prompt array
  4. tools — auto-generated from loaded tools (name + .meta prompt)

The fully assembled prompt is readable at session/{sname}/agent/{aname}/systemprompt.

User prompts (active global rules)

Files listed in userPrompts are resolved the same way as prompt (file paths with env var expansion), but instead of being injected into the system preamble, they are prepended to every user message at turn start. This lets you define persistent "global rules" that appear alongside each user request without bloating the system prompt.

Adding a new agent

  1. Copy default.json, rename it.
  2. Adjust the prompt array to reference your prompt files in data/prompts/.
  3. Set tools to the tools this agent needs.
  4. Set generation parameters as needed.
  5. Run make install-data to install.