Skip to Content
DocumentationReferenceGenerated Agent Anatomy

Generated Agent Anatomy

forge generate-fast creates a complete agent project, not just a prompt. This page explains what each generated file does and what is safe to edit.

Top-Level Files

PathPurposeEdit guidance
aether-forge.jsonRuntime config: planner, deployment profile, MCP servers, budgets, runtime knobsEdit intentionally; run forge config-validate
aether-forge.example.jsonExample config shape for operatorsSafe to edit as documentation
agent-spec.jsonTyped agent objective, domain, constraints, and metadataEdit only when changing the agent contract; run forge validate
capability-manifest.jsonDeclared capability surface the planner may requestEdit with policy updates; run forge validate and forge eval-pack
policy-bundle.jsonRuntime allow/deny rules and side-effect constraintsTreat as safety-critical; test in sandbox first
scenario-pack.jsonEvaluation scenarios and expected outcomesAdd scenarios when behavior changes
scaffold.manifest.jsonGenerated artifact ownership and regeneration rulesDo not bypass; use it to understand ownership
strategy.jsonGenerated strategy parametersSafe to tune through forge strategy or manual review
memory.dbDurable Layer 3 SQLite memoryRuntime state; back up before migrations
replays/Tick replay evidenceRuntime audit trail; do not edit

Developer Files

PathPurpose
README.mdAgent-specific quickstart
AGENT.mdOperational notes for the generated agent
pyproject.tomlLocal project metadata
main.pyDirect Python entry point
MakefileDay-one commands: test, validate, eval, run, doctor
Dockerfile / docker-compose.ymlContainer runtime
.env.exampleEnvironment variable template
.dockerignoreContainer build hygiene
tests/test_agent.pyGenerated smoke tests

Generated agents ship these files so a developer can run:

make test make validate make eval-pack make doctor

Source Layout

PathRole
src/generated/agent_context.pyGenerated typed context helper
src/strategy/router.pyStrategy router and data-source wiring
src/strategy/*.pyStrategy helpers, generated defaults, paper trading support
src/policies/policy_bundle.pyPython policy mirror for scaffold checks
src/runtime/run_agent.pyGenerated runtime wrapper
src/runtime/live_exchange.pyLive exchange adapter boundary
src/runtime/wallet.pyWallet adapter boundary
src/protocols/__init__.pyProtocol-specific constants and helpers

What Is Framework-Owned?

The safest rule is:

  • JSON artifacts define the contract.
  • src/ files implement the generated scaffold.
  • memory.db and replays/ are runtime state.
  • scaffold.manifest.json explains what was generated and how it may be regenerated.

When you change JSON artifacts, run:

forge validate . forge eval-pack .

When you change scaffold code, run:

make test make eval-pack

When you change policy code, also run:

forge scaffold-policy-sync . forge security-check . --harden

Common Safe Changes

ChangeFiles usually touchedChecks
Tune a strategy parameterstrategy.json, scenario-pack.jsonforge eval-pack .
Add a read-only data sourceaether-forge.json, src/strategy/router.pymake test, forge run . --environment sandbox --max-ticks 1
Add a side-effecting capabilitycapability-manifest.json, policy-bundle.json, router codeforge validate, forge eval-pack, forge security-check . --harden
Add MCP toolsaether-forge.jsonforge config-validate aether-forge.json, forge doctor
Move toward productionaether-forge.json, deployment files, policy filesProduction Readiness

Files Not to Commit

Do not commit secret-bearing or runtime-local state:

  • .env
  • .ows/
  • wallet backups
  • live exchange credentials
  • local x402_state.json from real runs
  • private replay files that contain sensitive inputs

Generated agents should keep credential handles in config and secrets in environment variables or vaults.

Last updated on