Rho
An always-on personal AI operator that persists across sessions, remembers context, and checks in proactively — controlled via terminal, web UI, Telegram, and email.
- Source repo
- mikeyobrien/rho
- Stars
- ★ 371
- Last updated
- 3d ago
- License
- MIT
- Primary language
- TypeScript
- FA score
- Insufficient evidence
At a glance
- How it runs
- Works with
- Universal · cross-platform
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- An individual who wants reminders and tasks to survive between sessions, kept alive by scheduled heartbeats
- Not a fit if
- Users wanting a turnkey hosted cloud service
- Users on Windows with no native support
- Users who don't want to manage their own model provider keys
- Source review
- Insufficient evidence 8 safety controls not found
What does this agent do, and when should you use it?
Rho (GitHub: mikeyobrien/rho, MIT licensed) is a background-resident personal AI operator built to fix the statelessness of ordinary chat tools, where context dies when the tab closes. Its core modules are a Heartbeat daemon that performs autonomous check-ins every 30 minutes by default, a Brain (append-only brain.l structured memory), and a Vault (markdown knowledge graph under ~/.rho/vault/), all built on top of the pi coding agent. You interact with it through a CLI, a built-in web UI at localhost:3141 (chat with streaming, session forking, memory editing, task management, and /review line-level code review), a Telegram adapter with allowlisting, and an agent email inbox at [email protected]. Memory and configuration stay on your machine under ~/.rho/, and model providers are supplied by you via rho login. It runs natively on macOS, Linux, and Android (Termux); iPhone/iPad connect via SSH to a remote instance, and the native Android wrapper offers explicit Idle and Live background modes.
After install, rho init creates config in ~/.rho/, rho sync syncs that config to pi, rho login authenticates your providers through pi, and rho start launches the background heartbeat daemon. The Heartbeat fires autonomous check-ins on a configurable interval (default 30m, adjustable via /rho interval 30m); the Brain appends behaviors, preferences, and learnings to brain.l, which you can inspect, search, and edit with /brain; /vault inbox surfaces captured knowledge items. The web UI is served by Hono routes with no-build browser JS and streams chat over live RPC/WebSocket. The Telegram adapter polls messages behind an allowlist plus moderation flow; the email agent polls, reads, and replies through [email protected]. rho doctor runs health checks, rho trigger forces an immediate heartbeat, and rho logs shows recent heartbeat output.
- An individual who wants reminders and tasks to survive between sessions, kept alive by scheduled heartbeats
- A developer wanting a coding copilot that remembers preferences and past decisions, with /brain to inspect and edit what was learned
- A mobile user who wants to issue prompts to their agent from Telegram at any time
- Anyone wanting an agent-run email inbox ([email protected]) that polls, reads, and replies
- An Android power user using Live Mode to keep long streaming responses alive while the phone is locked
- A self-hoster deploying rho on a VPS as a browser control panel for chat, memory, tasks, and config
How do you install or deploy this agent?
Prerequisites: Node.js 18+, tmux, git. Recommended 2-minute quick start:
bash
npm install -g @rhobot-dev/rho
rho init && rho sync
rho login && rho startrho
Or via a pi package install:
bash
pi install npm:@rhobot-dev/rho
rho init && rho sync
rho login && rho startmacOS/Linux installer script:
bash
git clone https://github.com/mikeyobrien/rho.git ~/.rho/project
cd ~/.rho/project && ./install.shAndroid: install Termux and Termux:API from F-Droid first, then:
bash
curl -fsSL https://rhobot.dev/install | bashiPhone/iPad: no local install — run rho on a server/VPS and connect with Termius or any SSH client (see docs/iphone-setup.md).
How do you use this agent?
Start and attach an interactive session, then use:
bash
rho status # daemon + module health
rho trigger # force a heartbeat now
rho doctor # health + config checks
rho logs # recent heartbeat output
rho config # show effective config
rho web --open # start web UI and open browserIn-session slash commands:
text
/rho status # heartbeat state
/rho now # immediate check-in
/rho interval 30m # set check-in interval
/brain # open memory viewer
/vault inbox # captured vault items
/skill run pdd # planning workflowThe web UI defaults to http://localhost:3141 with chat, session forking, memory editing, task management, and /review line-level code review.
What are this agent's strengths and limitations?
- Observable persistent memory: /brain lets you inspect, search, and edit what the agent has learned instead of treating it as a black box
- Proactive heartbeat: autonomous check-ins every 30m by default, unlike passive stateless chat tabs
- Multi-surface control: terminal, web UI, Telegram, and email all operate the same agent
- Local-first with BYO provider: memory and config stay on your machine, no hosted memory backend
- Lightweight web stack: no frontend bundler, Hono routes with WebSocket streaming updates
- You must configure and pay for your own model provider (via pi's rho login); no hosted model included
- Windows has no native support; iPhone/iPad only work via SSH to a remote instance
- On Android, if the optional node-pty native module can't build, the embedded web terminal drawer is disabled
- Live Mode increases battery/network usage with a persistent foreground notification; Idle mode can drop background streams
- Requires a terminal toolchain (tmux etc.), so setup is more involved than a one-command app
How does this agent compare with similar options?
The README positions rho against OpenClaw and nanobot: rho emphasizes a built-in operator workspace with stronger memory observability and a lightweight no-build stack (chat, learned-memory inspection/editing, tasks, config, review); OpenClaw focuses on a Gateway Control UI plus WebChat control plane; nanobot's README primarily emphasizes CLI and channel gateway flows.
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| Rho This agent | Insufficient evidence | CLIFree + model costs | ★ 371 | 3d ago | TypeScript | — |
| Iva Personal Assistant | 85 · Good | Chat botFree + model costs | ★ 228 | 1d ago | TypeScript | ChatGPT · Codex |
| LISA Autonomous Personal Assistant | 59 · Major gaps | CLIFree + model costs | ★ 175 | 1d ago | TypeScript | Codex · Claude Code · OpenAI API · Claude API |
| GAIA — Personal AI Assistant | 73 · Some gaps | Hosted serviceFreemium | ★ 305 | 5d ago | Python | — |
How does FollowAgents rate this agent?
- Not found in source: least-privilege scopingGrant only what the task needs: a dedicated account or read-only token, scoped to specific directories and repos.
- Not found in source: confirmation before actingTurn on (or add) a confirmation step before it acts, and try it in a sandbox or test environment before real data.
- Not found in source: data-flow disclosureWatch which external services it contacts (proxy or firewall logs) and keep sensitive data out until you know where it goes.
- Not found in source: sensitive-data handlingUse dedicated, low-privilege, revocable API keys — never production credentials — and keep secrets out of logs.
- Not found in source: dependency securityPin versions and run a dependency audit (npm audit, pip-audit) before installing; prefer running it in a container.
- Not found in source: disclosed external effectsEstablish which external systems it writes to, sends to or changes, and verify with test accounts or repos before production.
- Not found in source: rollback or recovery pathBack up first, or work on a git branch or snapshot, so its changes can be undone.
- Not found in source: verifiable attributionInstall from the official repo or registry and check the publisher and URL to avoid look-alike packages.
- No source files were attached to this review, so the results do not reflect the actual repository; rerun the FARS-2.1 assessment once README, code, LICENSE, and supporting files are supplied.