| name | install-rho |
|---|---|
| description | Install and configure Rho from scratch (Doom-style init.toml + sync). Only prereq: a coding agent that can run shell commands. |
Rho is a persistent AI agent framework. It runs in tmux, checks in on a heartbeat, accumulates memory in a single brain.jsonl file, and manages a knowledge vault. This skill installs it from scratch.
Prerequisites: A coding agent that can run shell commands. That's it.
What gets installed:
- System deps (Node.js 18+, npm, tmux, git)
- pi coding agent (the runtime rho extends)
- rho (the agent framework)
- Config files in
~/.rho/(init.toml, packages.toml, brain.jsonl)
Time: ~5 minutes on a decent connection.
- agent_name (optional, default:
rho): Name written into~/.rho/init.toml. - heartbeat_interval (optional, default:
30m): How often the agent checks in. Written to[settings.heartbeat].interval.
Print OS, shell, and dependency versions. This determines the install path.
Constraints:
- You MUST print OS + shell + node version (if present).
- You MUST NOT assume Termux unless
$TERMUX_VERSIONis set.
uname -a
printf "SHELL=%s\n" "$SHELL"
command -v node >/dev/null && node -v || echo "node: missing"
command -v npm >/dev/null && npm -v || echo "npm: missing"
command -v tmux >/dev/null && tmux -V || echo "tmux: missing"
command -v git >/dev/null && git --version || echo "git: missing"
command -v pi >/dev/null && pi --version || echo "pi: missing"
command -v rho >/dev/null && rho --version || echo "rho: missing"Constraints:
- You MUST ensure: Node.js >= 18, npm, tmux, git.
- You MUST detect the platform and use the correct package manager.
- You MUST NOT blindly run
sudo apt install— detect the package manager first.
pkg update -y
pkg install -y nodejs-lts tmux gitbrew install node tmux gitDetect the package manager:
| Distro | Command |
|---|---|
| NixOS | Add to environment.systemPackages or nix-shell -p nodejs tmux git |
| Debian/Ubuntu | sudo apt update && sudo apt install -y nodejs npm tmux git |
| Arch | sudo pacman -S nodejs npm tmux git |
| Fedora | sudo dnf install nodejs npm tmux git |
If Node.js version is < 18, use NodeSource or nvm.
pi is the runtime that rho extends. Install it globally.
Constraints:
- You MUST install pi globally if
command -v pifails. - You MUST verify the install succeeded.
command -v pi >/dev/null || npm install -g @mariozechner/pi-coding-agent
pi --versionClone the repo and run the installer. The installer handles config bootstrapping, CLI setup, and brain initialization.
Constraints:
- You MUST clone to
~/.rho/project(the default path). - You MUST NOT clone if the repo already exists (pull instead).
- You MUST run
install.shfrom within the repo directory.
if [ -d ~/.rho/project/.git ]; then
echo "Rho repo exists, pulling latest..."
cd ~/.rho/project && git pull --ff-only
else
git clone https://github.com/mikeyobrien/rho.git ~/.rho/project
fi
cd ~/.rho/project && bash install.shThe installer will:
- Detect your platform
- Check/install remaining dependencies
- Install Node deps for the project
- Set up the
rhoCLI on your PATH - Run
rho init(generates~/.rho/init.toml,~/.rho/packages.toml, and brain.jsonl defaults) - Run
rho sync(writes pi'ssettings.jsonfrom your config)
If the user requested a non-default interval, edit ~/.rho/init.toml:
# Find the [settings.heartbeat] section and set the interval
sed -i 's/interval = "30m"/interval = "'"${HEARTBEAT_INTERVAL}"'"/' ~/.rho/init.toml
rho syncConstraints:
- You MUST run
rho doctorand report any failures. - You MUST NOT declare success if doctor reports errors.
rho doctorConstraints:
- You MUST tell the user to run
rho loginto set up their LLM provider. - You MUST NOT run
rho loginautomatically (it's interactive).
Tell the user:
Run
rho loginto authenticate with your LLM provider (Anthropic, OpenAI, etc). This is interactive — you'll need to provide API keys or log in via browser.
Constraints:
- You MUST ask before starting background processes.
rhoThis starts the daemon if needed and attaches to the tmux session.
Share these essentials with the user:
Key files:
~/.rho/init.toml— Main config (Doom-style: modules, settings)~/.rho/packages.toml— Third-party pi packages~/.rho/brain/brain.jsonl— Single source of truth for all memory (behaviors, learnings, preferences, tasks, reminders)
Memory system:
/brainorbrain action=list— View memory statsbrain action=add type=learning text="..."— Add a learningbrain action=add type=preference text="..." category=Code— Add a preferencebrain action=add type=task description="..." priority=high— Add a taskbrain action=add type=reminder text="..." cadence={kind:"daily",at:"08:00"}— Add a remindermemory-consolidate— Run consolidation (decay stale entries, mine sessions since last consolidation)
CLI basics:
rho— Start and attachrho status— Show daemon and module statusrho doctor— Health checkrho trigger— Force immediate heartbeatrho stop— Stop daemonrho upgrade— Update rho and sync new modules
Inside a session:
/rho status— Heartbeat state/rho now— Trigger check-in/rho interval 30m— Set check-in interval
tmux essentials (if unfamiliar):
- Detach:
Ctrl-b d - List sessions:
tmux -L rho ls - Attach:
tmux -L rho attach -t rho
| Problem | Fix |
|---|---|
rho sync says pi missing |
npm install -g @mariozechner/pi-coding-agent |
rho doctor shows settings out of sync |
rho sync |
rho not found after install |
Add ~/.local/bin to PATH |
| tmux missing | Install with your platform's package manager |
| Node.js < 18 | Upgrade via nvm or NodeSource |
install.sh fails on NixOS |
Dependencies must be in your nix config, not installed via apt |