A self-hosted, hackable personal Agent: free local Ollama by default, Claude Sonnet/Opus on demand via Anthropic's Claude Agent SDK. Reach it from Telegram or a browser; own every audit row, permission rule, and budget cap.
Solrac is a single-process Bun agent that bridges Telegram (and an optional browser UI) to a local Ollama model, escalating to Claude Sonnet or Opus only when you explicitly ask. It was built as part of PNXStudios.com to manage a complex monorepo from anywhere — and, in doing so, to explore the mechanics of building a personal agent from first principles while enforcing hard cost controls and behavior auditing on every turn.
It's deliberately smaller and narrower than other personal-assistant projects:
- OpenClaw — Node/TypeScript "Gateway" daemon with macOS/iOS/Android companion apps, Voice Wake, Live Canvas, and ~25 inbound channels.
- Hermes Agent (Nous Research) — Python, multi-provider, self-improving agent with seven execution backends and broad transport (Telegram/Discord/Slack/WhatsApp/Signal/Email/CLI).
Both are broader and better-resourced. Solrac's distinct value:
- Local-LLM-first economics. No-prefix messages route to free Ollama;
@and!are paid Claude escalations only on operator intent. - Cost enforcement, not just visibility. Sliding hourly USD caps that deny turns when hit, plus a daily cost-report DM.
- Audit-before-acting. Every update (allowed, denied, queue-full) writes a row to one append-only SQLite table.
- Single-process minimalism. No HTTP framework, no Telegram framework runtime, no queue server, no Docker, no sub-agents. A few thousand lines of TypeScript you can read in an afternoon and fork.
If you need multi-tenancy, voice wake, mobile companions, or 25 chat platforms, use OpenClaw or Hermes. If you want a small, cost-capped, fully audited foundation you can bend to your shape, Solrac fits.
Packaged binary (macOS/Linux):
curl -fsSL https://cjus.dev/solrac/install.sh | shFrom source (Bun required):
git clone https://github.com/cjus/solrac.git
cd solrac && npm install && cp .env.example .env
npm run devNeed help with Bun, a Telegram bot, or an Anthropic API key? See docs/SETUP.md (~20 min walkthrough). Full install reference at docs/INSTALL.md.
| Doc | Audience | What it covers |
|---|---|---|
| docs/FEATURES.md | Everyone | Complete feature list, grouped by theme |
| docs/INSTALL.md | Operators | curl-pipe install, ~/.solrac/ layout, upgrade & uninstall |
| docs/SETUP.md | First-time users | Bun, Telegram bot, from.id, Anthropic key, first boot |
| docs/USAGE.md | Daily users | Concepts, interaction patterns, permission UX, cost cap, loop detector |
| docs/CONFIG.md | Operators | Full env-var reference |
| docs/ARCHITECTURE.md | Developers | Module map, data flow, concurrency, schema, policy, threat model, philosophy, anti-goals |
| docs/OPERATIONS.md | Operators | systemd deploy, /health & /stats, daily report, audit queries |
| docs/SCHEMA.md | Operators / debuggers | SQLite schema + query cookbook |
| docs/RUNBOOK.md | On-call | Incident recovery: cost runaway, drain timeout, db corruption, … |
| docs/GLOSSARY.md | Everyone | Solrac-specific terms |
| docs/ROADMAP.md | Maintainers | Open questions, deferred enhancements |
Open issues against this repository. Project owner: @cjus.
