Skip to content

Canonical Manifest

The manifest is the single source of truth for what constitutes a valid Archon installation. It is published live at:

https://aaep.site/manifest.json

Both the agent protocol and the CLI consume this file. No other ledger is authoritative; if a file is not in the manifest, it is not part of Archon.

Schema: archon.manifest/v1

jsonc
{
  "schema": "archon.manifest/v1",
  "version": "0.1.0",                      // canonical framework version
  "generated_at": "2026-05-05T…",
  "base_url": "https://aaep.site",
  "source_root": "docs/source-files/",

  "docs": {
    "skill":     "https://aaep.site/skill.md",
    "install":   "https://aaep.site/install.md",
    "update":    "https://aaep.site/update.md",
    "sync":      "https://aaep.site/sync.md",
    "uninstall": "https://aaep.site/uninstall.md"
  },

  "runtime_ledger_paths": {
    "files":       [".archon/debt.md", ".archon/drift.md", ".archon/manifest.md", "..."],
    "directories": [".archon/debt/", ".archon/drift/", ".archon/runs/", "..."]
  },

  "placeholders": {
    "PROJECT_NAME": { "description": "...", "required": true, "example": "Acme" },
    "TECH_STACK":   { "description": "...", "required": true, "example": "Node.js + React" },
    "DOMAIN":       { "description": "...", "required": false, "example": "saas-platform" },
    "OWNER":        { "description": "...", "required": true, "example": "Acme Inc." },
    "PROJECT_SLUG": { "description": "...", "required": false, "derived_from": "PROJECT_NAME" }
  },

  "totals": { "modules": 14, "files": 82 },

  "modules": [
    {
      "id": "core-soul",
      "title": "Cognitive core (soul)",
      "description": "The soul defines who the agent is: identity, cognitive loop, ...",
      "required": true,
      "file_count": 11,
      "files": [
        {
          "path":   ".archon/soul.md",                              // where to write
          "url":    "https://aaep.site/source-files/.archon/soul.md", // where to fetch
          "sha256": "abcdef...",
          "bytes":  12345,
          "placeholders": ["PROJECT_NAME"]  // present only when the file contains tokens
        }
        // ... more files
      ]
    }
    // ... more modules
  ]
}

Modules

The current manifest ships 14 modules — 11 required, 3 optional.

idRequired?What it isRuntime needs
core-soul.archon/soul.md + mode extensionsnone
core-contractsgovernance-contract.yamlnone
core-templatesrun.template.md + run-state.schema.jsonnone
core-version.archon/VERSIONnone
domain-lenses5 lenses + 16 decision toolsnone
commandsIDE commands (archon, archon-plan, …)none
agentsSub-agents (archon-reviewer, archon-capture-auditor)none
rulesAlways-on rules (archon.mdc, wake, heartbeat)none
skillsKeyword/file-triggered skillsnone
scriptsPython archon-check.py (stdlib-only) + Bash wrapperPython 3 (only when invoked)
legalLICENSE + NOTICEnone
clioptionalArchon CLI source (tools/archon-cli/)Node ≥ 18
dashboardoptionalLocal observability UINode ≥ 18
extensions-demand-pooloptionalBacklog queue extensionnone

Required modules are always installed. Optional modules are opt-in via --with=<list> or interactive prompt.

Archon framework itself does not require Node.js. The cli and dashboard modules are the only ones that do, and both are optional. Python 3 is needed only when you actually invoke scripts/archon-check.py (e.g. as a pre-commit hook); the framework install/update/sync/uninstall protocols themselves don't run it.

IDE platform binding

Archon is platform-neutral. The framework core under .archon/ is the same regardless of which AI coding IDE you use; only the binding directory differs. The manifest's canonical paths use .cursor/ for the four binding modules (commands, agents, rules, skills); the agent and CLI rewrite this prefix on write to match the detected platform.

Detected signal$IDE_PLATFORM$BINDING_ROOTManifest path → write path
.cursor/ existscursor.cursor/.cursor/foo.cursor/foo
.codex/ or AGENTS.md existscodex.codex/.cursor/foo.codex/foo
.claude/ or CLAUDE.md existsclaude.claude/.cursor/foo.claude/foo
.continue/ existscontinue.continue/.cursor/foo.continue/foo
.aider.conf.yml or .aider/ existsaider.aider/.cursor/foo.aider/foo
.windsurf/ existswindsurf.windsurf/.cursor/foo.windsurf/foo
None of the aboveAsk user

The detection priority and rewrite rule live in skill.md §3 (agent path) and the CLI's lib/install.mjs (CLI path); both follow the same logic so the resulting tree is identical.

Pre-commit hook implementations

The scripts module ships two implementations of the portable contract checker. There is no Node implementation:

FileLanguageWhen to use
scripts/archon-check.pyPython 3 stdlib-onlyReference implementation. Runs anywhere Python 3 runs (any OS, no pip install).
scripts/archon-check.shPOSIX shellWrapper that delegates to archon-check.py. Useful when the project's pre-commit infrastructure expects shell scripts.

The agent or CLI picks the appropriate hook command based on your dev environment:

Dev environmentHook command
Python 3 on PATH (Linux / macOS / WSL)python3 scripts/archon-check.py --root .
Bash + Python 3 on Unixsh scripts/archon-check.sh .
Windows + Python via py launcherpy -3 scripts\archon-check.py --root .
No Python availableSkip the hook; recommend running archon sync manually

Wiring options (Python pre-commit framework, plain git hook, husky on Node projects) are documented in Quickstart Step 4.

Why publish a manifest instead of a tarball?

  1. Transparent — a human can cat manifest.json | jq and see exactly what the framework ships. No opaque compressed blob.
  2. Partial updates — agents and the CLI fetch only the files that differ between current and canonical, not the whole framework.
  3. Checksum-first — sha256 in the manifest means even a mid-download truncation is caught before writing.
  4. Module granularity — opt in or out of optional modules per file.
  5. Mirror-friendly — override base_url via --base-url= or ARCHON_BASE_URL and host a private mirror. The JSON is small (< 100 KB even at full file count).

How the manifest is generated

The manifest is regenerated on every doc-site build via scripts/build-manifest.mjs in the archon-protocol repo. It scans docs/source-files/, computes sha256 per file, identifies tokens, and writes:

  • docs/public/manifest.json (served at /manifest.json)
  • docs/public/source-files/** (mirrors raw bytes for agents/CLI to fetch)

Version comes from .archon/VERSION in the source tree.

Schema versioning

archon.manifest/v1 is stable. If a future v2 schema ships, it will be served at a different URL (manifest-v2.json) and old agents/CLIs will continue to work against manifest.json (= v1) until they explicitly opt in.

Inspecting the live manifest

bash
curl -s https://aaep.site/manifest.json | jq '.totals, .modules[].id'

Or browse the JSON directly: https://aaep.site/manifest.json

Released under the Apache-2.0 License.