::docs :: getting started

introduction

What Saturn is, the two guarantees it is built around, and how one turn runs through the loop.

Saturn is a private, local-first AI agent that runs in your terminal: a companion you can hand your day to. "Reply to Petra about Thursday." "Rename these photos by date." "Remind me to call the dentist tomorrow at 9." "Text Sam I'm 15 minutes late." It reads and writes your files, your notes, calendar, mail, contacts and reminders, searches the web, runs commands, and remembers things across sessions. You see every step it takes, and it stops for your approval before anything changes or leaves the machine.

Inference runs entirely on local models through Ollama. Nothing needs an API key: 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, zero required keys, zero telemetry. Saturn itself can only reach the network through a web search, a page fetch, a text you approve, the remote MCP servers you configured, or a remote Ollama you point it at. Every one of those is recorded in an egress ledger you can read (/policy egress) or seal (/policy airgap). Shell commands, Shortcuts, and stdio MCP servers are separate processes Saturn can't see inside, so each run is recorded as untracked rather than left out.

nothing happens without you

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 file write, the number and exact text of a message. Press Esc at any moment to pause the turn and continue, steer, or abort. Every run can be replayed afterward (/trace), and file changes reversed (/undo). Out of the box, the one write that skips the gate is a fact you state yourself ("I'm vegetarian"): it's remembered without asking, the answer ends with a remembered #N line, and /memory remove N undoes it. Turn that off with memory.auto_learn: false.

::how a turn works

Every turn is one loop of small, inspectable steps:

the loop
ground → agent ─(no tool calls)─→ answer
           ↑          │ tool calls
           └── tools ← approval
  • –ground loads your standing instructions (~/.saturn/SATURN.md and the folder's SATURN.md), today's date, the memory facts relevant to this request, and the knowledge-base manifest.
  • –agent makes one model call. It either calls tools or answers. A message without tool calls is the answer, and it streams as it's written. At the default thinking level (/think auto), a pass that is about to call a tool is thought through first, which costs a second call; a plain answer never waits on a thought.
  • –approval stops for your OK before anything that changes or sends something runs.
  • –tools run, and their results flow back so the agent can decide what to do next.

A chat question costs one model call. A lookup takes two passes: one to call the tool, one to answer. On a multi-step task the agent keeps a checklist with the plan tool, shown live in the rail. See the loop & steering.

::prove it in 60 seconds

  1. 01Ask something that needs the web: » what changed in local LLMs this week? Each web_search / web_extract call shows in the rail as it runs, with its result.
  2. 02Read the receipt under the answer. It shows ⇅ N sends · <bytes> → <host> in yellow because something did leave your machine. The receipt says so instead of hiding it.
  3. 03/policy egress shows the per-event ledger: exactly what left, by channel, host, and bytes.
  4. 04Make it ask: » save a two-line summary to notes.md. The gate shows the exact file diff and waits. Bare Enter rejects.
  5. 05/trace export writes the run's complete record as JSON, and saturn --replay <file> renders it offline. It's a real execution log you can share and replay, not a screenshot.

note

Saturn is trust-first and built for people who live in a terminal. The terminal is the product. There's no GUI chat window on the roadmap, by design.