Mirror of Neotoma plan ent_99ace4dd6673aa36ed08b1fe, field phases_markdown. Do not edit this file directly — correct the plan field in Neotoma, then regenerate with python3 execution/scripts/render_plan_docs.py (use --check to verify disk matches Neotoma).
Tracks the Ateles implementation roadmap across ten phases from initial scaffolding (Phase 0) to full swarm operational status (Phase 9). Serves as the public mirror of the Neotoma plan entity.
Covers Phase 0–9 goals and task checklists. Each phase has a defined goal and a list of deliverables. Deferred items (not scheduled to any phase) are listed at the end. For agent details see taxonomy.md; for design rationale see architecture.md.
Goal: Public repo exists, taxonomy documented, env vars renamed, daemon code clean.
- Create
markmhendrickson/atelespublic repo - Write
docs/taxonomy.mdcanonical agent table - Write
docs/architecture.mdsystem design - Refactor Monedula handlers:
therapy.py+yoga.py→ genericWiseTransferHandler+BtcTransferHandler+PaymentProfile(env-var driven, no PII in public code) - Rename
TELEGRAM_TOPIC_PAYMENTS→TELEGRAM_TOPIC_MONEDULA(legacy alias kept) - Create
markmhendrickson/ateles-privateprivate repo - Write
.env.examplewith all required env var names (no values) - Rename Strix daemon (mic recorder) in codebase
Goal: Neotoma has agent_definition entity type; first AAuth identities minted; lib/notify/ and lib/daemon_runtime/ scaffolded.
- Neotoma: register
agent_definitionentity type withprompt_markdown,allowed_tools,agent_grant,override_policyfields - Neotoma PR:
src/services/override_validation.ts— enforceoverride_policyat write time (PR #398) - Create
agent_definitionentities for Ateles, Monedula, neotoma-agent, Formica, Menura in Neotoma - Mint AAuth keypairs for Ateles, Monedula, Formica, neotoma-agent (stored in ateles-private/keys/)
-
lib/notify/— Apprise wrapper + priority_rubric loader (notifier.py ~130 LOC) -
lib/daemon_runtime/— SSE subscription + agent_definition loader + AAuth signer (3 modules ~250 LOC) - Create
priority_rubricentity in Neotoma (ent_29ca079940c1e996a8c782f2) - neotoma-agent daemon: Python, neotoma-repo automation skeleton
Goal: Neotoma → git mirror pipeline live; Ateles config migrated to Neotoma.
- Apus daemon: HTTPS webhook receiver (~200 LOC)
- Neotoma webhook subscription registered (subscription ID
7ce524e4, entityent_6ba1914462908f682f206b56) - Apus env vars wired into installed plist (
~/Library/LaunchAgents/com.ateles.apus.plist) - Migrate Ateles SOUL.md →
prompt_markdownfield inagent_definitionentity - Neotoma CLI mirror profile configured for SKILL.md generation
- Cloudflare Tunnel at
apus.markmhendrickson.com(was ateles#17) - Apus: handle all four mirror profiles; commit via
ateles-agentGitHub identity; log delivery status to Neotoma (blocked onateles-agentmachine account) - OpenClaw PR:
workspace-neotoma.tswith file→API fallback chain (branch pushed; PR pending) - Anthus daemon: swarm coordinator — SSE-driven workflow dispatch (Tier 2–5 smoke test validation in flight, see swarm_smoke_test_plan.md)
- Tyto daemon: screenshot watcher + meeting-recording transcription, running under launchd
Goal: Menura live at markmhendrickson.com/agent/; all Phase 1 daemons using lib/daemon_runtime/.
- Formica: Python rewrite using lib/daemon_runtime/ (core rewrite done — ateles#1 tracks final production wire-up)
-
agent_definition_overrideentity type: registered schema in Neotoma (schema ID308d67b1); enforcement via PR #398 - Lanius (GitHub workflow coordinator): GHA cron + workflow_definition schema landed
- All daemons using lib/notify/ for notifications
- Menura: separate OpenClaw instance, public-scoped AAuth identity, live at markmhendrickson.com/agent/
- Loxia: GHA-invoked baseline PR reviewer on every PR, with per-domain specialist fan-out (Monedula on finance paths, Gorilla on health paths)
- Temporal evaluation: adopt only if a daemon crash causes lost in-flight state that demonstrably hurts operations; Inngest as fallback
- neotoma-agent: due-date hygiene T4 skill — fires on
taskentity creation to add due dates and domain tags
Goal: Apis replaces Monedula's task scope; payment profiles migrate to Neotoma entities.
- Apis daemon: universal task dispatcher with confidence × blast-radius execution gate, checkpoint resolution loop, and A2A inbound gateway
-
payment_profileentity type in Neotoma (visibility=private); Monedula loads profiles from Neotoma - Turdus daemon: Gmail triage → Neotoma entities + tasks for Apis; invoice detection routed to Monedula
Goal: All daemons have populated agent_definition entities; AAuth fully active for all running daemons.
- All 12 product-panel agent_definition entities populated with
prompt_markdown,context_entity_types,operational_entity_types,allowed_tools -
participation_record,agent_action_observation,agent_policyschemas registered (ateles#16 — implementation ongoing) - Strategy hierarchy schemas registered (
business_strategy,domain_strategy,agent_strategy,strategy_drift_signal) - agent_grant entities provisioned for Cicada and Vanellus
- agent_grant entities for all remaining daemons: Apus, Formica, Monedula, neotoma-agent, Ateles, Anthus
- All daemon public keys published to JWKS endpoint (today only
sw-cursor-1published) - Per-entity-type grant tightening — convert
*grants to allowlists derived fromcontext_entity_types+operational_entity_types - Quarterly AAuth keypair rotation via neotoma-agent
- Public "last 30 agent actions" feed via Menura (proof artifact for Neotoma Tier 1 ICPs)
Goal: All five smoke test tiers pass; github_harness MCP operational; Anthus fully autonomous.
- Operator-driven Tier 1 smoke test: single-agent gate satisfaction (12 agents, artifact-header convention)
- Tier 2: phase ordering + parallelism on synthetic issues
- github_harness MCP server implemented (was ateles#2)
- Tier 3: multi-repo identity correctness (AAuth → PAT mapping) — validation pending
- Tier 4: real product work end-to-end
- Tier 5: fully autonomous Anthus dispatch
- Input attribution: retrieval_event auto-stamping + inputs_consulted population — ateles#19, remaining sub-issues #23–#25
- Tool-level authorization: agent_grant extended to MCP tool calls + parameter constraints, enforced via grant proxy (ateles#26)
- Webhook signing-key quarterly rotation with 7-day grace period
Goal: All external data sources flowing into Neotoma via dedicated ingestion agents.
- Cygnus: Google Calendar polling via
gwsCLI - Aix: Asana webhook + bidirectional sync
- Mergus: Coinbase + Wise + Plaid + BTC + Stacks daily snapshots
- Geococcyx: Twilio SMS webhook
- Tinamus: HomeAssistant polling (5 min cadence)
- Turdus: email triage daemon — Gmail poll → Neotoma entities + tasks for Apis
- Strigops: analytics gatherer — GA4, GSC, Umami, X, Typefully, Instagram backends
Goal: Product perspective agents operational for product development workflows.
- Wire Sturnus to
product_feedback.createdsubscription - Build product role panel: Pavo (PM), Manucode (designer), Waxwing (architect), Phoenicurus (QA)
Goal: Cathartes can define new agents; all planned invocable agents operational.
- Cathartes meta-agent: writes new
agent_definitionentities from operator description - Remaining invocable agents: Anas, Aquila, Falco, Tachornis, Procyon, Lutra, Lupinus
- Expand Loxia/Cicada to handle PRs across all
ateles-agents/<genus>repos
ateles-agentGitHub machine account: create account; generate fine-grained PAT (Contents: write onatelesrepo); store inateles-private/.envasATELES_AGENT_PAT; wire into Apus installed plistneotoma-agentGitHub identity:castor-agentaccount (Pull Shark x2) remains as-is; create newneotoma-agentGitHub account for future automation (tracked in ateles#15)- Agent strategy hierarchy + drift signals: ateles#14 — schemas registered, per-agent entities pending
- Installable package: ateles#18 — ten blockers to package-based adoption; depends on architecture stabilising through Phase 6
Apus env wiring: all env vars wired into installed plist (~/Library/LaunchAgents/com.ateles.apus.plist) including Neotoma auth env varNeotoma webhook subscription: Apus endpoint (https://apus.markmhendrickson.com/webhook) registered as Neotoma webhook subscriber (subscription ID7ce524e4, entityent_6ba1914462908f682f206b56)
- Temporal orchestration: evaluate at Phase 3 when 5+ daemons active and in-flight state loss has occurred; Inngest as fallback
- YubiKey hardware tier: planned for Cursor, operator, Monedula, Ateles, Apus — see
docs/aauth.md