# plane-agentd example configuration (design.md ยง5). Values that are secrets are *Vault key names* only; # agentd reads the token from the environment variable of the same name, injected by # agent-access.py exec --secret-env PLANE_WINDOW10_API_TOKEN=PLANE_WINDOW10_API_TOKEN ... # Copy to config/agentd.local.yaml (git-ignored) or point AGENTD_CONFIG at your file. plane: {base_url: https://plane.kappiee.com, workspace: kappiee} vault: {client: ~/.local/share/server-access-client/agent-access.py, config: https://nas.tail9531b.ts.net:8443/identity/agent.json} agentd: state_dir: state # relative to the repo root; JSON state, logs, heartbeat, local run dirs helpers_dir: /home/ubuntu/Documents/wjj/project/gwent-design/tools # win10-ps.sh / win10-put.sh interval: 120 # seconds between ticks in --loop mode max_rounds_per_thread: 8 # rebuild the executor thread (with a handoff summary) after this many rounds comment_max_chars: 6000 cli_terminal: oregon # identity used by `agentd new/comment/state/assign` terminals: win10: transport: warpgate-ssh target: win10 os: windows launch: schtasks repo: 'C:\Users\Administrator\Documents\GwentAssistantProject\gwent' run_root: 'C:\Users\Administrator\Documents\GwentAssistantProject\gwent\runtime\agentd' bins: {codex: 'C:\Users\Administrator\AppData\Local\Programs\OpenAI\Codex\bin\codex.exe'} plane_user: window10 token_key: PLANE_WINDOW10_API_TOKEN concurrency: 1 busy_processes: [codex] # do not start while a codex.exe we did not start is running capabilities: [android, game] executors: [codex] oregon: transport: local os: linux launch: subprocess repo: /home/ubuntu/Documents/wjj/project/gwent plane_user: oregon token_key: PLANE_OREGON_API_TOKEN concurrency: 2 bins: {claude: /home/ubuntu/.local/bin/claude} # cron has a minimal PATH executors: [claude-code, codex, shell] executors: codex: adapter: codex run: "codex exec --json -C '{repo}' -s workspace-write -m {model} -c 'model_reasoning_effort=\"{effort}\"' {tier} -o '{out}' -" resume: "codex exec resume {thread} --json -m {model} -c 'model_reasoning_effort=\"{effort}\"' {tier} -o '{out}' -" tier_arg: "-c 'service_tier=\"{tier}\"'" thread_from: events.jsonl:thread.started.thread_id last_message: '{out}' models: [gpt-6.1-sol, gpt-6-astra] default_effort: medium claude-code: adapter: claude-code run: "claude -p --model {model} --output-format json --permission-mode {perm}" resume: "claude -p --resume {thread} --model {model} --output-format json --permission-mode {perm}" permission_mode: acceptEdits thread_from: json:session_id last_message: json:result models: [sonnet, opus, haiku] shell: adapter: shell run: '{script}' resume: false projects: GWENT: id: 79cb5a60-aa4f-4138-9864-1dd70426e665 key_prefix: GW webhook_secret_key: PLANE_WEBHOOK_GWENT states: {backlog: Backlog, todo: Todo, running: In Progress, waiting: Waiting, review: Review, done: Done} reviewer: oregon # Plane user that gets [review] items answerer: oregon # Plane user that gets [question]/[blocked] and failures (default: reviewer) protocol_file: /home/ubuntu/Documents/wjj/project/gwent/design/board-protocol.md routing: by_assignee: {window10: win10, oregon: oregon} by_label: 'model:astra': {model: gpt-6-astra, effort: high} 'model:sol': {model: gpt-6.1-sol, tier: fast} 'model:opus': {model: opus} 'exec:claude': {executor: claude-code} 'needs-game': {serialize_group: game} default_executor: {win10: codex, oregon: claude-code} retry: transient_max: 3 backoff_minutes: [2, 5, 10] # transient_patterns / env_patterns default to the built-in lists in agentd/core.py timeout_hours: 4 max_rounds_per_thread: 8 max_progress_rounds: 12 # after this many consecutive [progress] rounds: note + Waiting (answerer) notify: {ntfy_topic: gwent, 'on': [waiting, review, failed]} # phase 3, not used yet; 'on' must be quoted (YAML 1.1 boolean)