# fleet.toml — the project-orchestrator's fleet registry. # # THE authoritative, PO-only record of every project the fleet manages. This is the ONLY place where # project ↔ harness ↔ ref ↔ location lives. Projects themselves carry none of this (one-directional # knowledge: PO → projects, never the reverse). Full schema + field reference: docs/fleet-registry.md # # Validate / inspect this file with: python3 scripts/fleet.py list (or `status`). # ─────────────────────────── registry metadata (optional) ─────────────────────────── [fleet] version = 1 # registry schema version (integer; bump on breaking changes) # ─────────────────────────── one [[project]] block per project ─────────────────────────── # Required fields: name, location, harness, ref, enabled, secrets. # See docs/fleet-registry.md for the meaning and allowed values of each. # Sample entry (a representative project; not started by the PO unless an operator asks). [[project]] name = "example-recipe-ci" # unique fleet id (kebab-case) location = "https://git.autonomic.zone/recipe-maintainers/example-recipe-ci.git" # git url or local path harness = "agent-orchestrator" # which harness runs it ref = "v0.1.0" # pinned harness ref (submodule pin) enabled = true # is this project part of the active fleet? secrets = ".env" # where the project's creds live (path/ref; never in git) config = "agents.toml" # the project's harness config file (relative to the project root) notes = "Sample fleet entry — replace with a real project, or remove." # cc-ci modeled as a project (poe2e staging). enabled=false: the PO must NOT start it — the live # cc-ci still runs under /srv/cc-ci/cc-ci-plan/agents.py in the cc-ci- tmux namespace. Taking it # live on the new system is an operator-supervised cutover (see the project's docs/cutover-runbook.md). [[project]] name = "cc-ci" location = "/home/loops/poe2e/cc-ci" # local staging repo (git, engine submodule pinned) harness = "agent-orchestrator" ref = "v0.1.0" enabled = false # STAGING — never started by the PO (would collide with live) secrets = "/srv/cc-ci/.testenv" # live cc-ci creds (Gitea bot, etc.); never in git config = "agents.toml" notes = "cc-ci as project #1 (staging). Migrated from live cc-ci-plan/agents.toml. Parity verified in poe2e. Cutover is operator-supervised." # ARCHIVED (2026-08-01) — no longer active. This was the Phase-1 bootstrap SHELL; its repo was # consolidated into the real lichen-orchestrator project in the 2026-07-10 cutover, and the leftover # shell was moved to /srv/archive/p-lichen-orchestrator-shell (its agents.toml is now a symlink into # the real project). The real project lives at /srv/lichen-orchestrator and runs live under the # lichen-* tmux sessions — those are NOT this entry; the PO must not start this or touch those sessions. [[project]] name = "p-lichen-orchestrator" location = "/srv/archive/p-lichen-orchestrator-shell" # archived shell (repo consolidated into /srv/lichen-orchestrator) harness = "agent-orchestrator" ref = "98d198baa9a89c8a5955b8af55c0a64fca9436e5" # engine pin at time of archival enabled = false # ARCHIVED — not part of the active fleet; PO must never start it secrets = ".env" config = "agents.toml" notes = "ARCHIVED 2026-08-01 — no longer active. Superseded by the real lichen-orchestrator project (/srv/lichen-orchestrator, live under the lichen-* tmux sessions). Was the Phase-1 bootstrap shell (Python reimpl of lichen.page); consolidated into the real project in the 2026-07-10 cutover, shell moved to /srv/archive/p-lichen-orchestrator-shell. Kept as a historical record." # The real, active lichen-orchestrator project (supersedes the archived p-lichen-orchestrator above). # Runs live under the lichen-* tmux sessions. Engine URL: Tangled (notplants-bot/agent-orchestrator). [[project]] name = "lichen-orchestrator" location = "/srv/lichen-orchestrator" harness = "agent-orchestrator" ref = "26d93c1eda36dd68d1f59e5bec5e4cea9bc0d761" # running engine (v0.1.0-33-g26d93c1); NOTE: ahead of the superproject's committed submodule pin 5a993aa — bump the submodule commit to reconcile enabled = true # RUNNING — live under the lichen-* tmux sessions secrets = ".env" config = "agents.toml" notes = "Reimplement lichen.page in Python — the real project (succeeded the p-lichen-orchestrator bootstrap after the 2026-07-10 cutover). Live under lichen-* tmux sessions (lichen-orchestrator, lichen-watchdog, lichen-feature-completeness, lichen-cleanlogs, lichen-disk-reclaim). Engine submodule drift: working tree at 26d93c1, committed pin at 5a993aa." # Operator's atproto workspace. One remote-control agent (`analyst`) the operator drives directly. [[project]] name = "notplants-atproto" location = "/srv/project-orchestrator/projects/notplants-atproto" harness = "agent-orchestrator" ref = "26d93c1eda36dd68d1f59e5bec5e4cea9bc0d761" # latest engine (v0.1.0-33-g26d93c1) at creation enabled = true # RUNNING — operator-driven via Remote Control secrets = ".env" # atproto creds; gitignored, not yet populated config = "agents.toml" notes = "Created 2026-08-01. Analysis of the operator's atproto data, and possibly custom feeds; the operator sets direction interactively. Single persistent agent 'analyst' (claude-opus-4-8, watch=heal, resume=true) exposed over Claude Code Remote Control as session notplants-atproto-analyst. Scope is deliberately open — the operator drives."