Personal AI assistant via Matrix Chat - A slightly saner alternative to OpenClaw
Go
50
328 commits
updated Jul 29, 2026
A saner alternative to OpenClaw.
OpenCrow is a messaging bot that bridges chat messages to omp (Oh My Pi), a coding agent with built-in tools, session persistence, auto-compaction, and multi-provider LLM support. Instead of reimplementing all of that in Go, OpenCrow spawns omp as a long-lived subprocess via its RPC protocol and acts as a thin bridge. The bot operates with a single active conversation at a time; session data persists across restarts.
OpenCrow supports multiple messaging backends:
signal-cligraph LR
Transport[Matrix / Nostr / Signal] -->|message| Inbox[(Inbox)]
Heartbeat -->|timer| Inbox
Reminders[(reminders)] -->|due| Inbox
Trigger["trigger.pipe"] -->|external| Inbox
Inbox -->|dequeue| Worker -->|RPC| Pi["omp process"]
Pi -->|response| Worker -->|reply| Transport
The Go bot receives messages from the configured backend, forwards them to the omp process, collects the response, and sends it back.
[!WARNING] There is no whitelisting, permission system, or tool filtering. Trying to bolt that onto LLM tool use is inherently futile — the model will find a way around it. The only real protection is running OpenCrow in a containerized or sandboxed environment. Use a NixOS container, VM, or similar isolation. The included NixOS module does exactly that. Don't run it on a machine where you'd mind the LLM running arbitrary commands.
Go
86.0%
Nix
7.8%
TypeScript
6.1%
Personal AI assistant via Matrix Chat - A slightly saner alternative to OpenClaw
Go
50
328 commits
updated Jul 29, 2026
A saner alternative to OpenClaw.
OpenCrow is a messaging bot that bridges chat messages to omp (Oh My Pi), a coding agent with built-in tools, session persistence, auto-compaction, and multi-provider LLM support. Instead of reimplementing all of that in Go, OpenCrow spawns omp as a long-lived subprocess via its RPC protocol and acts as a thin bridge. The bot operates with a single active conversation at a time; session data persists across restarts.
OpenCrow supports multiple messaging backends:
signal-cligraph LR
Transport[Matrix / Nostr / Signal] -->|message| Inbox[(Inbox)]
Heartbeat -->|timer| Inbox
Reminders[(reminders)] -->|due| Inbox
Trigger["trigger.pipe"] -->|external| Inbox
Inbox -->|dequeue| Worker -->|RPC| Pi["omp process"]
Pi -->|response| Worker -->|reply| Transport
The Go bot receives messages from the configured backend, forwards them to the omp process, collects the response, and sends it back.
[!WARNING] There is no whitelisting, permission system, or tool filtering. Trying to bolt that onto LLM tool use is inherently futile — the model will find a way around it. The only real protection is running OpenCrow in a containerized or sandboxed environment. Use a NixOS container, VM, or similar isolation. The included NixOS module does exactly that. Don't run it on a machine where you'd mind the LLM running arbitrary commands.
Go
86.0%
Nix
7.8%
TypeScript
6.1%