Last updated: 2026-02-16
This note focuses on OpenClaw and close variants, with emphasis on:
- Retrofitting popular Rust variants for Matrix-based multi-device coordination
- Practical benefits of using multiple machines (Synology NAS + Mac Mini + 3 Raspberry Pi)
| Project | Language | Current Direction | Matrix/Multi-device Signal |
|---|---|---|---|
openclaw/openclaw |
TypeScript | Full-featured personal assistant gateway | Has channels and device-node concepts; Matrix appears as ecosystem channel path |
zeroclaw-labs/zeroclaw |
Rust | Very lightweight, trait-driven architecture | Channel trait + Matrix config/path exists in architecture; good candidate |
nearai/ironclaw |
Rust | Security-first, WASM sandbox model | WASM channel model is a strong path for Matrix adapter |
moltis-org/moltis |
Rust | Local-first gateway with plugin system | Channel plugin architecture makes Matrix integration straightforward |
qhkm/zeptoclaw |
Rust | Lightweight Rust gateway with safety layers | Channel trait/factory model supports adding Matrix transport |
sipeed/picoclaw |
Go | Ultra-lightweight assistant | Portable binary; no clear built-in distributed coordination layer |
jlia0/tinyclaw |
Shell/Node | Multi-agent team workflow | Strong multi-agent messaging focus; single-machine oriented by default |
cloudflare/moltworker |
TypeScript (Cloudflare) | Hosted OpenClaw deployment | Cloud-centric single-instance model; not a Pi-cluster target |
zscole/matrix-agents |
Python/Shell | Matrix-based coordination layer | Explicitly designed for multiple agents across multiple machines |
- Has a channel plugin system with lifecycle + outbound + event sink abstractions.
- Minimum work: implement a
Matrixchannel plugin, map inbound Matrix events to chat dispatch, and wire outbound send/status. - Practical outcome: Matrix becomes just another channel surface, while agent core stays unchanged.
- Uses a
Channeltrait architecture and already references Matrix config/channel scaffolding. - Minimum work: complete
send/listen/health_checkbehavior for Matrix client-server API and register channel in startup/factory. - Practical outcome: clean native channel integration without changing core loop.
- Has a WASM channel architecture and host-managed event model.
- Minimum work: implement Matrix as WASM channel callbacks (
on_http_request/on_poll/on_respond) plus capabilities/secrets. - Practical outcome: strongest isolation for channel logic; great for security-sensitive deployments.
- Uses channel abstractions and message bus patterns.
- Minimum work: add
MatrixChannelmodule, implement trait methods, register in channel factory, add config wiring. - Practical outcome: direct integration with existing gateway runtime; good balance of simplicity and control.
- Shared message bus across machines (agents do not need direct point-to-point links).
- Durable, replayable room history and sync tokens for recovery.
- Decoupling: each machine can host different agent capabilities but coordinate via rooms/events.
- Role specialization:
- Mac Mini: heavy inference/tooling, browser automation, model routing.
- Raspberry Pis: always-on channel ingress, lightweight agent workers, scheduled jobs.
- Synology NAS: persistent services (Matrix Synapse, DB, backups, logs).
- Fault isolation: one node can fail/restart without total outage.
- Cost control: keep expensive workloads on one strong node, push always-on glue to low-power Pis.
- Security segmentation: isolate risky tools/channels to sacrificial nodes.
- Synology NAS
- Run Matrix Synapse + Postgres (or supported persistent backend), backup + observability.
- Mac Mini
- Run primary assistant gateway (pick one Rust variant for core), model providers, heavier tools.
- Raspberry Pi #1
- Run Matrix bridge/adapter + lightweight channel worker.
- Raspberry Pi #2
- Run secondary worker agent (scheduled tasks, monitoring, low-priority automations).
- Raspberry Pi #3
- Run failover/experimental agent and isolated risky integrations.
- Start with
zscole/matrix-agentsas external coordination layer (no invasive core changes). - Choose one Rust core (
moltisorzeroclaw) for first Matrix native integration. - Add Matrix in read-only/notification mode first.
- Enable command execution only after allowlists + auth boundaries are validated.
- Introduce multi-node task routing once message identity/session routing is stable.
- Fastest path to working multi-device orchestration now:
zscole/matrix-agents+ existing assistant. - Best Rust target for native Matrix channel first:
moltis-org/moltis. - Best Rust target when security isolation is priority:
nearai/ironclaw(WASM channel model).
- Nia was used to ensure indexing and cross-check repo-grounded summaries where available.
- DeepWiki was used for architecture-level integration details and extension points.
https://github.com/brendanhogan/hermitclaw I like their approach that feels safe, need to test though