Sam is a humble, reliable partner — one backend that hosts an AI, and several clients (Discord, desktop, iPhone) that are all views onto the same conversations. You run it on your own machine, your data stays local, and the assistant follows you around instead of living behind someone else’s login.
Why it exists
Most “personal AI” products are really someone else’s AI with your data pooled inside it. I wanted the opposite: a single assistant I actually own, that remembers me across conversations, that I can reach from whatever device I happen to be holding, and that I can extend without asking permission. Sam is that assistant.
What’s in the box
- One agent, many channels — a Bun + TypeScript backend speaks Discord, a desktop app, and an iOS app at the same time.
- Pulse — give Sam a long-running goal and it checks in on a schedule, making progress without being babysat.
- Persistent memory — facts, preferences, and context survive across conversations.
- Skills and kits — Markdown playbooks that teach Sam new tasks, and self-contained mini-apps with their own UI.
- Live artifacts — HTML/Markdown reports, dashboards, and small apps rendered inside the desktop and iOS clients.
- Your data, your folder — everything lives under
~/.sam/as plain files you can back up, move, or delete.
How it’s built
- Agent — Bun + TypeScript, built on top of pi-mono by Mario Zechner.
- Desktop — Tauri 2 + React, cross-platform (macOS, Windows, Linux).
- iOS — native SwiftUI, iOS 17+.
- Transport — WebSocket on port 9222 between agent and clients; Discord via bot token.
- State — sessions as JSONL, memory as Markdown, all under
~/.sam/.
Design principles
- Local by default. Your conversations, memory, and workspace live on your machine. Remote access is opt-in.
- One assistant, many faces. Desktop, phone, and Discord are different windows into the same Sam — not three disconnected bots.
- Extensible without a platform. Drop a Markdown file into
skills/and Sam knows something new. No plugin store required. - Boring where it matters. Plain files, readable configs, a single long-lived process — nothing clever where clever would hurt you.