Files
plane-agentd/config/schema.json
T
jj.wang dc8271a06a warpgate-ssh: remote Linux/macOS terminals through the relay; oregon launched remotely
The dispatcher moves to an LXC without agent CLIs (design 9), so every terminal is
reached through Warpgate. The relay call (agent-access.py run --target <t>) lives in
one helper; the target comes from the terminal config.

os linux/darwin (PosixWarpgateTransport): each primitive is one bash -c call. Files
go up as base64 (chunked above 60k), start_run stages prompt.md + run.sh and launches
in a single round trip; the runner is detached with setsid nohup (pid == pgid == sid,
$! kept in launch.pid); kill signals the process group and session (TERM, then KILL),
skipped once exit.txt exists. macOS detaches with perl POSIX::setsid.

os windows keeps the win10-ps.sh / win10-put.sh helper scripts (target win10) and
schtasks, now through the shared call() helper.

oregon is now warpgate-ssh (target oregon, run_root ~/.gwent-board/agentd-runs);
the local transport stays for co-located setups and tests.
2026-10-21 08:08:01 +00:00

148 lines
5.5 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "plane-agentd configuration",
"type": "object",
"required": ["plane", "terminals", "executors", "projects"],
"additionalProperties": false,
"properties": {
"plane": {
"type": "object",
"required": ["base_url", "workspace"],
"additionalProperties": false,
"properties": {
"base_url": {"type": "string"},
"workspace": {"type": "string"},
"timeout": {"type": "integer", "minimum": 1}
}
},
"vault": {
"type": "object",
"additionalProperties": false,
"properties": {
"client": {"type": "string"},
"config": {"type": "string"}
}
},
"agentd": {
"type": "object",
"additionalProperties": false,
"properties": {
"state_dir": {"type": "string"},
"helpers_dir": {"type": "string"},
"interval": {"type": "integer", "minimum": 10},
"max_rounds_per_thread": {"type": "integer", "minimum": 1},
"comment_max_chars": {"type": "integer", "minimum": 500},
"cli_terminal": {"type": "string"}
}
},
"terminals": {"type": "object", "minProperties": 1, "additionalProperties": {"$ref": "#/definitions/terminal"}},
"executors": {"type": "object", "minProperties": 1, "additionalProperties": {"$ref": "#/definitions/executor"}},
"projects": {"type": "object", "minProperties": 1, "additionalProperties": {"$ref": "#/definitions/project"}}
},
"definitions": {
"strings": {"type": "array", "items": {"type": "string"}},
"terminal": {
"type": "object",
"required": ["transport", "os", "launch", "repo", "plane_user", "token_key", "executors"],
"additionalProperties": false,
"properties": {
"transport": {"enum": ["local", "warpgate-ssh"]},
"target": {"type": "string"},
"os": {"enum": ["linux", "darwin", "windows"]},
"launch": {"enum": ["subprocess", "nohup", "schtasks"]},
"repo": {"type": "string"},
"plane_user": {"type": "string"},
"token_key": {"type": "string"},
"concurrency": {"type": "integer", "minimum": 0},
"capabilities": {"$ref": "#/definitions/strings"},
"executors": {"type": "array", "items": {"type": "string"}, "minItems": 1},
"bins": {"type": "object", "additionalProperties": {"type": "string"}},
"run_root": {"type": "string"},
"busy_processes": {"$ref": "#/definitions/strings"},
"helpers_dir": {"type": "string"}
}
},
"executor": {
"type": "object",
"required": ["run"],
"additionalProperties": false,
"properties": {
"adapter": {"enum": ["codex", "claude-code", "shell"]},
"run": {"type": "string"},
"resume": {"type": ["string", "boolean"]},
"thread_from": {"type": "string"},
"last_message": {"type": "string"},
"models": {"$ref": "#/definitions/strings"},
"default_effort": {"type": "string"},
"permission_mode": {"type": "string"},
"tier_arg": {"type": "string"},
"tier_defaults": {"type": "object", "additionalProperties": {"type": "string"}},
"script": {"type": "string"}
}
},
"route": {
"type": "object",
"additionalProperties": false,
"properties": {
"executor": {"type": "string"},
"model": {"type": "string"},
"effort": {"type": "string"},
"tier": {"type": "string"},
"serialize_group": {"type": "string"},
"script": {"type": "string"},
"timeout_hours": {"type": "number", "minimum": 0}
}
},
"project": {
"type": "object",
"required": ["id", "states", "reviewer", "routing"],
"additionalProperties": false,
"properties": {
"id": {"type": "string"},
"key_prefix": {"type": "string"},
"webhook_secret_key": {"type": "string"},
"states": {
"type": "object",
"required": ["todo", "running", "waiting", "review", "done"],
"additionalProperties": {"type": "string"}
},
"reviewer": {"type": "string"},
"answerer": {"type": "string"},
"protocol_file": {"type": "string"},
"intro": {"type": "string"},
"routing": {
"type": "object",
"required": ["by_assignee"],
"additionalProperties": false,
"properties": {
"by_assignee": {"type": "object", "minProperties": 1, "additionalProperties": {"type": "string"}},
"by_label": {"type": "object", "additionalProperties": {"$ref": "#/definitions/route"}},
"default_executor": {"type": "object", "additionalProperties": {"type": "string"}}
}
},
"retry": {
"type": "object",
"additionalProperties": false,
"properties": {
"transient_max": {"type": "integer", "minimum": 0},
"backoff_minutes": {"type": "array", "items": {"type": "number", "minimum": 0}, "minItems": 1},
"transient_patterns": {"$ref": "#/definitions/strings"},
"env_patterns": {"$ref": "#/definitions/strings"}
}
},
"timeout_hours": {"type": "number", "minimum": 0},
"max_rounds_per_thread": {"type": "integer", "minimum": 1},
"max_progress_rounds": {"type": "integer", "minimum": 1},
"notify": {
"type": "object",
"additionalProperties": false,
"properties": {
"ntfy_topic": {"type": "string"},
"on": {"$ref": "#/definitions/strings"}
}
}
}
}
}
}