This guide describes the V1 path for using Aming Claw to govern another local project. V1 is local-first: start governance, open the dashboard, explicitly register a clean target project, build the graph, then use dashboard/MCP tools to inspect, file backlog, and plan PR work.
The single user-invocable skill entry is /aming-claw:aming-claw-onboard.
From that entry, prefer MCP onboard_route_guide as the live onboard route
guide service. If the host has not exposed that MCP tool, fall back to
POST /api/projects/{project_id}/onboard-route-guide with the same fields.
The CLI launcher remains aming-claw launcher for local setup. Archived skills
under Archive/skills/ are provenance only, not active instructions.
The packaged Codex plugin manifest also installs a client-side PreToolUse
hard guard that runs python agent/hooks/onboarding_guard.py before protected
governance or dispatch actions. Claude Code relies on the server-side
route/identity gate instead, so non-interactive demo prompts can progress after
runtime route/context evidence is recorded. Client hooks cannot intercept direct
curl or other HTTP calls to governance made outside the CLI hook path; the
server gate remains the authoritative control.
Install from the repository or plugin flow in README.md, then verify the install before starting governance:
aming-claw plugin doctorThe doctor is read-only. It reports missing CLI, marketplace, manifest, or MCP
config issues; fix anything that reads fail before continuing.
It does not check ServiceManager by default because ServiceManager/executor are
advanced chain/ops surfaces, not V1 onboarding requirements.
Then start governance in a separate terminal:
aming-claw startOpen:
http://localhost:40000/dashboard
The root path / is not the dashboard and may return 404.
Before a new Codex or Claude Code observer session does observer or governed implementation work, verify the host session can see Aming Claw MCP current context:
- List MCP resources.
- Confirm
aming-claw://current-contextis present. - Read
aming-claw://current-context. - Use
/aming-claw:aming-claw-onboard, then call MCPonboard_route_guide. Use the HTTP route-guide endpoint only when MCP is unavailable. - Confirm role and work type in the returned onboard guide.
- Follow the returned role/token guidance, next legal action, capability, interface, system-operation, archive/resource, and backlog-chain index paths.
- Follow
agent_onboard_guidance.onboard_route_guide.graph_first_policybefore source search fallback: pick the returnedgraph_queryquery_purpose, preserve graph trace ids in runtime/timeline evidence, and inspect the source-hints status paths when docs/config/tests are missing from the graph.
Use the current-context project id, governance URL, dashboard URL, graph state, and guardrails as the session anchor before observer root-route-context, dispatch, graph queries, or implementation planning. A fresh observer should not begin by relying on remembered project state, dashboard health, or old prompt text; it should load the current Aming Claw resources first, then read the backlog row/route context for the current task.
Governance health, /api/health, and a working /dashboard prove the service
can answer HTTP. They do not prove the AI host loaded .mcp.json, exposed the
Aming Claw MCP server, or has route/current-context visibility.
Every source-controlled mutation must be contract-bound before it happens. This applies to parallel MF, operator-supervised direct main, legacy/operator recovery, Docker dogfood, fixture, docs, dashboard, runtime, config, and test changes alike: update or create the backlog row, bind the route/contract identity, record timeline evidence for the intended action, then mutate only the allowed files. A legacy recovery hotfix changes the allowed route, not the requirement to leave contract and timeline evidence.
Observer-owned protected writes have a fixed identity order. First call
observer_session_register. Keep that session alive with
observer_session_heartbeat every 300 seconds. Then call
observer_route_context_issue or observer_route_context_renew before
mf_parallel_enter, backlog close, graph reconcile, or any
other protected write. The observer_session_id and its session token prove
observer liveness; observer_route_token_ref / route_token_ref proves scoped
route authority. They are not interchangeable. If observer_session_id is
missing, recover by authenticating/signing with the known session token and
heartbeating that session, or register a fresh observer session before issuing
or renewing the route-token ref.
During governed execution, the live runtime is the authority for what is legal
next. Use observer-root-route-context, runtime_context_worker_guide,
runtime_context_current, and the contract-state next_legal_action before
acting. Historical docs, docs/dev/ drafts, previous timeline examples, and
source-code searches are orientation only; they do not authorize a step. If the
runtime guidance is missing, stale, contradictory, or too vague to act on, file
that as blocker evidence and stop instead of reconstructing the flow from old
context prose. Runtime resume should prefer live
backlog_contract_chain_current / ContractRuntime current state; compact-ledger
resume is a recovery fallback only when the live projection is missing or cannot
be rebuilt.
When a parent observer materializes QA evidence from a QA-owned packet or role session, preserve evidence-owner, submitter, materialized-from, and authorization provenance in the contract line. This records delegated materialization without treating the observer as the QA evidence owner.
If aming-claw://current-context is missing, stop normal governed work. Reload
or open a new Codex/Claude host session from a root whose MCP config actually
points at the plugin checkout. That can be the plugin/workspace root with the
source-controlled, relocatable .mcp.json; it can also be a parent/workspace
root with a host-local bridge .mcp.json whose absolute cwd points back to
the plugin checkout. The readiness test is not which directory looks correct;
it is whether the new host session lists and can read
aming-claw://current-context. Use aming-claw plugin doctor to inspect the
repo-local config, installed plugin cache, and any parent bridge. HTTP/CLI
fallback is only for an explicit system-recovery hotfix or diagnosis, not
ordinary governed implementation.
Use the Docker install audit harness when validating that a new Codex or Claude host can install the plugin, load the Aming Claw MCP server, and run the demo prompt in a clean container runtime. The loop is contract-first even when the container itself is only a fixture:
- In the host observer session, read
aming-claw://current-context, then call MCPonboard_route_guide. Read graph-first, MCP-tools, MF SOP, or archive resources only through the returned index paths and availability status. - Bind the work to a backlog row and route context before changing docs, runner scripts, runtime code, or demo fixtures.
- Run a minimal CLI/auth smoke in Docker before a required live prompt when login state is uncertain.
- For diagnosis, run the Codex lane with
--keep-container,--container-name, and--prompt-timeout-ms; preserve the report and container logs as blocker evidence instead of rerunning from scratch. - When the Docker lane exposes a blocker, file it on the host backlog/timeline, repair the host checkout under the row's contract, commit and push, then update or rerun the Docker checkout/ref.
- Final proof must be a fresh container from the pushed ref, without
--keep-containeror--reuse-container.
The runner documentation lives in docker/hn-install-audit/README.md. Debug containers reduce repeated auth/runtime setup, but they are not release proof by themselves.
Project registration is explicit. Do not silently register a workspace just
because /api/projects is empty.
Use the dashboard Projects page first:
- Choose or paste the target workspace path.
- Review the exclude-path field. Confirm which generated, vendored, nested, or tool-owned directories should be excluded before graph build.
- Give it a project name/id.
- Click Bootstrap or Build graph.
- Watch progress in Projects/Operations Queue.
Bootstrap mutates Aming Claw governance state: it writes project registry/DB
rows, scans the workspace, and creates a commit-bound graph snapshot. It uses
governance on port 40000, not ServiceManager on 40101.
API fallback:
POST http://127.0.0.1:40000/api/project/bootstrapThis is the Lane 1 first-run bootstrap path. Do not use old ungated CLI or DB side doors for first registration; the governance API/dashboard path records the project-bootstrap route binding and graph-build evidence.
Request body schema:
{
"workspace_path": "/absolute/path/to/project",
"project_id": "my-project",
"project_name": "My Project",
"language": "python",
"scan_depth": 3,
"exclude_patterns": ["node_modules", "dist", "build", "coverage"],
"config_override": {
"project_id": "my-project",
"language": "python",
"graph": {
"exclude_paths": ["node_modules", "dist", "build", "coverage"],
"ignore_globs": ["**/*.generated.*"]
}
},
"route_token": {},
"route_token_ref": "",
"route_waiver": {}
}workspace_path is required. project_id and language may be supplied at the
top level or inside config_override; top-level values are folded into the
override before graph build. Top-level exclude_patterns is a compatibility
alias for config_override.graph.exclude_paths: bootstrap stores the union in
graph.exclude_paths, preserving existing config_override.graph.exclude_paths
first and appending new top-level entries after dedupe. The response includes
effective_exclude_roots, the exact roots passed into graph reconcile.
For a first registration of an unregistered project, a dashboard/API/HN demo/CLI
caller may omit route_token: governance mints a narrow server-side
project_bootstrap route binding, persists only the opaque
route_token_ref/digest, validates the normal protected mutation gate, and
records route_token_gate.project_bootstrap timeline evidence. A tokenless
bootstrap for an already registered project is still rejected; use a valid
route_token, route_token_ref, or accepted route_waiver for non-first-run
re-bootstrap or repair flows.
Use common excludes for generated folders:
node_modules, dist, build, .expo, .next, coverage
Also check for project-specific names that are not safe defaults, such as
node, vendor, generated SDK/client folders, local model downloads, embedded
example repositories, fixture clones, scratch worktrees, and large build/cache
roots. The dashboard bootstrap form requires this review before it submits. If
they should not become governed L4/L7 nodes, add them before first bootstrap:
graph:
exclude_paths:
- "node"
- "vendor"
- "generated"
ignore_globs:
- "**/*.generated.*"
nested_projects:
mode: "exclude"
roots:
- "examples/fixture-app"If the target workspace is a dirty git repo, commit/stash first. Dirty
worktree rejection is intentional because graph snapshots are commit-bound.
Bootstrap refusals are evidence-bearing: tokenless non-first-run refusals and
first-run precondition failures after a server-minted binding are deduped into
route_token_gate.project_bootstrap_refusal timeline events on the requested
project id. For a dirty first-run target that is not yet registered, this event
lives in the requested project's governance timeline DB even though the project
registry row is not created.
V1 stores most user project metadata in the Aming Claw project registry. It
should not default to creating or mutating .aming-claw.yaml in the target
project root unless the user explicitly chooses a source-controlled config.
For source-controlled projects that want a config file, see config/aming-claw-yaml.md. The key V1 sections are:
project_idandlanguage.graph.exclude_paths/graph.ignore_globs.testing.e2esuite metadata.ai.routing, especially thesemanticprovider/model.
After graph build:
- Open Graph and inspect L1/L2/L3/L4/L7 hierarchy.
- Select candidate nodes and review Files, Relations, Functions, and Problems.
- Use AI or MCP graph queries for
function_index, fan-in/fan-out, docs/tests, and bounded source excerpts. - File backlog rows with node ids, target files, tests, risk, and acceptance criteria.
- For implementation, the V1 implementation default is observer-led Manual Fix unless the user explicitly asks to test experimental chain automation. The live route guide is the entrypoint for the current MF path. The archived historical MF checklist is preserved at Archive/skills/aming-claw/references/mf-sop.md for provenance only.
Parallel MF uses observer-only coordination by default. The observer writes the
backlog row and mf_parallel.v1 contract, starts bounded local Codex
subagents as mf_sub workers only when the user explicitly asks or an approved
contract calls for it, and reviews their review_ready or waiting_merge
evidence. Subagents are governed by the MF backlog row, contract,
file/worktree fence, and timeline evidence; governance task_create
dev/test/qa/merge is not the V1 default implementation entrypoint. Agents do
not merge, push, release gates, activate graph refs, close backlog, delete
worktrees, or mutate merge queues. The observer also does not wait, merge, or
push by default unless the user explicitly asks or a documented governance
transition requires it.
When an mf_sub worker has a runtime_context_id, it should use the Runtime
Context worker guide as the concentrated entrypoint before acting: use MCP
runtime_context_worker_guide or the HTTP worker-guide facade, and refresh
runtime_context_current when a gate or evidence write needs the latest state.
The guide is the worker-facing map for safe route context, graph-query
identity, read/write evidence facades, startup, implementation evidence,
finish-time attestation, finish gate, and close-gate gaps.
When allocating bounded parallel workers, pass the canonical
target_project_root (or its target_graph_root alias) for runtime-context
identity and carry that exact value into worker-guide reads, graph queries, and
runtime-context write facades. Use worktree_path and its aliases only for the
final materialized worker worktree path. Pass route token refs, never raw route
tokens.
Route context is not satisfied by reading this onboarding document or by searching source files. Workers and observers must consume the runtime-projected route context and record the required evidence through the current facade for their role.
Default onboard guidance does not expose observer_hotfix / hotfix_enter as
ordinary observer paths. Those interfaces are legacy/operator recovery only and
should appear through the live guide's explicit legacy_operator_recovery
surface or a concrete operator recovery instruction. Ordinary repairs use the
current ContractRuntime next_legal_action, the exact successor contract
returned by the live guide, mf_parallel_enter, or mf_batch_parallel_enter.
The retired direct-fix route names are audit history only and must never be
entered, resumed, or retried.
Classify repair topology before action:
- Parentless single-branch direct merge: only for explicit operator-approved, tiny direct-main repairs with pre-mutation exception evidence.
- Blocked-parent successor: use only the exact successor contract returned by the live guide, repair in that child, run independent QA, and record return-to-parent evidence before parent close authority resumes.
- Multi/parallel merge queue: use
mf_parallel_enterormf_batch_parallel_enter; row-scoped workers finish into the merge queue rather than direct parent mutation.
For operator_supervised_direct_main, the canonical close path is strictly:
pre-mutation exception -> commit-bound implementation -> independent
role-bound QA -> redeploy -> live regression -> graph reconcile/preflight ->
close_ready -> backlog_close. The implementation event carries
changed_files plus either diff_check or dirty_scope_check. Verification is
QA-authored verification or independent_verification authorized by a
managed QA session ref; an observer receipt/transcription is not QA authority,
and raw QA tokens are never persisted. close_ready accepts the redeploy
synonyms redeployed, governance_redeploy, runtime_sync, and
runtime_version_sync, and the regression synonyms
live_regression_evidence and live_regression; it also requires both
graph_reconciled and preflight_ok before protected backlog close.
Before stopping or replacing a worker, audit progress from the latest runtime current state, worker guide, task timeline, graph traces, branch head, changed files, tests, finish gate, and blockers. Complete bounded operator-supervised repairs with independent QA, branch-service validation on the canonical governance port when runtime code changed, merge or redeploy, full graph reconcile, and protected backlog close.
When a bounded QA graph query rejects a non-descendant or otherwise unsafe
candidate overlay and requires an exact candidate snapshot, do not reuse an old
trace and do not make QA build or activate the graph. The observer calls
graph_current_full_reconcile with activate=false, the exact clean worker
project_root, and that worktree's full HEAD. The returned
candidate_snapshot_id is supplied to the same bounded QA session's next
graph_query. This pre-QA candidate build never advances the active graph and
does not count as merge, redeploy, or post-merge reconcile evidence. Its clean
check cannot be waived with require_clean=false; omit merge-queue ids unless
both identify an already-scoped queue item. Run the ordinary activated
current-full reconcile only after QA and merge.
The normal worker order is:
- Read the worker guide and confirm the next legal action. A fresh worker
should normally see
submit_mf_subagent_read_receipt. - Record a worker-authored read receipt through the runtime-context
runtime_context_read_receiptMCP tool or HTTPread-receiptsfacade, using the guide hash material and public route identity. Do not persist raw session, route, or launch-text tokens. - Record real startup before implementation through
parallel_branch_startupor the runtime-contextstartupfacade, including actual cwd/git root, branch/head, base/target head, merge queue id, owned files, read-receipt refs, route identity, and route token ref. - Run worker-scoped
graph_queryasquery_source=mf_subagentwithquery_purpose=subagent_context_buildorsubagent_gate_validation, carryingtask_id,parent_task_id,worker_role=mf_sub, fence, and session identity. - Before any implementation edit, verify
pwdandgit rev-parse --show-toplevelboth equal the assigned runtime worktree. If either points at target/main, stop before editing and relaunch in the assigned worktree. Then implement only inside the file/worktree fence and run focused tests, but do not create the worker git commit yet. Write implementation evidence through the runtime-contextimplementation-evidencefacade with changed files, tests, and graph trace ids. - Record finish-time worker attestation and the finish gate while the worker
diff is still uncommitted. If the finish gate blocks, stop and report the
blocker; do not backfill or fabricate evidence. Only after the finish gate
passes may the worker commit its branch. The worker does not merge, mutate
the merge queue, or write QA evidence. After the finish gate, the observer
resumes the parent contract with independent QA, then materializes the
durable merge queue item with
parallel_branch_merge_queue_materialize(or HTTPparallel-branches/merge-queue/materialize) using the worker finish checkpoint before any ordered merge apply.
Startup and implementation belong to the same live worker session for the
happy path. If a startup-only probe exits, do not reuse that completed
transcript with send_input as the implementation worker. Spawn a fresh
implementation worker and record fresh read receipt plus startup evidence for
that worker before file writes. Before any protected worker write, the worker
must have the raw host envelope env values AMING_WORKER_SESSION_TOKEN and
AMING_WORKER_FENCE_TOKEN; session_token_ref alone is copy-safe identity,
not write authorization. If those env values are missing after read receipt
and startup, use the runtime-context session-token/rejoin facade and inject
the returned host envelope into the real mf_sub worker.
For the daily-planner-lite one-prompt demo, the intended fixture path is two
parallel backlog rows moving from open through normal close gate with no manual
route/startup/identity repair. If a worker guide says route context, read
receipt, startup, graph trace, implementation evidence, finish gate, or
close-gate evidence is missing, repair that surface through its documented
facade before implementation or handoff rather than treating post-hoc
reconstruction as the happy path.
Worker final evidence should name the branch/worktree, owned changed files, tests run, graph query trace ids, precheck evidence, generated assets policy, and risks/open questions. Merge review checks contract fit, diff scope, test and E2E evidence, docs/test/config impact, generated assets policy, graph/reconcile plan, Chain trailers, and backlog close policy. If changed docs or templates are not graph-bound, add an Asset Inbox binding or Governance Hint follow-up so auditability can be materialized. Chain trailers are MF audit anchors on commits; they do not mean auto-chain execution is active.
Configure the project's semantic provider/model in AI config before live
semantic jobs. OpenAI routes use Codex CLI (codex); Anthropic routes use
Claude Code CLI (claude). Version detection does not prove authentication.
Cost expectation: AI Enrich subprocess-spawns the local CLI per node/edge, so token use scales linearly with the selection size. On a fresh project of a few hundred nodes, start with 5–10 nodes you actually care about, watch the Review Queue, and only run repository-wide enrichment after the routing and prompt template are tuned.
Recommended flow:
- Select a node or edge.
- Run AI Enrich.
- Watch Operations Queue.
- Review the proposed semantic memory.
- Accept, reject, or retry in Review Queue.
ai_complete means a proposal exists. It is not trusted project memory until
reviewed and accepted.
Governance Hint is the V1-safe graph correction path for orphan doc/test/config files that already appear in snapshot file inventory.
It writes a source-controlled hint into the file, then requires:
- Commit the hint.
- Update Graph/reconcile.
- Confirm the file is attached to the expected node.
It does not create nodes, rewrite ownership, move hierarchy edges, or edit dependency/function-call relations.
- Auto-chain PM -> Dev -> Test -> QA -> Merge is experimental in V1 and is not the V1 default implementation route.
- ServiceManager/executor are advanced chain/ops surfaces. They are not required for governance, dashboard, graph query, backlog, AI Enrich Review Queue, or Manual Fix.
- Workflow acceptance graph tools (
wf_*) are separate from the snapshot graph and require import before use. - Telegram, Redis, dbservice, and full production deployment are advanced surfaces, not required for the local plugin MVP.