A self-hosted agent platform. Single Go binary. Multi-LLM (Claude, GPT, Ollama). Encrypted local vault for credentials. Sandboxed skills. Hash-chained audit log. Scheduled tasks. Native Mac menu-bar app. No cloud, no telemetry, no accounts.
Two ways. Both write to your machine and nowhere else.
# macOS / Linuxbrew
$ brew install darklake-ai/fathom/fathom
$ fathom init --global
$ fathom
Updates ride your normal brew upgrade.
# macOS / Linux
$ curl -fsSL https://fathom.darklake.ai/install.sh | sh
$ fathom init --global
$ fathom
Downloads the matching binary into ~/.local/bin/.
Every box is real code, in the repo, today.
Claude, OpenAI, Ollama. The agent loop is provider-agnostic — switch in one line. Run Ollama for offline; switch to Claude for the heavy lift; never refactor a tool call.
Credentials live in an encrypted file unlocked by your OS keychain or a passphrase. The egress proxy injects them into outgoing requests at proxy-time — skills never see the raw token.
Every tool call, every LLM round-trip, every policy decision — written to an append-only log where each entry hashes the previous one. Tamper with one row, the chain breaks visibly.
Cron-style recurring agent runs. "Every weekday at 9am, summarize my unread GitHub notifications and DM me the rollup." Persisted across reboots; delivered through any wired channel.
Gmail, Calendar, GitHub, Slack, Discord, WhatsApp, Telegram. Each runs in its own subprocess with declared capabilities and scoped vault access. Add your own — it's a manifest plus a TypeScript file.
Click the iceberg. Chat with your agent. Dictation via on-device Speech. ⌘⇧Space from anywhere. Auto-update via Sparkle. Zero external dependencies — ~600 lines of Swift.
~600 lines of Swift. AppKit + SwiftUI + system frameworks only — no Electron, no React Native, no Catalyst. Lives in your menu bar where you already are.
⌘⇧Space global hotkey from any appFork it for yourself. Layer in team features when you need them. Same code, same install.
A chat brain that runs on your laptop and talks to your phone. The default install.
fathom init
fathom init --minimal for the lean chat-brain build — skips scheduler, threads, audit log. Boots in ~150ms.Everything in Personal, plus multi-user. Same binary — flip a flag.
fathom init --team
Team features plus the compliance surface auditors actually ask for.
fathom init --enterprise
Switch modes by editing one line in fathom.config.yaml and restarting — no migrations, no separate downloads.
Open source. Local-first. No accounts. No telemetry. No vendor lock-in.