An always-on personal AI operator that:
- stays running in the background,
- remembers context across sessions,
- and checks in proactively on a schedule.
Runs on macOS, Linux, and Android (plus iPhone/iPad via SSH).
Built on pi coding agent.
Most AI tools are stateless chat tabs. rho is built for ongoing operation.
- Persistent memory: durable context across sessions
- Memory observability: inspect, search, and edit what the agent has learned
- Proactive heartbeat: check-ins every 30m by default
- Local-first state: your memory and config stay on your machine
- BYO model/provider: use your own pi/provider setup
- Multi-surface control: terminal, web UI, Telegram, and agent email
Prerequisites: Node.js 18+, tmux, git
npm install -g @rhobot-dev/rho
rho init && rho sync
rho login && rho start
rhoThat gives you:
- initialized config in
~/.rho/ - authenticated provider access via pi
- background heartbeat daemon
- an attached interactive session
Run these after install:
rho status # daemon + module health
/rho status # heartbeat status (inside session)
/rho now # trigger immediate check-in
/brain # open memory viewer
/vault inbox # see captured knowledge itemsrho includes a browser workspace for day-to-day operation:
- chat with real-time streaming responses
- session browsing + forking from any message
- memory management (
/brainentries) - task management
- config editing (
~/.rho/init.toml) - line-level code review at
/review
- No-build web split: server logic in
web/*.ts, browser runtime inweb/public/js/*.js(no frontend bundler/transpile pipeline). - Lean server runtime: Hono-based routes with response compression enabled.
- Low-latency updates: live RPC/WebSocket streaming for chat responses.
- Push over poll where possible: server emits
sessions_changedUI events; client updates immediately. - Idle-aware behavior: polling pauses when the tab is hidden or user is idle, then resumes on activity.
- Render throttling for streams: markdown updates are debounced (150ms) to reduce UI churn during rapid token deltas.
- Session metadata caching: session info is cached by file
mtimeto avoid unnecessary re-reads.
rho web
rho web --port 4000
rho web --openThen open http://localhost:3141 (or your host IP).
| Project | Web experience emphasis |
|---|---|
| rho | Built-in operator workspace with stronger memory observability and a lightweight no-build stack (chat, learned-memory inspection/editing, tasks, config, review) |
| OpenClaw | Strong Gateway Control UI + WebChat control plane |
| nanobot | README primarily emphasizes CLI + channel gateway flows |
pi package install
pi install npm:@rhobot-dev/rho
rho init && rho sync
rho login && rho startmacOS / Linux (installer script)
git clone https://github.com/mikeyobrien/rho.git ~/.rho/project
cd ~/.rho/project && ./install.shThe installer checks missing dependencies and supports NixOS.
Android (Termux)
Install Termux and Termux:API from F-Droid, then:
curl -fsSL https://rhobot.dev/install | bashiPhone / iPad via SSH
Run rho on a server/VPS/home machine, then connect from iOS using Termius (or any SSH client).
Guide: docs/iphone-setup.md
| Use case | What rho does |
|---|---|
| Daily operator loop | Keeps reminders/tasks alive between sessions and runs periodic check-ins |
| Memory-backed coding copilot | Stores durable behavior/preferences/learnings, and lets you inspect/edit that learned state directly |
| Inbox agent | Gets name@rhobot.dev, polls, reads, and replies to email |
| Telegram-controlled agent | Receives prompts from Telegram and responds in-thread |
| Browser control panel | Web UI for chat, memory, tasks, and config |
- Heartbeat: scheduled autonomous check-ins
- Brain: append-only structured memory (
brain.jsonl) - Vault: markdown knowledge graph (
~/.rho/vault/)
- Email: agent inbox at
name@rhobot.dev - Telegram: polling adapter with allowlist + moderation flow
- CLI:
rho ...commands - Session slash commands:
/rho,/brain,/vault,/skill,/telegram,/email - Web UI: chat + memory/tasks/config in browser
- Your memory is local (
~/.rho/brain/brain.jsonl) - Your config is local (
~/.rho/init.toml,~/.rho/packages.toml) - Your providers are yours (
rho loginvia pi) - Telegram controls: allowlists and mention gating
- Email controls: sender controls + outbound policy limits
No hosted rho memory backend required.
rho # start and attach
rho init # initialize ~/.rho config
rho sync # sync rho config to pi
rho doctor # health + config checks
rho login # authenticate providers
rho start # start background daemon
rho stop # stop daemon
rho status # daemon/module status
rho trigger # force heartbeat now
rho logs # recent heartbeat output
rho config # show effective config
rho calc "2 + 2 * 3" # quick arithmetic calculator
rho upgrade # update and resync
rho skills <args> # skills provider wrapperInside a session:
/rho status heartbeat state
/rho now immediate check-in
/rho interval 30m set check-in interval
/rho enable/disable toggle heartbeat
/bootstrap status bootstrap lifecycle state
/brain memory operations
/vault inbox captured vault items
/skill run pdd planning workflow
/skill run code-assist implementation workflow
| Platform | Status | Notes |
|---|---|---|
| Linux | Supported | Native install + daemon + web UI |
| macOS | Supported | Native install + daemon + web UI |
| Android (Termux) | Supported | Extra mobile capabilities via platform skills |
| iPhone/iPad | Supported (SSH client) | Run rho remotely, connect via SSH |
- Demo walkthrough
- Telegram setup + troubleshooting
- iPhone/iPad setup
- VPS setup guide
- Skills providers (vercel + clawhub)
- Brain bootstrapping guide
- Configuration reference
Project structure and internals are intentionally modular:
cli/for command surface and daemon orchestrationextensions/for runtime tools/modulesskills/for portable markdown runbooksplatforms/for platform-specific installs/capabilitiesweb/for browser UI + RPC bridge
For full tree + extension/skill details, see current README.md and docs/.

