Configuration

Config file

Location: ~/.config/agent-doc/config.toml

default_agent = "claude"
tmux_bin = "/opt/tmux/bin/tmux"

[agents.claude]
command = "claude"
args = ["-p", "--output-format", "json"]
result_path = ".result"
session_path = ".session_id"

[agents.codex]
command = "codex"
args = ["--prompt"]
result_path = ".output"
session_path = ".id"

[agents.opencode]
command = "opencode"
args = ["run"]

[terminal]
host = "auto"
auto_start_tmux = true
# command = "wezterm start -- {tmux_command}"
# attach_command = "tmux attach-session -t {session}"

Fields

FieldDescription
default_agentAgent backend used when not specified elsewhere
tmux_binMachine-wide tmux client; project tmux_bin overrides it
[agents.NAME]Agent backend configuration
commandExecutable name or path
argsArguments passed before the prompt
result_pathJSON path to extract the response text
session_pathJSON path to extract the session ID
[terminal].hostTerminal presentation host: auto, ide, external, or none
[terminal].commandExternal-terminal command template; supports {tmux_command}
[terminal].auto_start_tmuxAllow creation of a missing tmux session (default true)
[terminal].attach_commandIDE attach template; supports {session} and {tmux_command}

Resolution order

The agent backend is resolved in this order:

  1. --agent CLI flag
  2. agent: field in document frontmatter
  3. default_agent in config
  4. Fallback: "claude"

Per-document overrides

Set agent and model in the document's YAML frontmatter:

---
session: null
agent: opencode
opencode_model: zai/glm-5
---

These override the config file for that specific document.

terminal_host: auto|ide|external|none may also be set in document frontmatter. Its precedence is document, project, global, then auto. The other terminal fields use project then global precedence. Terminal configuration does not contain a session name: use project tmux_session / agent-doc session set. The tmux executable uses project tmux_bin, then global tmux_bin, then PATH; agent-doc env --json reports the selected binary and its source. See the Coder workspace terminal runbook for remote IDE setup and headless failure behavior.

To dogfood Agent Doc itself, opt a document into actionable failure prompts:

---
agent_doc_dogfood: true
---

When an Agent Doc command for that document fails to reach a successful terminal boundary, the error includes a stable ACTIONABLE_AGENT_DOC_FIX_PROMPT issue key and asks the active agent to fix the underlying product defect. agent_doc_dogfood: false disables legacy path-inferred dogfood behavior.

To opt a document into retained-write-owned terminal convergence:

---
agent_doc_per_component_convergence: true
---

The same experiment can be enabled project-wide in .agent-doc/config.toml with agent_doc_per_component_convergence = true. It is off by default. When enabled, an operator edit in an unowned component such as agent:queue does not block an agent response that owns only agent:exchange. Invalid or legacy ownership evidence falls back to whole-document equality.

Environment Variables

Runtime Tuning

VariableDefaultDescription
AGENT_DOC_LOGStructured log filter (e.g. debug, agent_doc::preflight=debug)
AGENT_DOC_RUN_AGENT_TIMEOUT_SECS1800Max agent run time before timeout (30 min)
AGENT_DOC_RUN_HEARTBEAT_SECS30Run heartbeat interval
AGENT_DOC_QUEUE_MAX_ITERATIONS_HARD_CAP50Hard cap on auto-loop queue iterations
AGENT_DOC_TSIFT_BINOverride tsift binary path
AGENT_DOC_TSIFT_GRAPH_TIMEOUT_SECSTsift graph query timeout

Harness Detection

These are read by detect_harness() to identify the active agent harness:

VariableHarness
CLAUDE_CODE_SESSION / CLAUDE_CODE / CLAUDECODEClaude Code
CODEX_SESSION / CODEX_THREAD_ID / CODEX_CLI / CODEXCodex
OPENCODE_CLIENT / OPENCODEOpenCode

Harness Arg Overrides

VariableDescription
AGENT_DOC_CLAUDE_ARGSClaude CLI args (lowest precedence, below frontmatter + config)

Vision

VariableDescription
AGENT_DOC_VISION_PROVIDERVision provider override (e.g. openai)
AGENT_DOC_VISION_API_KEYVision API key
AGENT_DOC_VISION_MODELVision model override
AGENT_DOC_VISION_ENDPOINTVision endpoint override

Testing / Debug

VariableDescription
AGENT_DOC_NO_AUTOSTARTPrevent auto-start of new agent panes
AGENT_DOC_ROUTE_BINOverride agent-doc binary for route dispatch
AGENT_DOC_DEBUG_FILTERDebug filter for supervisor start
AGENT_DOC_DEBUG_STDINDebug stdin for supervisor start
AGENT_DOC_ALLOW_REPLACE_PENDINGAllow replacing pending items
AGENT_DOC_HARNESS_PROMPTOverride harness prompt detection

Probe Markers

Set by child processes to confirm capability proofs:

VariableDescription
AGENT_DOC_NETWORK_PROBE_OKCodex child network probe success
AGENT_DOC_WRITABLE_ROOT_PROBE_OKCodex child writable root probe
AGENT_DOC_OPENCODE_SSH_PROBE_OKOpenCode child SSH probe

Project Config

Location: .agent-doc/config.toml (relative to project root).

FieldDescription
tmux_sessionTmux session name bound to this project
[terminal]Project terminal policy; the same fields as global [terminal] except session naming remains top-level tmux_session
agent_doc_auto_compactLine threshold for automatic compaction opt-in
agent_doc_supervisor_stderr_logSupervisor stderr log path. Relative paths resolve from the project root; absolute paths are used as written. Defaults to .agent-doc/logs/supervisor-stderr.log
documents.includeProject-relative globs for session document opt-in
documents.auto_session_for_all_mdLegacy escape hatch (default false)

SSH Config

[ssh.profiles.production]
targets = ["host1", "host2"]

[ssh.docs."ops/deploy.md"]
profile = "production"

Component Config

Inline component attributes override defaults:

<!-- agent:exchange patch=append max_lines=50 -->