The eras

No quarters.
Only eras.

The roadmap is not a schedule. It is the architecture, named in the order it was built, and every line below points at a module that either exists in the published package or does not.

01 Why there are no dates

Most roadmaps carry quarters, because a quarter is easy to type and nobody checks it until it is too late to matter.

This one carries eras. An era is a set of modules, and a module is either in the published package or it is not, which is a thing you can go and look at. They are ordered by what they made, not by when they landed.

A date you miss costs more than a date you never gave. So none are given.

02 The eras

Three closed,
one open,
one sealed.

Each era is named for what it made. Where an era has work left, the work is listed under it beside the module that already carries the seam.

Nothing below is dated and nothing below is promised. The shipped lines were read out of the 0.1.2 package. The remaining lines were read out of the same code, which is how their absence is known.

The forge

Complete

Shipped

  • Stage 01, the planner. planner.py grades a task simple, standard or deep and returns a plan whose agents are bounded by MAX_AGENTS = 4, with depends_on wiring who feeds whom.
  • Stage 02, the generator. assemble_agent writes each agent as one self-contained Python file that imports nothing from AgentGod, so it can be copied out and run on its own.
  • Stage 03, the guard. codeguard.py parses generated code with ast before it can become a process, against 81 vetted packages, 13 blocked standard-library modules and 6 banned calls.
  • Stage 04, the executor. executor.py runs the graph in waves computed by taskgraph.waves(), installs vetted dependencies into .agent_venv, and makes no model calls of its own.
  • Generated agents speak to the Messages API over plain HTTPS. ANTHROPIC_API_URL and ANTHROPIC_VERSION reach the agent file as the @@API_URL@@ and @@API_VERSION@@ placeholders, filled at write time.

The judgement

Complete

Shipped

  • Stage 05 and stage 06, the merger and the council. COUNCIL = auto, and the three modes auto, always and off are the three the --council flag itself offers.
  • Stage 07, judgement, then release. TASK_REVISIONS = 1 sends the agents round again when the answer misses the request, and the keep question can be answered in advance with --keep, --discard or AGENTGOD_KEEP=always.
  • One server-side search tool for generated agents. WEB_SEARCH_TOOL_TYPE is web_search_20260209, declared as a one-element tools list, capped by WEB_SEARCH_MAX_USES = 3, needing no second key.
  • One optional question before anything spawns. judgment.clarifying_question(), skipped when there is nobody there to answer it (CLARIFY = auto | off).
  • Effort where the grade says it matters. LLM_EFFORT accepts low, medium, high, xhigh and max, and DEEP_MODEL is used only for tasks graded deep.

The surface

Complete

Shipped

  • A published package. pip install AgentGOD, version 0.1.2 on PyPI, Python 3.10 or newer, four runtime dependencies, two console commands that are the same program.
  • A parser with thirteen flags, rendered from the shipped build_parser() itself, and a fixed exit-code contract: 0 succeeded, 1 failed, 2 bad usage, 130 interrupted.
  • Seventeen offline command verbs and eleven in-session slash commands, all reading local disk with the key check skipped.
  • A first run that asks for the key once: hidden input, a shape check for sk-ant-, an API probe when a person is present, then written to the .env inside the user data directory.
  • Two renderers behind one interface. --plain and -q/--quiet set AGENTGOD_PLAIN and AGENTGOD_QUIET, which ui.py reads.

The reckoning

Active

Shipped

  • Per-agent reuse with a ledger. LibraryEntry records uses, wins, losses and generation, and reliable() retires an agent that has lost more than it won.
  • A durable archive of every completed run under runs/, carrying the task, the answer, the grade, the agents built and reused, the failures and the cost.
  • One configuration path. cli.apply() implements every per-invocation flag by writing the matching environment variable, and real environment variables outrank the .env file.
  • Where everything lives, resolved in a fixed order and printable: AGENTGOD_HOME, then a source checkout, then the platform data directory, reported by agentgod where.

Remaining

  • The planner shown the record the library already keeps. describe_for_planner renders name and role only, for at most 25 entries, matched by exact name.
  • Per-agent model and effort. The executor accepts both. The plan carries neither.
  • A plan preview before the spend. The grade, the pricing table, estimate_cost and the spend_updated event all exist, and nothing composes them.
  • Automated test runs. There is no .github/ directory anywhere in the repository, and the tests are written to need no key and no network.
  • One agreed test count. The repository states 599, 631 and 974 in three different files, and the published README badge says 704. Four numbers. None of them goes on this site until the suite is run.

The cage

Sealed

Remaining

  • A container per agent, replacing static validation. execute_agent already takes the interpreter as a parameter and the tests exercise it. The orchestrator never passes it.
  • Filtering what an agent inherits. _child_env starts from dict(os.environ), so the subprocess receives the whole parent environment.
  • Streaming. A read of all 26 modules found no streaming code at all: the architect's calls and the agents' calls both buffer to completion.
  • A face that is not the terminal. events.py runs the pipeline headless with about 18 hooks, and __init__.py exports only __version__.
  • Results that are not text. pillow, matplotlib, reportlab, openpyxl and pypdf are vetted and installable already, while the contract is text in and text out and write-mode open() is refused.
  • A second model provider. config.py is the only provider-aware module and the agent's API URL is a fill-in placeholder; today PRICING_PER_MTOK names five Claude models and supports_effort() keys on a claude-haiku prefix.
  • Agents in another language. The subprocess contract allows it in principle, but codeguard is ast.parse, save_agent_file writes .py and agent_python returns a Python interpreter.
  • Whole-plan reuse. Reuse works one agent at a time, and the search that would match a whole saved team is named in the architecture notes and left unchecked.

The track

Era after era.

The roadmap is the architecture. Three eras are complete, one is active, and the last is still sealed.

The forgecomplete The judgementcomplete The surfacecomplete The reckoningactive The cagesealed

03 Next

Read what is held back.

The work that is built and not free is listed one seal at a time, each with the condition that opens it. Conditions, never dates.

See the seals