Skip to content
ALC

CLI commands

Every alc subcommand, its arguments and its flags — grouped by what you are trying to do.

alc --version prints the version. Every other flag belongs to a subcommand.

By intent

The fast path when you already know what you want.

IntentReach for
Discover this projectalc status · alc lint · alc team status · alc audit
Run one verified unitalc run · alc spike · alc specialist · alc flow
From a goal, let ALC planalc conduct "<goal>"
Explore alternativesalc explorealc compare --diffalc adopt
Run unattendedalc enqueuealc tick · alc loop --once / alc loop
Integrate the resultalc land · alc discard
Inspect what happenedalc runs · alc metrics · alc artifacts · alc checks history

Setup

alc init

Scaffold a default .alc/ Operator Layer into the current directory. Detects your stack and writes real checks.

FlagDefaultEffect
--forceoffOverwrite an existing .alc/ directory
--setupoffAlso install or update the user-level editor skill
--engine NAMEclaude-codeEngine whose editor skill --setup installs
--stage pre-pmf|growth|strong-pmfnoneAlso hire that stage's Archetype Pack combo

alc onboard

Harvest the checks your project already declares — Makefile targets, package.json scripts — and propose adopting them into a project check set. Proposes first; writes nothing without approval.

FlagEffect
--dry-runPrint the proposal and exit. Also the default when stdout is not a TTY and --yes was not passed
--yesApply the full proposal non-interactively
--jsonPrint the proposal as JSON and exit
--stage pre-pmf|growth|strong-pmfRecord the product stage. Omit to be asked interactively
--assistSpend one bounded engine turn proposing checks the deterministic harvest missed

alc setup

Install or update the user-level editor skill.

FlagDefault
--engine claude-code|geminiclaude-code

alc lint

Validate the Operator Layer against the Policy Gate. --json for machine-readable violations.

Running work

alc run <blueprint> "<task>"

Run one Blueprint as a verified Single Mandate.

FlagEffect
--engine NAMEOverride the default engine
--tier NAMEOverride the compute tier for this invocation
--isolateRun inside an isolated git worktree on a temporary branch
--primer NAMEInject .alc/primers/<NAME>.md into the directive
--bundleWrite a bundle file recording this run's result for later replay
--from-bundle REFReplay a prior bundle (file path or stem) into the directive

alc spike "<task>"

Sugar over the Prototyper pack's spike Blueprint: forced isolation, zero repairs, no commit or auto-merge, excluded from the Scorecard streak. --engine NAME is the only flag.

alc flow <flow> "<task>"

Run a multi-stage pipeline. Same flags as alc run, with --tier applying to every stage and --isolate using one shared worktree for the whole flow.

alc specialist <name> "<task>"

Run an area Specialist (Recall → Act → Learn). --engine NAME is the only flag.

alc conduct "<goal>"

Let the Conductor plan which Flows and Specialists to run.

FlagDefaultEffect
--engine NAMEmanifestOverride the default engine
--tier NAMEplan_tierCompute tier for the planning turn
--enqueueoffWrite queue task files instead of running immediately
--paralleloffDispatch independent units concurrently in isolated worktrees
--concurrency Nfanout_concurrencyFan-out width for --parallel
--strict-stageoffRefuse, rather than warn, when a unit's archetype falls outside the stage mix

The queue

alc enqueue <name> ["<task>"]

Write one or more queue tasks directly, with no planning turn.

FlagDefaultEffect
--kind flow|specialist|runflowUnit kind to dispatch — run queues a bare Blueprint as a one-stage flow
--engine NAMEmanifestEngine for this task
--isolate / --no-isolateisolateWhether to run in an isolated worktree
--id IDnoneSlug another task can --depends-on
--depends-on IDnoneId of a precedent (repeatable)
--touches PATHnonePath or glob this task edits; overlaps serialize automatically (repeatable)
--priority N0Tie-breaker within a dependency wave, higher first
--from-file PATHnoneBatch-enqueue from a .jsonl or plain-text file
--jsonoffPrint the written filenames as JSON

Omit the task argument when using --from-file.

alc tick

Drain the task queue once and exit. Call it from cron.

FlagDefaultEffect
--concurrency N1Process up to N tasks in parallel, each isolated
--engine NAMEper taskOverride the engine for every demand in this drain
--allow-dirtyoffSilence the dirty working-tree notice

alc retry [stem]

Re-enqueue a failed task with its failure feedback appended. No stem lists the outstanding failures.

FlagEffect
--allRe-enqueue every outstanding failure (ignored when a stem is given)
--jsonList the outstanding failures as JSON

alc loop <name>

Run an Autonomous Loop. By default it repeats cycles — replenish, drain, check stop conditions — until the loop stops, sleeping between them. With --once it runs a single cycle and exits; state persists between fires, so that is what cron calls.

FlagDefaultEffect
--onceoffRun one cycle and exit instead of repeating
--engine NAMEmanifestOverride the engine
--concurrency N0With --once, override the loop's drain concurrency (0 = use the definition)
--statusoffPrint the loop state without running anything
--resetoffReset the loop state first
--jsonoffWith --status, print the state as JSON
--interval S300Seconds to sleep between cycles when repeating (0 = no sleep)
--allow-dirtyoffSilence the dirty working-tree notice

alc cycle <name> (deprecated)

The old spelling of alc loop <name> --once, kept because it is in people's crontabs. It behaves identically and warns on stderr. alc schedule writes the new spelling.

alc schedule install|list|remove

Manage the crontab entry that fires alc tick or alc loop NAME --once.

alc schedule install tick --every 15m
alc schedule install cycle deliver --every 1h
alc schedule list --json
alc schedule remove cycle deliver

--every is required on install. name is required for cycle and omitted for tick. Install is idempotent; remove is scoped to ALC's own marker.

alc serve --webhook

A minimal HTTP door onto signal intake and the enqueue path: POST /signal, POST /enqueue, GET /health. Validates and writes only; never executes.

FlagDefault
--webhookrequired — the only mode today
--host H127.0.0.1
--port P8787
--token Tnone — the port then answers unauthenticated requests, with a warning

Branches

alc land [branch...]

Integrate alc/* demand branches into the current branch by linear cherry-pick. No arguments lists the unmerged ones.

FlagEffect
--allIntegrate every unmerged alc/* branch
--jsonList the unmerged branches as JSON (only with no branch and no --all)
--pushAfter a clean local land, push the current branch to the delivery remote
--prPush, then open a pull request via gh against the delivery base

A push or PR failure never fails the land.

alc discard [branch...]

Force-delete alc/* branches, prune stale worktrees, or remove old bundles. No arguments lists the unmerged branches.

FlagEffect
--all-unmergedDelete every unmerged alc/* branch (ignored when names are given)
--worktreesPrune stale worktree admin entries
--bundlesDelete bundle files older than --older-than N days
--older-than NAge threshold in days for --bundles
--yesConfirm non-interactively (required when stdin is not a TTY)
--jsonList the unmerged branches as JSON (only with no other arguments)

Variants

alc explore <blueprint> "<task>"

Run N variants of the same unit in isolated worktrees. Never auto-merges.

FlagDefaultEffect
--variants N1Number of copies of the unit to run
--engine NAMEmanifestEngine to explore — repeatable, crossed with --tier
--tier NAMEblueprintCompute tier to explore — repeatable, crossed with --engine
--jsonoffPrint the variant table as JSON

alc compare [<branch|stem>...]

Put explored variants side by side. Omit the refs to list every archived variant.

FlagEffect
--diffAlso print each variant's unified diff against the current branch
--jsonPrint the variant table as JSON

alc adopt <branch>

Integrate the chosen variant and discard the other losing alc/variant-* branches. --yes confirms non-interactively; --json prints the outcome.

Authoring

alc new <kind> <name>

Scaffold a new unit from a core template. kind is one of blueprint, flow, specialist, loop, primer.

FlagEffect
--forceOverwrite an existing unit of the same kind and name
--from NAMEClone an existing unit of the same kind, replacing its name: field

alc primer new <name>

Scaffold a Primer at .alc/primers/<name>.md. --force overwrites.

alc prompts list|eject [name]

Manage keyed prompt overrides in .alc/prompts/. eject writes a reserved default to a file so you can edit it; it requires a name. --force overwrites an existing override, --json applies to list.

alc team hire|list|status|retire

Manage Archetype Packs. A bare alc team is the same as alc team status.

SubcommandArguments and flags
hire <archetype>--force overwrites all of the pack's files
list--json
status--json — like list, plus Mix Health
retire <member>Archives that member's loop definitions into loops/retired/

The five archetypes are prototyper, builder, sweeper, grower, maintainer.

Inspection

alc status

One-shot health snapshot for monitoring: pending tasks, outstanding failures, loop states, unmerged branches. Always exits 0. --json for the payload.

alc runs list|show|tail

Inspect the structured run logs in .alc/runs/.

SubcommandFlags
list--limit N (default 50), --offset N (default 0), --json
show <stem>--json
tail <stem>-n N (default 20)

alc audit

Aggregate the archived queue reports over a trailing window: task counts, Scorecard totals and averages, changed files, engine usage and cost.

FlagDefault
--since WINDOW7d — e.g. 7d, 24h, 30m
--jsonoff

alc metrics

Show the metric-check time series from the project's ledger: value, delta against the previous measurement, and trend. Read-only.

FlagEffect
--check NAMEOnly this check's series
--jsonMachine-readable

alc checks audit|history

A bare alc checks is the same as alc checks audit.

SubcommandWhat it does
auditRe-detect your stacks and propose check set upgrades. Never writes. Flags checks still commented out for a missing binary
historyAggregate run logs into per-check pass rate, mean duration and a flake score. Never writes

Both take --json.

alc artifacts [<stem>]

List a run's captured e2e evidence — screenshots, curled responses, the health-poll log. Defaults to the most recent run that captured anything. --json for machine-readable output.

alc signal ingest|list

SubcommandFlags
ingest--kind error|feedback|issue|review, --source NAME, --title T, --body B, --from-file PATH, --json
list--json

--kind, --source and --title are required unless --from-file supplies an already-formed JSON object.

Web UI

alc ui

Serve the local web IDE. Requires the optional ui extra.

FlagDefaultEffect
--host H127.0.0.1Host to bind
--lanoffBind every interface and print the address to type on another device. Mutually exclusive with --host
--port P8642Port to bind
--ui-dist PATHnoneExplicit directory of a built frontend to serve. Falls back to ALC_UI_DIST, then the bundled build, then API-only
--no-uioffServe only the API and WebSocket
--token Tnone (env: ALC_UI_TOKEN)Require this bearer token on every /api request and on the WebSocket handshake