Assume assay --version works and assay init has run. This page is the standing loop.

1. Capture what already happened

Point Assay at the harness logs you already have:
assay capture claude-code
assay capture grok
assay capture codex
assay capture opencode
Each command is incremental and idempotent. Re-running is safe. A session already captured is not billed twice. Skip a harness you do not use. A missing root is skipped, not an error, once the sweep is on. See Capture.

2. Open the console

assay dashboard
It prints a loopback URL (default http://127.0.0.1:4319/) and stays up until Ctrl-C. The console is read-only for spend and conversations. It binds loopback on purpose. There is no login on that server. Loopback is the boundary. You should see Spend, Sessions, and — once labels exist — Products and Objectives. See Dashboard.

3. Read one sitting from the terminal

assay show
assay tail -n 20
assay turns --session <session-id>
assay turns is the debug console for an agent loop: decrypted timeline, per-turn cost, JSON if you pass --json. See Debug console.

4. Turn on the sweep

Capture by hand is fine for a first look. For continuity:
assay sweep on
That is the observability switch. Every 30 minutes it:
  1. Captures each first-party harness whose root exists.
  2. Retrieves product, scope, and objective facts already in the store.
It does not call a model. assay sweep off unloads the timer. Windows: the config flips and the command to schedule is printed. No fake job is installed.

5. Turn on labelling (corpus)

If Assay is tracking your work with AI:
assay labelling on
That is a consent moment. Assay uses the AI you already pay for (a harness CLI on PATH, or an API you named in config). It refuses to turn on if it cannot find one. It does not buy a second model. on also installs a clean-exit hook so a sitting can be placed when it ends. See Labelling. If Assay is only metering someone else’s agent loop, skip this. Sweep without labelling is the observability path.

6. Name your products (optional)

A product is a business fact Assay cannot infer. Add a products block when two folders are one product, or when you want named groups. Without that block, each workspace folder is its own product. The feature still works. See Products and Config.

Standing commands after that

WhenCommand
Look at spendassay show · assay dashboard
Find a conversationSearch in the console, or assay search "…"
Place sittingsassay unplaced · assay labelling run
Check pricesassay pricing check
Export costassay export --focus
Do not run a remote judge over full conversation text unless you opt in on the command that does it. The default labelling path uses your own AI locally through the harness you already run.