Local-first
Inference runs on your hardware via llama.cpp. No accounts, no cloud round-trips, no data leaving your machine by default.
Atomic Agent is an AI assistant you run yourself. It uses small, quantized language models through llama.cpp right on your laptop — so your files, your conversations, and your work never leave the machine unless you explicitly send them somewhere.
It does real work: browses the web, reads and edits files, runs shell commands, extracts text from documents, remembers things across sessions, and schedules tasks to run in the background. You drive it from a terminal UI, a CLI, an OpenAI-compatible HTTP API, or even Telegram.
Local-first
Inference runs on your hardware via llama.cpp. No accounts, no cloud round-trips, no data leaving your machine by default.
Private by default
Files, sessions, and memory live in a local SQLite store. Every egress point — browser, HTTP, cloud models, MCP, shell — is explicit.
No per-token fees
Run as many turns as you want. The only cost is the electricity your GPU draws.
Hackable all the way down
Add skills, wire up MCP servers, swap models, tune the prompt budget. Everything is inspectable and configurable.
Every turn runs the same tight loop: build a compact prompt, ask the model for tool calls, execute them, fold the results back into durable state, and repeat until the agent replies or finishes. A byte-stable prompt prefix keeps the KV-cache warm so each step stays cheap, and memory grows externally in SQLite instead of bloating the context window.
flowchart TD
User["User message<br/>or scheduled task"]
TC["TurnController<br/>per-session FIFO"]
Prompt["Prompt builder<br/>stable prefix + bounded tail"]
Model["llama.cpp / cloud model<br/>GBNF grammar"]
Calls["JSON tool calls<br/>1..N actions"]
Exec["Batch executor<br/>parallel reads, approval gates"]
Tools["Tools<br/>browser · files · shell · MCP"]
State["Durable state<br/>sessions · memory · tasks"]
Reflect["Reflection<br/>async, off the hot path"]
Reply["Reply / finish"]
User --> TC
TC --> Prompt
Prompt -->|KV-cache reuse| Model
Model -->|constrained JSON| Calls
Calls --> Exec
Exec --> Tools
Tools -->|compressed results| State
State -->|next step| Prompt
Exec -->|terminal call| Reply
Reply -.->|end of turn| Reflect
Reflect -.->|distill facts & notes| State
classDef hot fill:#e1f5ff,stroke:#0369a1,color:#0c4a6e;
classDef store fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20;
class Prompt,Model,Exec hot;
class State,Reflect store;
The model never sees a giant chat log. Conversation history is bounded and compressed, recalled memory arrives as compact pointers, and dangerous actions (shell, file writes, HTTP) pause for approval. Read more in Architecture and Local-first.