anthill is the command-line tool for the Anthill agent-harness framework.
It owns the backlog and escalation schemas, scaffolds the framework into a
repository, and keeps an installation's general-tier skills verbatim-synced
with upstream. It is the mechanical half of Anthill: the durable state and
verbs that the harness's orchestration skills bind to.
Anthill is a framework for running autonomous and supervised agent workstreams against a codebase. It has two tiers:
- General tier — portable orchestration skills under
.claude/skills/(supervisor,autonomous,triage,submit,dispatch,dispatch-loop,dispatch-receive,expedite,escalate,wake-up). These are byte-identical across every installation; you upgrade them by re-copying, never by local edit. - Specific tier — everything under
.anthill/: the backlog, escalation records, workstream and resource bindings, autonomy config, and the launcher. All project adaptation lives here.
This CLI is the schema owner and install manager for both tiers. The framework
itself is maintained upstream at
Dwight-D/anthill; this repository builds
the binary and pins (embeds) a specific upstream template ref that scaffold,
doctor, and sync read as their baseline.
- The framework's source of truth is the upstream Anthill repository. Its
.claude/skills/are the canonical general-tier texts and its.anthill/tree is the canonical placeholder skeleton. - This CLI embeds a pinned copy of that template (see
internal/bootstrap/template/) at the ref ininternal/bootstrap/embed.go.anthill scaffoldwrites it;anthill doctorchecks an install against it;anthill syncbrings an install up to it. - A gap in the framework is filed upstream (an issue or PR), never patched
by editing a local skill. Adopting a newer framework release means re-vendoring
the embedded template and bumping the pinned ref, then consumers run
anthill sync.
This repository also runs the Anthill harness on itself — its own
.claude/skills/ and .anthill/ are a live installation.
Requires Go 1.26+.
# Install the binary onto your PATH
go install github.com/Dwight-D/anthill-cli/cmd/anthill@latest
# …or build from a checkout
git clone https://github.com/Dwight-D/anthill-cli
cd anthill-cli
go build -o anthill ./cmd/anthillVerify:
anthill versionFrom inside the target git repository:
# 1. Print the authoritative install guide (fetched fresh, never embedded)
anthill bootstrap
# 2. Write the embedded framework template into the repo
anthill scaffold
# 3. Derive the .anthill/ tree with the guide, then check health
anthill doctorscaffold writes the eleven general-tier skills, the .anthill/ placeholder tree,
CLAUDE.template.md, tools/, and .gitignore, and stamps the pinned template
ref into .anthill/framework.md. It never overwrites a file you have derived
without --force. After scaffolding you derive the specific-tier placeholders
(workstreams, resources, bindings, .anthill/autonomy.md) — anthill doctor
lists which files still hold template placeholders.
| Command | Purpose |
|---|---|
anthill scaffold |
Write the embedded framework template into a git repo. |
anthill doctor [--strict] |
Read-only health check: skill integrity, structure, derivation status, sync status, and runtime data integrity. |
anthill sync [--dry-run] [--force] |
Bring installed general-tier skills up to the embedded ref; re-copies changed skills verbatim and bumps synced-through. |
anthill backlog … |
Create, list, triage, claim, and close backlog items. |
anthill escalation … |
Raise, list, answer, and apply escalation records. |
anthill validate |
Validate the whole tree (backlog + escalations). |
anthill version |
Print the CLI version and the embedded template ref. |
Global flags: --json (machine-readable output), --root <dir> (locate the
.anthill/ tree), --quiet, --no-color.
When the embedded ref advances (a new framework release is vendored into this CLI), a consumer upgrades their skills with:
anthill sync --dry-run # preview the skill-level diff
anthill sync # re-copy changed skills verbatim, bump synced-throughEvery skill is compared byte-for-byte with no exceptions. A skill carrying an
unexpected local edit is reported as a conflict and left unchanged; re-run with
--force to overwrite it (the diff is shown first).
go build ./...
go test ./...Both must exit 0. See CLAUDE.md for the repository's agent-work conventions
and safety invariants.