Skip to content

Commit cdd9670

Browse files
authored
docs(comparison): focus on OpenClaw and Hermes (#843)
1 parent 39de20e commit cdd9670

13 files changed

Lines changed: 1526 additions & 1271 deletions

README.md

Lines changed: 47 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Moltis recently hit [the front page of Hacker News](https://news.ycombinator.com
2727

2828
**Full-featured** — Voice, memory, cross-session recall, automatic edit checkpoints, scheduling, Telegram, Discord, browser automation, MCP servers, SSH or node-backed remote exec, managed deploy keys with host pinning in the web UI, a live Settings → Tools inventory, Cursor-compatible project context, and context-file threat scanning — all built-in. No plugin marketplace to get supply-chain attacked through.
2929

30-
**Auditable** — The agent loop + provider model fits in ~5K lines. The core (excluding the optional web UI) is ~196K lines across 46 modular crates you can audit independently, with 3,100+ tests and zero `unsafe` code\*.
30+
**Auditable** — The agent runner and model interface fit in ~7.5K lines, with providers in ~19K more. The Rust workspace is ~270K lines across 59 modular crates you can audit independently, with 470+ Rust files containing tests. Unsafe code is isolated to FFI and precompiled runtime boundaries, not the core agent loop.
3131

3232
## Installation
3333

@@ -47,69 +47,66 @@ cargo install moltis --git https://github.com/moltis-org/moltis
4747

4848
## Comparison
4949

50-
| | OpenClaw | PicoClaw | NanoClaw | ZeroClaw | **Moltis** |
51-
|---|---|---|---|---|---|
52-
| Language | TypeScript | Go | TypeScript | Rust | **Rust** |
53-
| Agent loop | ~430K LoC | Small | ~500 LoC | ~3.4K LoC | **~5K LoC** (`runner.rs` + `model.rs`) |
54-
| Full codebase |||| 1,000+ tests | **~124K LoC** (2,300+ tests) |
55-
| Runtime | Node.js + npm | Single binary | Node.js | Single binary (3.4 MB) | **Single binary (44 MB)** |
56-
| Sandbox | App-level || Docker | Docker | **Docker + Apple Container** |
57-
| Memory safety | GC | GC | GC | Ownership | **Ownership, zero `unsafe`\*** |
58-
| Auth | Basic | API keys | None | Token + OAuth | **Password + Passkey + API keys + Vault** |
59-
| Voice I/O | Plugin |||| **Built-in (15+ providers)** |
60-
| MCP | Yes |||| **Yes (stdio + HTTP/SSE)** |
61-
| Hooks | Yes (limited) |||| **15 event types** |
62-
| Skills | Yes (store) | Yes | Yes | Yes | **Yes (+ OpenClaw Store)** |
63-
| Memory/RAG | Plugin || Per-group | SQLite + FTS | **SQLite + FTS + vector** |
64-
65-
\* `unsafe` is denied workspace-wide. The only exceptions are opt-in FFI wrappers behind the `local-embeddings` feature flag, not part of the core.
66-
67-
> [Full comparison with benchmarks →](https://docs.moltis.org/comparison.html)
50+
| | OpenClaw | Hermes Agent | **Moltis** |
51+
|---|---|---|---|
52+
| Primary stack | TypeScript + Swift/Kotlin companion apps | Python + TypeScript TUI/web surfaces | **Rust** |
53+
| Runtime | Node.js + npm/pnpm/bun | Python + uv/pip, optional Node UI pieces | **Single Rust binary** |
54+
| Local checkout size\* | ~1.1M app LoC | ~152K app LoC | **~270K Rust LoC** |
55+
| Architecture | Broad gateway, channel, node, and app ecosystem | CLI/gateway agent with learning loop and research tooling | **Persistent personal agent server with modular crates** |
56+
| Crates/modules | npm packages, extensions, apps | Python packages, plugins, tools, TUI | **59 Rust workspace crates** |
57+
| Sandbox/backends | App-level permissions, browser/node tools | Local, Docker, SSH, Daytona, Singularity, Modal | **Docker/Podman + Apple Container + WASM** |
58+
| Auth/access | Pairing and local gateway controls | CLI and messaging gateway setup | **Password + Passkey + API keys + Vault** |
59+
| Voice I/O | Voice wake and talk modes | Voice memo transcription | **Built-in STT + TTS providers** |
60+
| MCP | Plugin/integration support | MCP integration | **stdio + HTTP/SSE** |
61+
| Skills | Bundled, managed, and workspace skills | Self-improving skills and Skills Hub support | **Bundled/workspace skills + autonomous improvement + OpenClaw import** |
62+
| Memory/RAG | Plugin-backed memory and context engine | Agent-curated memory, session search, user modeling | **SQLite + FTS + vector memory** |
63+
64+
\* LoC measured with `tokei`, excluding `node_modules`, generated build output, `dist`, and `target`.
65+
66+
> [Full comparison in the docs →](https://docs.moltis.org/comparison.html)
6867
6968
## Architecture — Crate Map
7069

71-
**Core** (always compiled):
70+
Current Rust workspace: ~270K LoC across 59 crates. The table below groups the main crates by role so the architecture stays scannable.
71+
72+
**Core runtime**:
7273

7374
| Crate | LoC | Role |
7475
|-------|-----|------|
75-
| `moltis` (cli) | 4.0K | Entry point, CLI commands |
76-
| `moltis-agents` | 9.6K | Agent loop, streaming, prompt assembly |
77-
| `moltis-providers` | 17.6K | LLM provider implementations |
78-
| `moltis-gateway` | 36.1K | HTTP/WS server, RPC, auth |
79-
| `moltis-chat` | 11.5K | Chat engine, agent orchestration |
80-
| `moltis-tools` | 21.9K | Tool execution, sandbox |
81-
| `moltis-config` | 7.0K | Configuration, validation |
82-
| `moltis-sessions` | 3.8K | Session persistence |
83-
| `moltis-plugins` | 1.9K | Hook dispatch, plugin formats |
84-
| `moltis-service-traits` | 1.3K | Shared service interfaces |
85-
| `moltis-common` | 1.1K | Shared utilities |
86-
| `moltis-protocol` | 0.8K | Wire protocol types |
87-
88-
**Optional** (feature-gated or additive):
76+
| `moltis-gateway` | 37.4K | HTTP/WS server, RPC, auth, startup wiring |
77+
| `moltis-tools` | 37.0K | Tool execution, sandboxing, WASM tools |
78+
| `moltis-providers` | 18.9K | LLM provider implementations |
79+
| `moltis-agents` | 14.5K | Agent loop, streaming, prompt assembly |
80+
| `moltis-chat` | 14.2K | Chat engine, agent orchestration |
81+
| `moltis-config` | 10.3K | Configuration, validation |
82+
| `moltis-httpd` | 9.9K | HTTP server primitives and middleware |
83+
| `moltis` (CLI) | 4.7K | Entry point, CLI commands |
84+
| `moltis-sessions` | 3.5K | Session persistence |
85+
| `moltis-common` | 1.5K | Shared utilities |
86+
| `moltis-service-traits` | 1.2K | Shared service interfaces |
87+
| `moltis-protocol` | 0.7K | Wire protocol types |
88+
89+
**Feature and integration crates**:
8990

9091
| Category | Crates | Combined LoC |
9192
|----------|--------|-------------|
92-
| Web UI | `moltis-web` | 4.5K |
93-
| GraphQL | `moltis-graphql` | 4.8K |
94-
| Voice | `moltis-voice` | 6.0K |
95-
| Memory | `moltis-memory`, `moltis-qmd` | 5.9K |
96-
| Channels | `moltis-telegram`, `moltis-whatsapp`, `moltis-discord`, `moltis-msteams`, `moltis-channels` | 14.9K |
97-
| Browser | `moltis-browser` | 5.1K |
98-
| Scheduling | `moltis-cron`, `moltis-caldav` | 5.2K |
99-
| Extensibility | `moltis-mcp`, `moltis-skills`, `moltis-wasm-tools` | 9.1K |
100-
| Auth & Security | `moltis-auth`, `moltis-oauth`, `moltis-onboarding`, `moltis-vault` | 6.6K |
101-
| Networking | `moltis-network-filter`, `moltis-tls`, `moltis-tailscale` | 3.5K |
102-
| Provider setup | `moltis-provider-setup` | 4.3K |
103-
| Import | `moltis-openclaw-import` | 7.6K |
104-
| Apple native | `moltis-swift-bridge` | 2.1K |
105-
| Metrics | `moltis-metrics` | 1.7K |
106-
| Other | `moltis-projects`, `moltis-media`, `moltis-routing`, `moltis-canvas`, `moltis-auto-reply`, `moltis-schema-export`, `moltis-benchmarks` | 2.5K |
93+
| Channels | `moltis-telegram`, `moltis-whatsapp`, `moltis-discord`, `moltis-msteams`, `moltis-matrix`, `moltis-slack`, `moltis-nostr`, `moltis-channels` | 34.0K |
94+
| Web and APIs | `moltis-web`, `moltis-graphql`, `moltis-webhooks` | 10.8K |
95+
| Extensibility | `moltis-mcp`, `moltis-mcp-agent-bridge`, `moltis-skills`, `moltis-plugins` | 11.5K |
96+
| Memory and context | `moltis-memory`, `moltis-qmd`, `moltis-code-index`, `moltis-projects` | 11.7K |
97+
| Voice and browser | `moltis-voice`, `moltis-browser` | 9.2K |
98+
| Auth and security | `moltis-auth`, `moltis-oauth`, `moltis-vault`, `moltis-secret-store`, `moltis-network-filter`, `moltis-tls` | 8.5K |
99+
| Scheduling and automation | `moltis-cron`, `moltis-caldav`, `moltis-auto-reply` | 4.7K |
100+
| Setup and import | `moltis-provider-setup`, `moltis-openclaw-import`, `moltis-onboarding` | 11.7K |
101+
| Native and node hosts | `moltis-swift-bridge`, `moltis-node-host`, `moltis-courier` | 5.7K |
102+
| WASM tools | `moltis-wasm-precompile`, `moltis-wasm-calc`, `moltis-wasm-web-fetch`, `moltis-wasm-web-search` | 1.4K |
103+
| Supporting crates | `moltis-media`, `moltis-metrics`, `moltis-tailscale`, `moltis-routing`, `moltis-canvas`, `moltis-schema-export`, `benchmarks` | 2.1K |
107104

108105
Use `--no-default-features --features lightweight` for constrained devices (Raspberry Pi, etc.).
109106

110107
## Security
111108

112-
- **Zero `unsafe` code\***denied workspace-wide; only opt-in FFI behind `local-embeddings` flag
109+
- **Small unsafe surface**core agent/gateway code stays safe Rust; unsafe is isolated to Swift FFI, local model wrappers, and precompiled WASM boundaries
113110
- **Sandboxed execution** — Docker + Apple Container, per-session isolation
114111
- **Secret handling**`secrecy::Secret`, zeroed on drop, redacted from tool output
115112
- **Authentication** — password + passkey (WebAuthn), rate-limited, per-IP throttle

0 commit comments

Comments
 (0)