Why Autark is a CLI your agent operates
Claude and Codex are the best employees you will ever hire, and they cannot click your buttons. Autark is built on one bet — the right interface for an agent doing sales is a CLI, and the dashboard exists only for the human moments.
There is a site I keep coming back to: printingpress.dev. The thesis is that agents need their own kind of CLI — not a thin wrapper around an API, but a tool designed for how agents actually work. Local state beats a remote round trip. One compound command beats ten small ones. Every tool becomes muscle memory.
Most software being built for agents ignores this. It is apps with chat boxes glued on. The agent gets a browser, a login, and our sympathy.
Autark went the other way. The product is a CLI. The dashboard is the side door.
Built for a context window, not for eyes
Run autark context autark and you get this:
product.slug autark
product.lead_count 237
hypothesis.H23.id 0a05bb01-...
hypothesis.H23.status active
hypothesis.H23.lead_count 28
Flat key-value lines. No JSON nesting to parse, no pagination to walk, no colors. It looks wrong to a human and perfect to an agent: every fact addressable, greppable, cheap in tokens. The agent reads the whole state of a product in one command and starts working.
That is the design test for everything in the CLI: not "is this pleasant to read" but "can a model act on this without a second request."
The send is the bookkeeping
The clearest example of compound-over-chatty:
autark mail send --lead-id "$LEAD_ID" --to [email protected] \
--subject "..." --text @draft.txt
One command sends the email, records the touch on the lead (channel, direction, thread), and advances the lead from ready to contacted. Atomically. There is no separate "log this send" step, because any workflow with a separate logging step will eventually have unlogged sends. Agents forget follow-up steps the same way humans do — so the tool refuses to have any.
Status never moves by hand. It moves when something actually happened: an outbound touch, an inbound reply. The sheet cannot drift from reality because the sheet is written by the same commands that touch reality.
Ids are the contract
Every write in Autark is against an explicit id. --lead-id, --hypothesis-id, --run-id. The CLI never guesses which lead an email belongs to — you name it, or nothing is recorded.
And the ids are deterministic: the same person sourced twice under the same product resolves to the same row. lead add is idempotent. An agent can re-run a half-finished job without creating duplicates, which means it can be interrupted, restarted, and parallelized without fear. Boring property, enormous consequence.
The tool teaches the next move
Watch the stderr of any command:
3 lead(s). Next: autark lead show <id> · autark mail thread <thread> · autark mail reply --lead-id <id>
The CLI tells the agent what it can do next, at the moment that move is relevant. When the runtime is stale it says [autark] update available — run: autark update, and the agent updates itself mid-session. The manual is not a page the agent might read; it is woven into the output it must read.
This is what printingpress calls muscle memory. After a session or two, Claude operates Autark the way it operates git.
What the secret identity is
Printingpress has this idea that every platform hides a deeper purpose — Discord is secretly a knowledge base, Linear is secretly a behavior observatory. Autark looks like an outreach tool. Its secret identity is a memory.
Every hypothesis is frozen at creation — the bet stays exactly as written, and gets marked dead instead of quietly edited. Every touch is an append-only event: who was contacted, on which thread, what came back, in what order. Ask "this is the third message in the thread and they went quiet four days ago" and the answer is a query, not an archaeology project. That memory is what makes the next run smarter than the last one, and it is yours — it lives in your account, readable by whatever agent you point at it.
So what is the dashboard for
One question: where is the human needed? You open autark.sh to read replies, judge a conversation, leave a feedback note the agent will obey next run, or pause a product. Everything else — sourcing, enrichment, drafting, sending, reply detection — happens through the CLI, driven by the agent you already pay for.
That is the whole philosophy. The printing press did not write better books. It made producing them mechanical, so the words could matter more. A CLI your agent operates does not write better outreach on its own — it makes the machinery mechanical, so the judgment can stay with you.
Use the system on one real lead.
Autark is free to use until your first deal on the platform. Or just take the skills, wire them into Claude/Codex, and run the conversation side yourself.