Archon · Operator Guide

Driving Archon with the Companion & Terminal

Archon is a lead-enrichment workbench. You build a table of companies or people, then fill in columns by running AI and enrichment tools across the rows. The way we drive it is the Terminal — the Claude Code CLI, wired to your live table. You talk to it in plain English; it runs the work. (The old Companion panel still exists, but we're moving off it.) This guide is Terminal-first.

0The mental model

Two things in this app are both called by familiar names. Untangle them once and the rest is easy.

Table  the data

A spreadsheet that lives in Archon: rows (one company/person each) × columns (enrichment steps). You build it and fill it in. The inherited-mess table with a 3 badge = a table with 3 rows.

Campaign  the robot

A full automated run driven by the gtm-orchestrator engine: find leads → enrich → segment → write copy → launch. It pauses at checkpoints for your approval. The card showing 04d-enrich-contact · IN-PROGRESS · $0.00 is a campaign mid-flight.

A column is a step, and its type decides what runs when you hit Run:

inputai tooltransform cloud

  • input — data you typed or imported (company name, domain).
  • ai — runs an LLM prompt per row (Claude / OpenAI / OpenRouter).
  • tool — calls an enrichment API per row (find email, scrape site, Apollo…).
  • transform — cheap local cleanup (first name, domain-from-email).
  • cloud — offloads heavy work to the Trigger.dev cloud.

Every cell (row × column) goes pending → running → complete and accrues a tiny cost. The dollar figure you see is the running total.

1The window, mapped

Three regions. Left = what you have. Center = what you're looking at. Right = how you drive.

Clients
leadgrow ▾
Tables
inherited-mess  3
Templates
Company Enrichment
ICP Scoring
Hiring Signal
inherited-mess
leadgrow
IN-PROGRESS
04d-enrich-contact$0.00

↑ a Campaign card (the engine). Click a Table on the left to edit the grid instead.

CompanionTerminalDAGClientsCell
Claude Code
Claude Code v2.1.196
Opus 4.8 (1M) · Claude Max
~/companion/…
Right-panel tabs: Companion = chat with Claude · Terminal = a real shell · DAG = column dependency graph · Clients = sync orchestrator clients · Cell = inspect one cell's input/output/cost.

2The one golden rule

Pick a client, then click a table — before you open the Terminal.

The table you select is what the Terminal acts on. When it launches, Archon hands Claude Code the database path and the active table id (ARCHON_DB + ARCHON_WORKFLOW), so archon context already points at the right table. Switch tables in the UI and the Terminal re-attaches to the new one. No table selected → the agent has nothing to read or write. So the first move, every session: Clients ▾ → a Table.

AThe Terminal — how we drive Archon

The Terminal tab is not a bash prompt. It launches the Claude Code CLI (claude) directly, running inside the gtm-orchestrator checkout and wired to the table you have open. You talk to it in plain English; it does the work. This is the default way to use Archon.

What's wired up for you

  • Your selected table — the active table id is passed in (ARCHON_WORKFLOW), so archon context already targets it. Switch tables in the UI → the Terminal re-attaches.
  • The same database the app uses (ARCHON_DB) — anything the agent writes shows up live in the center grid, and vice-versa.
  • The archon CLI on PATH — the agent's tool for reading and writing the table, running enrichment, and clearing gates. Run archon help to see every verb.
  • The orchestrator playbook — the checkout's own CLAUDE.md, skills, and slash-commands are loaded, so the full GTM workflow is available, not just table edits.
You ask; it runs. You don't type archon commands yourself — you describe the outcome and Claude Code picks the calls, shows each one, and runs them. The verbs below are what it uses under the hood (and what you'll see scroll past).

The enrichment flow

However you phrase it, a run walks the same path. Either start from a recipe (columns pre-built) or have Claude design them with the plan flow, then run and clear any gate:

  1. archon context — read the table: name, columns, row count, a sample. Always first.
  2. archon table create … --recipe company-enrichment or archon plan contextplan propose --jsonplan apply — get the enrichment columns in place (the plan flow is the same engine as the old "Build columns" button).
  3. archon run --scope all --now — execute every cell. --scope sample tries a few first; estimate prices it before you commit.
  4. archon gate approve <file> --signature YOU — clear any checkpoint the engine raised.

The full archon surface

From archon help — the real verb list:

archon help
archon context                                  # table, columns, row count, sample rows
archon clients | client create --name N
archon tables | table create --client <id> --name N [--recipe <id>]
archon recipe list                              # company-enrichment, icp-scoring, competitor-scan, hiring-signal…
archon rows list [--limit N] | rows read <rowId> | rows add --data '{"col":"v"}'
archon cell write <rowId> <colId> <value>
archon column add --name N --type input|function|tool [--tool id --params '{"p":"colId"}']
archon plan context | plan propose --json '<spec>' | plan apply <draftId>   # design ai/tool/waterfall columns
archon run [--scope all|pending|sample] [--n N] [--now]      # the Run button
archon estimate [--scope ]                          # pre-run cost in cents
archon expand --source-col <id> --target <wf> --field-map '{item:col}'   # JSON array → one row each
archon tool list | tool add <file.json> | tool test <id> --params '{…}'
archon gate list | gate show <file> | gate approve/reject <file> --signature YOU
Adding columns: column add is for simple input/function/tool steps. For ai or multi-provider waterfall columns, use a --recipe or the plan flow — that's what wires the prompt, model, and inputs correctly.

BEnd-to-end: enrich inherited-mess

The table has 3 rows and one Company column. Goal: add a domain, a one-line description, and a decision-maker email, then run it. You select the table in the UI, open the Terminal, and say what you want — here's the conversation that follows:

Claude Code
> enrich this table: add each company's domain, a one-line description,
  and a decision-maker email — then run all 3 rows

Reading the table first.
⏺ archon context
 "inherited-mess" · 3 rows · columns: Company

I'll design the columns with the plan flow, then apply and run.
⏺ archon plan context                       # entity fields + the real tool ids
⏺ archon plan propose --json '{ "columns": [ … ] }'
 draft d1a2 — Domain (tool), Description (ai), Email (waterfall) · est $0.07
⏺ archon plan apply d1a2                     # instantiates the columns (expands the waterfall)

Columns are in. Running every row now.
⏺ archon run --scope all --now
 3 rows · 9 cells · complete · $0.07

Done. The engine raised a checkpoint for the contact stage — approve it?
> yes, sign it Mitchell
⏺ archon gate approve .checkpoints/04d-enrich-contact.json --signature Mitchell
 gate cleared

You typed two English sentences; Claude Code did the rest. The grid in the center fills in live as each cell completes.

Shortcut: if a starter recipe already fits, skip the plan flow — just say "build this from the company-enrichment recipe and run it," and it runs archon table create … --recipe company-enrichment then archon run.

CThe Companion — the old panel legacy

The Companion is the same agent in a graphical panel instead of the Terminal. It still works, but we're standardizing on the Terminal — so reach for it only if you specifically want the GUI affordances below.

What the panel adds over the Terminal:

  • Model pickerOpus 4.8 · 1M (default), Sonnet 4.6, Haiku 4.5.
  • Approval modesAuto (hands-off) · Approve writes & exec · Approve everything.
  • Build columns button → a Plan Review card with checkboxes; Apply adds the columns and auto-runs the first 10 rows. (Same plan propose/apply engine the Terminal uses.)
  • Permission cards — Allow · Allow always · Deny · Deny + tell agent — plus a live % context and $ spent readout.

Everything here is reachable from the Terminal by just asking — which is why it's the default now.

DWhich surface to use

You want to…Use
Enrich a list, design columns, run, clear gates — anythingTerminal — the default
The orchestrator's skills / slash-commands & full GTM workflowTerminal (it's the gtm-orchestrator checkout)
Tweak one value, sort, or eyeball dataThe center grid directly
Approve a running campaign's gate visuallyCampaigns view → checkpoint card
See what feeds what before runningDAG tab
A GUI plan-review card / model & approval-mode dropdownsCompanion (legacy)

ECheat sheet

Say it in the Terminal

  • "What's in this table?"
  • "Design columns to enrich these companies and run them."
  • "Build this from the company-enrichment recipe, then run."
  • "Find a [title] email for each row."
  • "Score each row against our ICP and explain."
  • "Estimate the cost before running."
  • "Drop rows missing a website, then run the rest."
  • "Approve the open gate, sign it [name]."

archon calls it runs for you

archon help lists them all — you'll see these scroll past:

archon contextinspect active table
archon recipe liststarter column chains
archon table create --recipe …new table, columns pre-built
archon plan propose/applydesign ai/tool/waterfall columns
archon estimateprice a run first
archon run --scope all --nowenrich everything
archon gate approve …clear a checkpoint
Remember: client → table → open the Terminal → say what you want. The table you selected is what archon acts on; the grid updates live; every cell costs a little and estimate prices it before you commit.