Skip to content

cjus/solrac

Solrac

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.

Why Solrac

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.

Quick start

Packaged binary (macOS/Linux):

curl -fsSL https://cjus.dev/solrac/install.sh | sh

From source (Bun required):

git clone https://github.com/cjus/solrac.git
cd solrac && npm install && cp .env.example .env
npm run dev

Need 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.

Documentation

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

Contact

Open issues against this repository. Project owner: @cjus.

About

Self-hosted Claude-Code-style Agent over Telegram (Bun runtime)

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages