rho

rho

An AI agent that stays running, remembers across sessions, and checks in on its own. macOS, Linux, Android. Built on Pi.

Stars: 142

Visit
 screenshot

Rho is an AI agent that runs on macOS, Linux, and Android, staying active, remembering past interactions, and checking in autonomously. It operates without cloud storage, allowing users to retain ownership of their data. Users can bring their own LLM provider and have full control over the agent's functionalities. Rho is built on the pi coding agent framework, offering features like persistent memory, scheduled tasks, and real email capabilities. The agent can be customized through checklists, scheduled triggers, and personalized voice and identity settings. Skills and extensions enhance the agent's capabilities, providing tools for notifications, clipboard management, text-to-speech, and more. Users can interact with Rho through commands and scripts, enabling tasks like checking status, triggering actions, and managing preferences.

README:

rho

@tau_rho_ai

An AI agent that stays running, remembers what you told it yesterday, and checks in on its own. Runs on macOS, Linux, and Android.

Your data stays on your device. No cloud for your memories. Bring your own LLM provider. You own everything.

Built on pi coding agent.

Rho demo

Quick start

macOS / Linux

git clone https://github.com/mikeyobrien/rho.git ~/projects/rho
cd ~/projects/rho && ./install.sh

Prerequisites: Node.js (18+), tmux, git. The installer checks and tells you what's missing.

Android (Termux)

Install Termux and Termux:API from F-Droid, then:

curl -fsSL https://runrho.dev/install | bash

Or step by step:

pkg install nodejs-lts tmux git
npm install -g @mariozechner/pi-coding-agent
git clone https://github.com/mikeyobrien/rho.git ~/projects/rho
cd ~/projects/rho && ./install.sh

iPhone / iPad (via SSH)

Rho runs on a server you SSH into. Use Termius or any SSH client.

# On your server (VPS, home machine, or free Oracle Cloud instance):
git clone https://github.com/mikeyobrien/rho.git ~/projects/rho
cd ~/projects/rho && ./install.sh
rho login && rho start

# On your iPhone: connect via SSH, then:
rho start --foreground

Full guide: docs/iphone-setup.md, including Termius config, Tailscale for home servers, and free VPS options.

Run

rho start --foreground   # Start and attach
rho start                # Start in background
rho status               # Is it running?
rho trigger              # Force a check-in
rho stop                 # Stop

Inside a session:

/rho status           Show heartbeat state
/rho now              Trigger check-in immediately
/rho interval 30m     Set check-in interval
/rho enable/disable   Toggle heartbeat

What it does

The heartbeat checks in periodically (default: every 30 min). Each check-in reads your ~/.rho/RHO.md checklist and ~/.rho/HEARTBEAT.md scheduled tasks, runs what needs running, and reports back.

The brain persists across sessions. Learnings, preferences, and context accumulate in ~/.rho/brain/.

Agent email gives your agent a real email address at [email protected]. People and services can email your agent directly. The agent polls its inbox, reads messages, and can reply. Free tier gets receive + 1 outbound email per hour. Register with:

Ask your agent: "Set up my agent email at <name>@rhobot.dev"

Or use the /email command once registered:

/email check        Poll inbox for new mail
/email list         Show unread messages
/email send <to> <subject>   Send a quick email

Skills are capability packages the agent loads on demand. The installer detects your OS and installs the right ones. Notifications, clipboard, and text-to-speech work on every platform. Android gets SMS, speech-to-text, camera, GPS, and Tasker automation on top of that.

Skills

Skill Android macOS Linux Description
notification System notifications
clipboard Clipboard read/write
tts Text-to-speech
open-url Open URLs and apps
sms Read and send SMS
stt Speech-to-text
media Audio, camera, recording
location GPS/network location
contacts Contact lookup
device Battery, torch, vibration
dialog Interactive input dialogs
tasker-xml Create Tasker automations
rho-cloud-onboard Register an agent email address
update-pi Update pi to latest version

Extensions

Extension Platforms Description
rho/ All Heartbeat, memory, tasks, and vault tooling
brave-search/ All Web search via Brave API
x-search/ All X (Twitter) search via xAI Grok (x_search)
memory-viewer/ All Browse and search memories
usage-bars/ All Token/cost usage display
moltbook-viewer/ All Moltbook post viewer
email/ All Agent inbox at [email protected]
vault-search/ All Full-text search over the vault (FTS + ripgrep fallback)
tasker.ts Android UI automation via Tasker

Skills vs extensions

Skills are markdown files. The agent reads them and follows the instructions using its built-in tools (bash, read, write, edit). No code runs. Think of them as runbooks. They're compatible with Claude Code and Codex too, since they follow the Agent Skills spec.

Extensions are TypeScript that runs inside pi's process. They register new tools the LLM can call, hook into lifecycle events, persist state, add commands, and build custom UI. The heartbeat, the brain, and the vault are all extensions.

If the agent can already do it and just needs to know how, write a skill. If you need code running to make it possible, write an extension.

Customize

RHO.md

Your checklist. The heartbeat reads this on every check-in.

# RHO Checklist

## Quick Scan
- [ ] Any unread notifications?
- [ ] Battery below 20%?

## Active Work  
- [ ] Check build status on ~/projects/myapp

## Recurring
- [ ] Run ~/backup.sh every 6 hours

HEARTBEAT.md

Time-based triggers.

# Heartbeat Tasks

## Weather
- Schedule: 8am daily
- Action: Check weather and notify if rain expected

## Journal
- Schedule: 9pm daily
- Action: Write daily journal entry to ~/.rho/vault/log/

SOUL.md

Your agent's voice and identity. Who it is, what it cares about, how it talks.

Lives at ~/.rho/SOUL.md.

Brain

Lives at ~/.rho/brain/:

  • core.jsonl -- Behavior, identity
  • memory.jsonl -- Learnings and preferences (grows over time)
  • context.jsonl -- Project-specific context
  • memory/YYYY-MM-DD.md -- Daily memory log

Use the memory tool or /brain command to interact with it.

Tasker setup (Android, optional)

For UI automation (reading screens, tapping elements, controlling apps):

  1. Install Tasker and AutoInput
  2. In Tasker: long-press home icon > Import Project > select tasker/Rho.prj.xml
  3. Enable the imported profiles

Optional (screenshot without permission dialog):

# Enable wireless ADB in Developer Options, then:
adb pair <ip>:<port> <pairing-code>
adb connect <ip>:<port>
adb shell appops set net.dinglisch.android.taskerm PROJECT_MEDIA allow

Project structure

rho/
├── cli/                     # Node.js CLI (rho init/sync/doctor/upgrade/...)
│   ├── index.ts
│   ├── config.ts
│   ├── registry.ts
│   ├── sync-core.ts
│   ├── doctor-core.ts
│   ├── daemon-core.ts
│   └── commands/
├── templates/               # Default ~/.rho/*.toml templates
│   ├── init.toml
│   └── packages.toml
├── extensions/              # Core pi extensions (loaded via pi package entry)
│   ├── brave-search/
│   ├── email/
│   ├── memory-viewer/
│   ├── moltbook-viewer/
│   ├── rho/
│   ├── usage-bars/
│   ├── vault-search/
│   └── lib/                  # shared modules (NOT an extension)
│       └── mod.ts            # barrel exports (do not name this index.ts)
├── skills/                  # Core skills (loaded via pi package entry)
│   ├── memory-clean/
│   ├── vault-clean/
│   ├── rho-cloud-email/
│   ├── rho-cloud-onboard/
│   ├── session-search/
│   ├── update-pi/
│   └── rho-onboard/
├── platforms/               # Platform-only local skills/extensions installed by install.sh
│   ├── android/
│   │   ├── extensions/      # tasker.ts
│   │   ├── skills/          # notification, clipboard, sms, stt, tts, ...
│   │   └── scripts/bin/     # stt, stt-send
│   ├── macos/
│   │   ├── skills/          # notification, clipboard, open-url, tts
│   │   └── setup.sh
│   └── linux/
│       ├── skills/          # notification, clipboard, open-url, tts
│       └── setup.sh
├── configs/                 # Configuration files
│   └── tmux-rho.conf        # SSH-friendly tmux config (used by rho's tmux socket)
├── brain/                   # Default brain files
├── tasker/                  # Importable Tasker profiles (Android)
├── bootstrap.sh             # Universal installer (curl | bash)
├── install.sh               # Cross-platform installer (platform extras + rho init/sync)
├── AGENTS.md.template       # Agent operating principles
├── RHO.md.template          # Check-in checklist
├── HEARTBEAT.md.template    # Scheduled tasks
└── SOUL.md.template         # Personality/voice

Configuration

Doom-style config lives in:

  • ~/.rho/init.toml (modules + settings)
  • ~/.rho/packages.toml (third-party pi packages)

install.sh installs the rho command on your PATH (typically $PREFIX/bin on Termux or ~/.local/bin on macOS/Linux).

After editing either file, run:

rho sync

Adding a platform

  1. Create platforms/<name>/skills/ with SKILL.md files for the platform
  2. Optionally add platforms/<name>/extensions/ for platform-specific extensions
  3. Optionally add platforms/<name>/setup.sh to check/install dependencies
  4. Add a detection case in install.sh (detect_platform function)
  5. Submit a PR

Environment variables

BRAVE_API_KEY="..."     # For web search (optional)

Links

For Tasks:

Click tags to check more tools for each tasks

For Jobs:

Alternative AI tools for rho

Similar Open Source Tools

No tools available

For similar tasks

For similar jobs