Saturn is a private, local-first AI agent that runs in your terminal. It plans its work in the open, calls tools to search the web, read and write your files, query your own documents, run commands, and remember things across sessions — and it shows you every step it takes, pausing for your approval before anything touches the outside world.
Inference runs entirely on local models through Ollama. No API key is required for anything: web search is keyless, page extraction is local, and there is no telemetry. Saturn is built by Saturday.ai and released under the MIT license.
::two guarantees
nothing leaves your machine
Local models by default, zero required keys, zero telemetry. The only ways anything can leave are a web search query, a page fetch, and the MCP servers you configured — and every exit is recorded in an egress ledger you can read (/privacy egress) or seal (/privacy airgap).
nothing happens without you
The plan is a live, editable object you can pause, steer, and rewrite mid-run. Every side effect stops at an approval gate that shows the real artifact of the decision — the full shell command, a colored diff of the proposed write. Every run can be replayed afterward (/trace), and file changes reversed (/undo).
::how a turn works
Every turn flows through a graph of small, inspectable steps:
ground → plan → [review?] → agent → [approval?] → tools → update plan → … → synthesize- –ground loads your profile, memory, and document/workspace manifests.
- –plan drafts a step-by-step plan — the transparency surface you can inspect and edit.
- –agent picks the next tool to call (or finishes) against a curated per-step context.
- –approval pauses for your OK before anything side-effecting runs.
- –tools run; results flow back so the agent can decide what's next. A judge reviews each step's outcome and can revise the remaining plan, bounded by iteration and replan budgets.
- –synthesize writes the final answer from what was actually gathered — with citations, and with every figure checked against the turn's results.
The plan is a first-class object: it both shows you what's happening and drives execution. Skipped, blocked, or failed steps are disclosed plainly in the answer, never papered over.
::prove it in 60 seconds
- 01Ask something that needs the web:
» what changed in local LLMs this week?The plan renders live; eachweb_search/web_extractcall shows in the rail as it runs. - 02Read the receipt under the answer. It says
⇅ N sends · <bytes> → <host>because something did leave your machine — the receipt says so instead of hiding it. - 03
/trace answer— answer-level provenance: each cited source's origin (local vs network) and trust, and what left the machine this turn. - 04
/privacy egress— the per-event ledger: exactly what left, channel / host / bytes. - 05Make it ask:
» save a two-line summary to notes.md. The gate shows the exact file diff and waits; bare Enter rejects. - 06
/trace exportwrites the run's complete record as JSON, andsaturn --replay <file>renders it offline — a shareable, replayable execution log, not a screenshot.
note
Saturn is a trust-first agent, not a general-purpose assistant racing on breadth. The terminal is the product — there is no GUI on the roadmap, by design.