pinpox cbcf107523 socket: add type field to command and message protocol
Pass an optional 'type' field through the socket protocol so clients
can distinguish message kinds (e.g. notifications from user messages)
and render them differently.
2026-05-04 12:47:47 +03:00
2026-02-15 18:49:18 +01:00
2026-03-09 09:30:40 +01:00
2026-03-22 22:49:53 +01:00
2026-03-31 14:53:33 +02:00
2026-03-10 17:10:03 +01:00
2026-04-29 17:36:08 +03:00
2026-03-28 22:00:57 +01:00

OpenCrow

A saner alternative to OpenClaw.

OpenCrow logo

OpenCrow is a messaging bot that bridges chat messages to 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 pi 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:

  • Matrix — E2EE chat rooms via mautrix
  • Nostr — NIP-17 encrypted DMs via go-nostr
  • Signal — Signal chats via signal-cli
graph 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["pi process"]
    Pi -->|response| Worker -->|reply| Transport

The Go bot receives messages from the configured backend, forwards them to the pi 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.

Documentation

  • Tutorial — Step-by-step NixOS deployment with Matrix (includes Nostr variant)
  • Configuration — Environment variables, backend settings, secrets, and authentication
  • Skills — Teaching the agent new capabilities via markdown instructions
  • Extensions — TypeScript lifecycle hooks and custom tools
  • Heartbeat & Reminders — Periodic checks, one-shot reminders, trigger pipes
S
Description
No description provided
Readme 1.7 MiB
Languages
Go 85.8%
Nix 7.9%
TypeScript 6.3%