The console
alloy console serves a local, strictly read-only web UI over your working-tree corpus. It is the fastest way to see what the trust machinery has computed - drift, coverage, gaps - instead of reading JSON.
alloy console # serves on the default port
alloy console --port 8080 # pick a portIt binds 127.0.0.1 and rejects any request whose Host header is not loopback, so it is a local inspector, not a shared service.
What it shows
The console renders the same pure functions the CLI uses, so nothing it shows can disagree with alloy status or alloy validate:
- Corpus browser and doc inspector - read any doc with its provenance, lifecycle state, and supersession banners.
- Resolver playground - resolve a query key and watch redirect-versus-silence change as you switch the active view. This is the quickest way to feel what a view does.
- Search across the corpus.
- Discovery inventory - the units each source declares.
- Coverage - EXTRACTED / EXCLUDED / UNKNOWN per source, with the UNKNOWN queue and the exclusion rationales. The place to see what still needs triage.
- Freshness - per-unit drift, with the changed-file lists behind each drifted unit.
- Gap queue - ranked unresolved-query telemetry: what agents looked for and did not find.
- Quality-gate roster - the validators and their state.
Read-only is structural
Read-only here is not a convention you could accidentally break - it is enforced by construction. There are no POST routes at all. Sources resolve in a no-checkout mode (a source that would need a fetch is reported "skipped" rather than fetched), and a full sweep of every request writes nothing - not the repo, not the checkout cache, not query telemetry. To see live data for a source that reads an external checkout, point ALLOY_SOURCE_PATH_<NAME> at a local clone before starting the console; a spoke's own self: source needs no such override.
When to reach for it
Use the console when you want to demonstrate the corpus (a browsable view of coverage and freshness reads better than a terminal), when you are triaging UNKNOWN and want the queue and rationales side by side, or when you are tuning a view and want to watch resolution change live. For scripting and CI, use alloy status --json instead - the console is for humans looking, not for machines gating.