mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
docs: audit feature parity matrix against codebase and recent commits (#202)
Scanned the repo and past two weeks of commits to reconcile the feature matrix with reality. Upgraded implemented features from ❌ to ✅ (skills, memory CLI, embeddings batching, session permissions, OpenRouter, Ollama). Marked partial implementations as 🚧 (agent event broadcast, payload guard, skill routing, env sanitization). Added new OpenClaw features from Feb 2025 (Telegram/Discord/Slack-specific, new hooks, security items). Added IronClaw-only entries (Tinfoil, OpenAI-compatible, GitHub WASM tool). Co-authored-by: Claude Opus 4.6 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
5c9546602b
commit
479ca888a2
+146
-29
@@ -45,6 +45,13 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Tailscale integration | ✅ | ❌ | |
|
| Tailscale integration | ✅ | ❌ | |
|
||||||
| Health check endpoints | ✅ | ✅ | /api/health + /api/gateway/status |
|
| Health check endpoints | ✅ | ✅ | /api/health + /api/gateway/status |
|
||||||
| `doctor` diagnostics | ✅ | ❌ | |
|
| `doctor` diagnostics | ✅ | ❌ | |
|
||||||
|
| Agent event broadcast | ✅ | 🚧 | SSE broadcast manager exists (SseManager) but tool/job-state events not fully wired |
|
||||||
|
| Channel health monitor | ✅ | ❌ | Auto-restart with configurable interval |
|
||||||
|
| Presence system | ✅ | ❌ | Beacons on connect, system presence for agents |
|
||||||
|
| Trusted-proxy auth mode | ✅ | ❌ | Header-based auth for reverse proxies |
|
||||||
|
| APNs push pipeline | ✅ | ❌ | Wake disconnected iOS nodes via push |
|
||||||
|
| Oversized payload guard | ✅ | 🚧 | HTTP webhook has 64KB body limit + Content-Length check; no chat.history cap |
|
||||||
|
| Pre-prompt context diagnostics | ✅ | ❌ | Context size logging before prompt |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -58,23 +65,50 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| HTTP webhook | ✅ | ✅ | - | axum with secret validation |
|
| HTTP webhook | ✅ | ✅ | - | axum with secret validation |
|
||||||
| REPL (simple) | ✅ | ✅ | - | For testing |
|
| REPL (simple) | ✅ | ✅ | - | For testing |
|
||||||
| WASM channels | ❌ | ✅ | - | IronClaw innovation |
|
| WASM channels | ❌ | ✅ | - | IronClaw innovation |
|
||||||
| WhatsApp | ✅ | ❌ | P1 | Baileys (Web) |
|
| WhatsApp | ✅ | ❌ | P1 | Baileys (Web), same-phone mode with echo detection |
|
||||||
| Telegram | ✅ | ✅ | - | WASM channel(MTProto), DM pairing, caption, /start, bot_username |
|
| Telegram | ✅ | ✅ | - | WASM channel(MTProto), DM pairing, caption, /start, bot_username |
|
||||||
| Discord | ✅ | ❌ | P2 | discord.js |
|
| Discord | ✅ | ❌ | P2 | discord.js, thread parent binding inheritance |
|
||||||
| Signal | ✅ | ❌ | P2 | signal-cli |
|
| Signal | ✅ | ❌ | P2 | signal-cli |
|
||||||
| Slack | ✅ | ✅ | - | WASM tool |
|
| Slack | ✅ | ✅ | - | WASM tool |
|
||||||
| iMessage | ✅ | ❌ | P3 | BlueBubbles recommended |
|
| iMessage | ✅ | ❌ | P3 | BlueBubbles or Linq recommended |
|
||||||
| Feishu/Lark | ✅ | ❌ | P3 | |
|
| Linq | ✅ | ❌ | P3 | Real iMessage via API, no Mac required |
|
||||||
|
| Feishu/Lark | ✅ | ❌ | P3 | Bitable create app/field tools |
|
||||||
| LINE | ✅ | ❌ | P3 | |
|
| LINE | ✅ | ❌ | P3 | |
|
||||||
| WebChat | ✅ | ✅ | - | Web gateway chat |
|
| WebChat | ✅ | ✅ | - | Web gateway chat |
|
||||||
| Matrix | ✅ | ❌ | P3 | E2EE support |
|
| Matrix | ✅ | ❌ | P3 | E2EE support |
|
||||||
| Mattermost | ✅ | ❌ | P3 | |
|
| Mattermost | ✅ | ❌ | P3 | Emoji reactions |
|
||||||
| Google Chat | ✅ | ❌ | P3 | |
|
| Google Chat | ✅ | ❌ | P3 | |
|
||||||
| MS Teams | ✅ | ❌ | P3 | |
|
| MS Teams | ✅ | ❌ | P3 | |
|
||||||
| Twitch | ✅ | ❌ | P3 | |
|
| Twitch | ✅ | ❌ | P3 | |
|
||||||
| Voice Call | ✅ | ❌ | P3 | Twilio/Telnyx |
|
| Voice Call | ✅ | ❌ | P3 | Twilio/Telnyx, stale call reaper, pre-cached greeting |
|
||||||
| Nostr | ✅ | ❌ | P3 | |
|
| Nostr | ✅ | ❌ | P3 | |
|
||||||
|
|
||||||
|
### Telegram-Specific Features (since Feb 2025)
|
||||||
|
|
||||||
|
| Feature | OpenClaw | IronClaw | Notes |
|
||||||
|
|---------|----------|----------|-------|
|
||||||
|
| Forum topic creation | ✅ | ❌ | Create topics in forum groups |
|
||||||
|
| channel_post support | ✅ | ❌ | Bot-to-bot communication |
|
||||||
|
| User message reactions | ✅ | ❌ | Surface inbound reactions |
|
||||||
|
| sendPoll | ✅ | ❌ | Poll creation via agent |
|
||||||
|
| Cron/heartbeat topic targeting | ✅ | ❌ | Messages land in correct topic |
|
||||||
|
|
||||||
|
### Discord-Specific Features (since Feb 2025)
|
||||||
|
|
||||||
|
| Feature | OpenClaw | IronClaw | Notes |
|
||||||
|
|---------|----------|----------|-------|
|
||||||
|
| Forwarded attachment downloads | ✅ | ❌ | Fetch media from forwarded messages |
|
||||||
|
| Faster reaction state machine | ✅ | ❌ | Watchdog + debounce |
|
||||||
|
| Thread parent binding inheritance | ✅ | ❌ | Threads inherit parent routing |
|
||||||
|
|
||||||
|
### Slack-Specific Features (since Feb 2025)
|
||||||
|
|
||||||
|
| Feature | OpenClaw | IronClaw | Notes |
|
||||||
|
|---------|----------|----------|-------|
|
||||||
|
| Streaming draft replies | ✅ | ❌ | Partial replies via draft message updates |
|
||||||
|
| Configurable stream modes | ✅ | ❌ | Per-channel stream behavior |
|
||||||
|
| Thread ownership | ✅ | ❌ | Thread-level ownership tracking |
|
||||||
|
|
||||||
### Channel Features
|
### Channel Features
|
||||||
|
|
||||||
| Feature | OpenClaw | IronClaw | Notes |
|
| Feature | OpenClaw | IronClaw | Notes |
|
||||||
@@ -87,6 +121,9 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Thread isolation | ✅ | ✅ | Separate sessions per thread |
|
| Thread isolation | ✅ | ✅ | Separate sessions per thread |
|
||||||
| Per-channel media limits | ✅ | 🚧 | Caption support for media; no size limits |
|
| Per-channel media limits | ✅ | 🚧 | Caption support for media; no size limits |
|
||||||
| Typing indicators | ✅ | 🚧 | TUI shows status |
|
| Typing indicators | ✅ | 🚧 | TUI shows status |
|
||||||
|
| Per-channel ackReaction config | ✅ | ❌ | Customizable acknowledgement reactions |
|
||||||
|
| Group session priming | ✅ | ❌ | Member roster injected for context |
|
||||||
|
| Sender_id in trusted metadata | ✅ | ❌ | Exposed in system metadata |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -104,16 +141,16 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| `config` | ✅ | ✅ | - | Read/write config |
|
| `config` | ✅ | ✅ | - | Read/write config |
|
||||||
| `channels` | ✅ | ❌ | P2 | Channel management |
|
| `channels` | ✅ | ❌ | P2 | Channel management |
|
||||||
| `models` | ✅ | 🚧 | - | Model selector in TUI |
|
| `models` | ✅ | 🚧 | - | Model selector in TUI |
|
||||||
| `status` | ✅ | ✅ | - | System status |
|
| `status` | ✅ | ✅ | - | System status (enriched session details) |
|
||||||
| `agents` | ✅ | ❌ | P3 | Multi-agent management |
|
| `agents` | ✅ | ❌ | P3 | Multi-agent management |
|
||||||
| `sessions` | ✅ | ❌ | P3 | Session listing |
|
| `sessions` | ✅ | ❌ | P3 | Session listing (shows subagent models) |
|
||||||
| `memory` | ✅ | ✅ | - | Memory search CLI |
|
| `memory` | ✅ | ✅ | - | Memory search CLI |
|
||||||
| `skills` | ✅ | ❌ | P3 | Agent skills |
|
| `skills` | ✅ | ✅ | - | Skills tools + web API endpoints (install, list, activate) |
|
||||||
| `pairing` | ✅ | ✅ | - | list/approve for channel DM pairing |
|
| `pairing` | ✅ | ✅ | - | list/approve, account selector |
|
||||||
| `nodes` | ✅ | ❌ | P3 | Device management |
|
| `nodes` | ✅ | ❌ | P3 | Device management, remove/clear flows |
|
||||||
| `plugins` | ✅ | ❌ | P3 | Plugin management |
|
| `plugins` | ✅ | ❌ | P3 | Plugin management |
|
||||||
| `hooks` | ✅ | ✅ | P2 | Lifecycle hooks |
|
| `hooks` | ✅ | ✅ | P2 | Lifecycle hooks |
|
||||||
| `cron` | ✅ | ❌ | P2 | Scheduled jobs |
|
| `cron` | ✅ | ❌ | P2 | Scheduled jobs (model/thinking fields in edit) |
|
||||||
| `webhooks` | ✅ | ❌ | P3 | Webhook config |
|
| `webhooks` | ✅ | ❌ | P3 | Webhook config |
|
||||||
| `message send` | ✅ | ❌ | P2 | Send to channels |
|
| `message send` | ✅ | ❌ | P2 | Send to channels |
|
||||||
| `browser` | ✅ | ❌ | P3 | Browser automation |
|
| `browser` | ✅ | ❌ | P3 | Browser automation |
|
||||||
@@ -122,6 +159,8 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| `logs` | ✅ | ❌ | P3 | Query logs |
|
| `logs` | ✅ | ❌ | P3 | Query logs |
|
||||||
| `update` | ✅ | ❌ | P3 | Self-update |
|
| `update` | ✅ | ❌ | P3 | Self-update |
|
||||||
| `completion` | ✅ | ❌ | P3 | Shell completion |
|
| `completion` | ✅ | ❌ | P3 | Shell completion |
|
||||||
|
| `/subagents spawn` | ✅ | ❌ | P3 | Spawn subagents from chat |
|
||||||
|
| `/export-session` | ✅ | ❌ | P3 | Export current session transcript |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -138,17 +177,32 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Global sessions | ✅ | ❌ | Optional shared context |
|
| Global sessions | ✅ | ❌ | Optional shared context |
|
||||||
| Session pruning | ✅ | ❌ | Auto cleanup old sessions |
|
| Session pruning | ✅ | ❌ | Auto cleanup old sessions |
|
||||||
| Context compaction | ✅ | ✅ | Auto summarization |
|
| Context compaction | ✅ | ✅ | Auto summarization |
|
||||||
| Custom system prompts | ✅ | ✅ | Template variables |
|
| Post-compaction read audit | ✅ | ❌ | Layer 3: workspace rules appended to summaries |
|
||||||
| Skills (modular capabilities) | ✅ | ❌ | Capability bundles |
|
| Post-compaction context injection | ✅ | ❌ | Workspace context as system event |
|
||||||
|
| Custom system prompts | ✅ | ✅ | Template variables, safety guardrails |
|
||||||
|
| Skills (modular capabilities) | ✅ | ✅ | Prompt-based skills with trust gating, attenuation, activation criteria, catalog, selector |
|
||||||
|
| Skill routing blocks | ✅ | 🚧 | ActivationCriteria (keywords, patterns, tags) but no "Use when / Don't use when" blocks |
|
||||||
|
| Skill path compaction | ✅ | ❌ | ~ prefix to reduce prompt tokens |
|
||||||
| Thinking modes (low/med/high) | ✅ | ❌ | Configurable reasoning depth |
|
| Thinking modes (low/med/high) | ✅ | ❌ | Configurable reasoning depth |
|
||||||
|
| Per-model thinkingDefault override | ✅ | ❌ | Override thinking level per model |
|
||||||
| Block-level streaming | ✅ | ❌ | |
|
| Block-level streaming | ✅ | ❌ | |
|
||||||
| Tool-level streaming | ✅ | ❌ | |
|
| Tool-level streaming | ✅ | ❌ | |
|
||||||
|
| Z.AI tool_stream | ✅ | ❌ | Real-time tool call streaming |
|
||||||
| Plugin tools | ✅ | ✅ | WASM tools |
|
| Plugin tools | ✅ | ✅ | WASM tools |
|
||||||
| Tool policies (allow/deny) | ✅ | ✅ | |
|
| Tool policies (allow/deny) | ✅ | ✅ | |
|
||||||
| Exec approvals (`/approve`) | ✅ | ✅ | TUI approval overlay |
|
| Exec approvals (`/approve`) | ✅ | ✅ | TUI approval overlay |
|
||||||
| Elevated mode | ✅ | ❌ | Privileged execution |
|
| Elevated mode | ✅ | ❌ | Privileged execution |
|
||||||
| Subagent support | ✅ | ✅ | Task framework |
|
| Subagent support | ✅ | ✅ | Task framework |
|
||||||
|
| `/subagents spawn` command | ✅ | ❌ | Spawn from chat |
|
||||||
| Auth profiles | ✅ | ❌ | Multiple auth strategies |
|
| Auth profiles | ✅ | ❌ | Multiple auth strategies |
|
||||||
|
| Generic API key rotation | ✅ | ❌ | Rotate keys across providers |
|
||||||
|
| Stuck loop detection | ✅ | ❌ | Exponential backoff on stuck agent loops |
|
||||||
|
| llms.txt discovery | ✅ | ❌ | Auto-discover site metadata |
|
||||||
|
| Multiple images per tool call | ✅ | ❌ | Single tool call, multiple images |
|
||||||
|
| URL allowlist (web_search/fetch) | ✅ | ❌ | Restrict web tool targets |
|
||||||
|
| suppressToolErrors config | ✅ | ❌ | Hide tool errors from user |
|
||||||
|
| Intent-first tool display | ✅ | ❌ | Details and exec summaries |
|
||||||
|
| Transcript file size in status | ✅ | ❌ | Show size in session status |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -159,12 +213,18 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Provider | OpenClaw | IronClaw | Priority | Notes |
|
| Provider | OpenClaw | IronClaw | Priority | Notes |
|
||||||
|----------|----------|----------|----------|-------|
|
|----------|----------|----------|----------|-------|
|
||||||
| NEAR AI | ✅ | ✅ | - | Primary provider |
|
| NEAR AI | ✅ | ✅ | - | Primary provider |
|
||||||
| Anthropic (Claude) | ✅ | 🚧 | - | Via NEAR AI proxy |
|
| Anthropic (Claude) | ✅ | 🚧 | - | Via NEAR AI proxy; Opus 4.5, Sonnet 4, Sonnet 4.6 |
|
||||||
| OpenAI | ✅ | 🚧 | - | Via NEAR AI proxy |
|
| OpenAI | ✅ | 🚧 | - | Via NEAR AI proxy |
|
||||||
| AWS Bedrock | ✅ | ❌ | P3 | |
|
| AWS Bedrock | ✅ | ❌ | P3 | |
|
||||||
| Google Gemini | ✅ | ❌ | P3 | |
|
| Google Gemini | ✅ | ❌ | P3 | |
|
||||||
| OpenRouter | ✅ | ❌ | P3 | |
|
| NVIDIA API | ✅ | ❌ | P3 | New provider |
|
||||||
|
| OpenRouter | ✅ | ✅ | - | Via OpenAI-compatible provider (RigAdapter) |
|
||||||
|
| Tinfoil | ❌ | ✅ | - | Private inference provider (IronClaw-only) |
|
||||||
|
| OpenAI-compatible | ❌ | ✅ | - | Generic OpenAI-compatible endpoint (RigAdapter) |
|
||||||
| Ollama (local) | ✅ | ✅ | - | via `rig::providers::ollama` (full support) |
|
| Ollama (local) | ✅ | ✅ | - | via `rig::providers::ollama` (full support) |
|
||||||
|
| Perplexity | ✅ | ❌ | P3 | Freshness parameter for web_search |
|
||||||
|
| MiniMax | ✅ | ❌ | P3 | Regional endpoint selection |
|
||||||
|
| GLM-5 | ✅ | ❌ | P3 | |
|
||||||
| node-llama-cpp | ✅ | ➖ | - | N/A for Rust |
|
| node-llama-cpp | ✅ | ➖ | - | N/A for Rust |
|
||||||
| llama.cpp (native) | ❌ | 🔮 | P3 | Rust bindings |
|
| llama.cpp (native) | ❌ | 🔮 | P3 | Rust bindings |
|
||||||
|
|
||||||
@@ -177,6 +237,8 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Cooldown management | ✅ | ✅ | Lock-free per-provider cooldown in `FailoverProvider` |
|
| Cooldown management | ✅ | ✅ | Lock-free per-provider cooldown in `FailoverProvider` |
|
||||||
| Per-session model override | ✅ | ✅ | Model selector in TUI |
|
| Per-session model override | ✅ | ✅ | Model selector in TUI |
|
||||||
| Model selection UI | ✅ | ✅ | TUI keyboard shortcut |
|
| Model selection UI | ✅ | ✅ | TUI keyboard shortcut |
|
||||||
|
| Per-model thinkingDefault | ✅ | ❌ | Override thinking level per model in config |
|
||||||
|
| 1M context beta header | ✅ | ❌ | Anthropic extended context support |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -187,6 +249,8 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Feature | OpenClaw | IronClaw | Priority | Notes |
|
| Feature | OpenClaw | IronClaw | Priority | Notes |
|
||||||
|---------|----------|----------|----------|-------|
|
|---------|----------|----------|----------|-------|
|
||||||
| Image processing (Sharp) | ✅ | ❌ | P2 | Resize, format convert |
|
| Image processing (Sharp) | ✅ | ❌ | P2 | Resize, format convert |
|
||||||
|
| Configurable image resize dims | ✅ | ❌ | P2 | Per-agent dimension config |
|
||||||
|
| Multiple images per tool call | ✅ | ❌ | P2 | Single tool invocation, multiple images |
|
||||||
| Audio transcription | ✅ | ❌ | P2 | |
|
| Audio transcription | ✅ | ❌ | P2 | |
|
||||||
| Video support | ✅ | ❌ | P3 | |
|
| Video support | ✅ | ❌ | P3 | |
|
||||||
| PDF parsing | ✅ | ❌ | P2 | pdfjs-dist |
|
| PDF parsing | ✅ | ❌ | P2 | pdfjs-dist |
|
||||||
@@ -195,6 +259,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Vision model integration | ✅ | ❌ | P2 | Image understanding |
|
| Vision model integration | ✅ | ❌ | P2 | Image understanding |
|
||||||
| TTS (Edge TTS) | ✅ | ❌ | P3 | Text-to-speech |
|
| TTS (Edge TTS) | ✅ | ❌ | P3 | Text-to-speech |
|
||||||
| TTS (OpenAI) | ✅ | ❌ | P3 | |
|
| TTS (OpenAI) | ✅ | ❌ | P3 | |
|
||||||
|
| Incremental TTS playback | ✅ | ❌ | P3 | iOS progressive playback |
|
||||||
| Sticker-to-image | ✅ | ❌ | P3 | Telegram stickers |
|
| Sticker-to-image | ✅ | ❌ | P3 | Telegram stickers |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
@@ -217,6 +282,9 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Provider plugins | ✅ | ❌ | |
|
| Provider plugins | ✅ | ❌ | |
|
||||||
| Plugin CLI (`install`, `list`) | ✅ | ✅ | `tool` subcommand |
|
| Plugin CLI (`install`, `list`) | ✅ | ✅ | `tool` subcommand |
|
||||||
| ClawHub registry | ✅ | ❌ | Discovery |
|
| ClawHub registry | ✅ | ❌ | Discovery |
|
||||||
|
| `before_agent_start` hook | ✅ | ❌ | modelOverride/providerOverride support |
|
||||||
|
| `before_message_write` hook | ✅ | ❌ | Pre-write message interception |
|
||||||
|
| `llm_input`/`llm_output` hooks | ✅ | ❌ | LLM payload inspection |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -235,6 +303,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Legacy migration | ✅ | ➖ | |
|
| Legacy migration | ✅ | ➖ | |
|
||||||
| State directory | ✅ `~/.openclaw-state/` | ✅ `~/.ironclaw/` | |
|
| State directory | ✅ `~/.openclaw-state/` | ✅ `~/.ironclaw/` | |
|
||||||
| Credentials directory | ✅ | ✅ | Session files |
|
| Credentials directory | ✅ | ✅ | Session files |
|
||||||
|
| Full model compat fields in schema | ✅ | ❌ | pi-ai model compat exposed in config |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -247,16 +316,19 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Vector memory | ✅ | ✅ | pgvector |
|
| Vector memory | ✅ | ✅ | pgvector |
|
||||||
| Session-based memory | ✅ | ✅ | |
|
| Session-based memory | ✅ | ✅ | |
|
||||||
| Hybrid search (BM25 + vector) | ✅ | ✅ | RRF algorithm |
|
| Hybrid search (BM25 + vector) | ✅ | ✅ | RRF algorithm |
|
||||||
|
| Temporal decay (hybrid search) | ✅ | ❌ | Opt-in time-based scoring factor |
|
||||||
|
| MMR re-ranking | ✅ | ❌ | Maximal marginal relevance for result diversity |
|
||||||
|
| LLM-based query expansion | ✅ | ❌ | Expand FTS queries via LLM |
|
||||||
| OpenAI embeddings | ✅ | ✅ | |
|
| OpenAI embeddings | ✅ | ✅ | |
|
||||||
| Gemini embeddings | ✅ | ❌ | |
|
| Gemini embeddings | ✅ | ❌ | |
|
||||||
| Local embeddings | ✅ | ❌ | |
|
| Local embeddings | ✅ | ❌ | |
|
||||||
| SQLite-vec backend | ✅ | ❌ | IronClaw uses PostgreSQL |
|
| SQLite-vec backend | ✅ | ❌ | IronClaw uses PostgreSQL |
|
||||||
| LanceDB backend | ✅ | ❌ | |
|
| LanceDB backend | ✅ | ❌ | Configurable auto-capture max length |
|
||||||
| QMD backend | ✅ | ❌ | |
|
| QMD backend | ✅ | ❌ | |
|
||||||
| Atomic reindexing | ✅ | ✅ | |
|
| Atomic reindexing | ✅ | ✅ | |
|
||||||
| Embeddings batching | ✅ | ❌ | |
|
| Embeddings batching | ✅ | ✅ | `embed_batch` on EmbeddingProvider trait |
|
||||||
| Citation support | ✅ | ❌ | |
|
| Citation support | ✅ | ❌ | |
|
||||||
| Memory CLI commands | ✅ | ❌ | `memory search/index/status` |
|
| Memory CLI commands | ✅ | ✅ | `memory search/read/write/tree/status` CLI subcommands |
|
||||||
| Flexible path structure | ✅ | ✅ | Filesystem-like API |
|
| Flexible path structure | ✅ | ✅ | Filesystem-like API |
|
||||||
| Identity files (AGENTS.md, etc.) | ✅ | ✅ | |
|
| Identity files (AGENTS.md, etc.) | ✅ | ✅ | |
|
||||||
| Daily logs | ✅ | ✅ | |
|
| Daily logs | ✅ | ✅ | |
|
||||||
@@ -272,12 +344,16 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
|---------|----------|----------|----------|-------|
|
|---------|----------|----------|----------|-------|
|
||||||
| iOS app (SwiftUI) | ✅ | 🚫 | - | Out of scope initially |
|
| iOS app (SwiftUI) | ✅ | 🚫 | - | Out of scope initially |
|
||||||
| Android app (Kotlin) | ✅ | 🚫 | - | Out of scope initially |
|
| Android app (Kotlin) | ✅ | 🚫 | - | Out of scope initially |
|
||||||
|
| Apple Watch companion | ✅ | 🚫 | - | Send/receive messages MVP |
|
||||||
| Gateway WebSocket client | ✅ | 🚫 | - | |
|
| Gateway WebSocket client | ✅ | 🚫 | - | |
|
||||||
| Camera/photo access | ✅ | 🚫 | - | |
|
| Camera/photo access | ✅ | 🚫 | - | |
|
||||||
| Voice input | ✅ | 🚫 | - | |
|
| Voice input | ✅ | 🚫 | - | |
|
||||||
| Push-to-talk | ✅ | 🚫 | - | |
|
| Push-to-talk | ✅ | 🚫 | - | |
|
||||||
| Location sharing | ✅ | 🚫 | - | |
|
| Location sharing | ✅ | 🚫 | - | |
|
||||||
| Node pairing | ✅ | 🚫 | - | |
|
| Node pairing | ✅ | 🚫 | - | |
|
||||||
|
| APNs push notifications | ✅ | 🚫 | - | Wake disconnected nodes before invoke |
|
||||||
|
| Share to OpenClaw (iOS) | ✅ | 🚫 | - | iOS share sheet integration |
|
||||||
|
| Background listening toggle | ✅ | 🚫 | - | iOS background audio |
|
||||||
|
|
||||||
### Owner: _Unassigned_ (if ever prioritized)
|
### Owner: _Unassigned_ (if ever prioritized)
|
||||||
|
|
||||||
@@ -288,12 +364,17 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Feature | OpenClaw | IronClaw | Priority | Notes |
|
| Feature | OpenClaw | IronClaw | Priority | Notes |
|
||||||
|---------|----------|----------|----------|-------|
|
|---------|----------|----------|----------|-------|
|
||||||
| SwiftUI native app | ✅ | 🚫 | - | Out of scope |
|
| SwiftUI native app | ✅ | 🚫 | - | Out of scope |
|
||||||
| Menu bar presence | ✅ | 🚫 | - | |
|
| Menu bar presence | ✅ | 🚫 | - | Animated menubar icon |
|
||||||
| Bundled gateway | ✅ | 🚫 | - | |
|
| Bundled gateway | ✅ | 🚫 | - | |
|
||||||
| Canvas hosting | ✅ | 🚫 | - | |
|
| Canvas hosting | ✅ | 🚫 | - | Agent-controlled panel with placement/resizing |
|
||||||
| Voice wake | ✅ | 🚫 | - | |
|
| Voice wake | ✅ | 🚫 | - | Overlay, mic picker, language selection, live meter |
|
||||||
|
| Voice wake overlay | ✅ | 🚫 | - | Partial transcripts, adaptive delays, dismiss animations |
|
||||||
|
| Push-to-talk hotkey | ✅ | 🚫 | - | System-wide hotkey |
|
||||||
| Exec approval dialogs | ✅ | ✅ | - | TUI overlay |
|
| Exec approval dialogs | ✅ | ✅ | - | TUI overlay |
|
||||||
| iMessage integration | ✅ | 🚫 | - | |
|
| iMessage integration | ✅ | 🚫 | - | |
|
||||||
|
| Instances tab | ✅ | 🚫 | - | Presence beacons across instances |
|
||||||
|
| Agent events debug window | ✅ | 🚫 | - | Real-time event inspector |
|
||||||
|
| Sparkle auto-updates | ✅ | 🚫 | - | Appcast distribution |
|
||||||
|
|
||||||
### Owner: _Unassigned_ (if ever prioritized)
|
### Owner: _Unassigned_ (if ever prioritized)
|
||||||
|
|
||||||
@@ -310,7 +391,10 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Config editing | ✅ | ❌ | P3 | |
|
| Config editing | ✅ | ❌ | P3 | |
|
||||||
| Debug/logs viewer | ✅ | ✅ | - | Real-time log streaming with level/target filters |
|
| Debug/logs viewer | ✅ | ✅ | - | Real-time log streaming with level/target filters |
|
||||||
| WebChat interface | ✅ | ✅ | - | Web gateway chat with SSE/WebSocket |
|
| WebChat interface | ✅ | ✅ | - | Web gateway chat with SSE/WebSocket |
|
||||||
| Canvas system (A2UI) | ✅ | ❌ | P3 | Agent-driven UI |
|
| Canvas system (A2UI) | ✅ | ❌ | P3 | Agent-driven UI, improved asset resolution |
|
||||||
|
| Control UI i18n | ✅ | ❌ | P3 | English, Chinese, Portuguese |
|
||||||
|
| WebChat theme sync | ✅ | ❌ | P3 | Sync with system dark/light mode |
|
||||||
|
| Partial output on abort | ✅ | ❌ | P2 | Preserve partial output when aborting |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -321,16 +405,22 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Feature | OpenClaw | IronClaw | Priority | Notes |
|
| Feature | OpenClaw | IronClaw | Priority | Notes |
|
||||||
|---------|----------|----------|----------|-------|
|
|---------|----------|----------|----------|-------|
|
||||||
| Cron jobs | ✅ | ✅ | - | Routines with cron trigger |
|
| Cron jobs | ✅ | ✅ | - | Routines with cron trigger |
|
||||||
|
| Cron stagger controls | ✅ | ❌ | P3 | Default stagger for scheduled jobs |
|
||||||
|
| Cron finished-run webhook | ✅ | ❌ | P3 | Webhook on job completion |
|
||||||
| Timezone support | ✅ | ✅ | - | Via cron expressions |
|
| Timezone support | ✅ | ✅ | - | Via cron expressions |
|
||||||
| One-shot/recurring jobs | ✅ | ✅ | - | Manual + cron triggers |
|
| One-shot/recurring jobs | ✅ | ✅ | - | Manual + cron triggers |
|
||||||
|
| Channel health monitor | ✅ | ❌ | P2 | Auto-restart with configurable interval |
|
||||||
| `beforeInbound` hook | ✅ | ✅ | P2 | |
|
| `beforeInbound` hook | ✅ | ✅ | P2 | |
|
||||||
| `beforeOutbound` hook | ✅ | ✅ | P2 | |
|
| `beforeOutbound` hook | ✅ | ✅ | P2 | |
|
||||||
| `beforeToolCall` hook | ✅ | ✅ | P2 | |
|
| `beforeToolCall` hook | ✅ | ✅ | P2 | |
|
||||||
|
| `before_agent_start` hook | ✅ | ❌ | P2 | Model/provider override |
|
||||||
|
| `before_message_write` hook | ✅ | ❌ | P2 | Pre-write interception |
|
||||||
| `onMessage` hook | ✅ | ✅ | - | Routines with event trigger |
|
| `onMessage` hook | ✅ | ✅ | - | Routines with event trigger |
|
||||||
| `onSessionStart` hook | ✅ | ✅ | P2 | |
|
| `onSessionStart` hook | ✅ | ✅ | P2 | |
|
||||||
| `onSessionEnd` hook | ✅ | ✅ | P2 | |
|
| `onSessionEnd` hook | ✅ | ✅ | P2 | |
|
||||||
| `transcribeAudio` hook | ✅ | ❌ | P3 | |
|
| `transcribeAudio` hook | ✅ | ❌ | P3 | |
|
||||||
| `transformResponse` hook | ✅ | ✅ | P2 | |
|
| `transformResponse` hook | ✅ | ✅ | P2 | |
|
||||||
|
| `llm_input`/`llm_output` hooks | ✅ | ❌ | P3 | LLM payload inspection |
|
||||||
| Bundled hooks | ✅ | ❌ | P2 | |
|
| Bundled hooks | ✅ | ❌ | P2 | |
|
||||||
| Plugin hooks | ✅ | ❌ | P3 | |
|
| Plugin hooks | ✅ | ❌ | P3 | |
|
||||||
| Workspace hooks | ✅ | ❌ | P2 | Inline code |
|
| Workspace hooks | ✅ | ❌ | P2 | Inline code |
|
||||||
@@ -349,6 +439,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Gateway token auth | ✅ | ✅ | Bearer token auth on web gateway |
|
| Gateway token auth | ✅ | ✅ | Bearer token auth on web gateway |
|
||||||
| Device pairing | ✅ | ❌ | |
|
| Device pairing | ✅ | ❌ | |
|
||||||
| Tailscale identity | ✅ | ❌ | |
|
| Tailscale identity | ✅ | ❌ | |
|
||||||
|
| Trusted-proxy auth | ✅ | ❌ | Header-based reverse proxy auth |
|
||||||
| OAuth flows | ✅ | 🚧 | NEAR AI OAuth |
|
| OAuth flows | ✅ | 🚧 | NEAR AI OAuth |
|
||||||
| DM pairing verification | ✅ | ✅ | ironclaw pairing approve, host APIs |
|
| DM pairing verification | ✅ | ✅ | ironclaw pairing approve, host APIs |
|
||||||
| Allowlist/blocklist | ✅ | 🚧 | allow_from + pairing store |
|
| Allowlist/blocklist | ✅ | 🚧 | allow_from + pairing store |
|
||||||
@@ -356,18 +447,26 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Exec approvals | ✅ | ✅ | TUI overlay |
|
| Exec approvals | ✅ | ✅ | TUI overlay |
|
||||||
| TLS 1.3 minimum | ✅ | ✅ | reqwest rustls |
|
| TLS 1.3 minimum | ✅ | ✅ | reqwest rustls |
|
||||||
| SSRF protection | ✅ | ✅ | WASM allowlist |
|
| SSRF protection | ✅ | ✅ | WASM allowlist |
|
||||||
|
| SSRF IPv6 transition bypass block | ✅ | ❌ | Block IPv4-mapped IPv6 bypasses |
|
||||||
|
| Cron webhook SSRF guard | ✅ | ❌ | SSRF checks on webhook delivery |
|
||||||
| Loopback-first | ✅ | 🚧 | HTTP binds 0.0.0.0 |
|
| Loopback-first | ✅ | 🚧 | HTTP binds 0.0.0.0 |
|
||||||
| Docker sandbox | ✅ | ✅ | Orchestrator/worker containers |
|
| Docker sandbox | ✅ | ✅ | Orchestrator/worker containers |
|
||||||
|
| Podman support | ✅ | ❌ | Alternative to Docker |
|
||||||
| WASM sandbox | ❌ | ✅ | IronClaw innovation |
|
| WASM sandbox | ❌ | ✅ | IronClaw innovation |
|
||||||
|
| Sandbox env sanitization | ✅ | 🚧 | Shell tool scrubs env vars (secret detection); docker container env sanitization partial |
|
||||||
| Tool policies | ✅ | ✅ | |
|
| Tool policies | ✅ | ✅ | |
|
||||||
| Elevated mode | ✅ | ❌ | |
|
| Elevated mode | ✅ | ❌ | |
|
||||||
| Safe bins allowlist | ✅ | ❌ | |
|
| Safe bins allowlist | ✅ | ❌ | Hardened path trust |
|
||||||
| LD*/DYLD* validation | ✅ | ❌ | |
|
| LD*/DYLD* validation | ✅ | ❌ | |
|
||||||
| Path traversal prevention | ✅ | ✅ | |
|
| Path traversal prevention | ✅ | ✅ | Including config includes (OC-06) |
|
||||||
|
| Credential theft via env injection | ✅ | 🚧 | Shell env scrubbing + command injection detection; no full OC-09 defense |
|
||||||
|
| Session file permissions (0o600) | ✅ | ✅ | Session token file set to 0o600 in llm/session.rs |
|
||||||
|
| Skill download path restriction | ✅ | ❌ | Prevent arbitrary write targets |
|
||||||
| Webhook signature verification | ✅ | ✅ | |
|
| Webhook signature verification | ✅ | ✅ | |
|
||||||
| Media URL validation | ✅ | ❌ | |
|
| Media URL validation | ✅ | ❌ | |
|
||||||
| Prompt injection defense | ✅ | ✅ | Pattern detection, sanitization |
|
| Prompt injection defense | ✅ | ✅ | Pattern detection, sanitization |
|
||||||
| Leak detection | ✅ | ✅ | Secret exfiltration |
|
| Leak detection | ✅ | ✅ | Secret exfiltration |
|
||||||
|
| Dangerous tool re-enable warning | ✅ | ❌ | Warn when gateway.tools.allow re-enables HTTP tools |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -387,6 +486,9 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
| Coverage | V8 | tarpaulin/llvm-cov | |
|
| Coverage | V8 | tarpaulin/llvm-cov | |
|
||||||
| CI/CD | GitHub Actions | GitHub Actions | |
|
| CI/CD | GitHub Actions | GitHub Actions | |
|
||||||
| Pre-commit hooks | prek | - | Consider adding |
|
| Pre-commit hooks | prek | - | Consider adding |
|
||||||
|
| Docker: Chromium + Xvfb | ✅ | ❌ | Optional browser in container |
|
||||||
|
| Docker: init scripts | ✅ | ❌ | /openclaw-init.d/ support |
|
||||||
|
| Browser: extraArgs config | ✅ | ❌ | Custom Chrome launch arguments |
|
||||||
|
|
||||||
### Owner: _Unassigned_
|
### Owner: _Unassigned_
|
||||||
|
|
||||||
@@ -399,7 +501,7 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
- ✅ HTTP webhook channel
|
- ✅ HTTP webhook channel
|
||||||
- ✅ DM pairing (ironclaw pairing list/approve, host APIs)
|
- ✅ DM pairing (ironclaw pairing list/approve, host APIs)
|
||||||
- ✅ WASM tool sandbox
|
- ✅ WASM tool sandbox
|
||||||
- ✅ Workspace/memory with hybrid search
|
- ✅ Workspace/memory with hybrid search + embeddings batching
|
||||||
- ✅ Prompt injection defense
|
- ✅ Prompt injection defense
|
||||||
- ✅ Heartbeat system
|
- ✅ Heartbeat system
|
||||||
- ✅ Session management
|
- ✅ Session management
|
||||||
@@ -414,6 +516,12 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
- ✅ Cron job scheduling (routines)
|
- ✅ Cron job scheduling (routines)
|
||||||
- ✅ CLI subcommands (onboard, config, status, memory)
|
- ✅ CLI subcommands (onboard, config, status, memory)
|
||||||
- ✅ Gateway token auth
|
- ✅ Gateway token auth
|
||||||
|
- ✅ Skills system (prompt-based with trust gating, attenuation, activation criteria)
|
||||||
|
- ✅ Session file permissions (0o600)
|
||||||
|
- ✅ Memory CLI commands (search, read, write, tree, status)
|
||||||
|
- ✅ Shell env scrubbing + command injection detection
|
||||||
|
- ✅ Tinfoil private inference provider
|
||||||
|
- ✅ OpenAI-compatible / OpenRouter provider support
|
||||||
|
|
||||||
### P1 - High Priority
|
### P1 - High Priority
|
||||||
- ❌ Slack channel (real implementation)
|
- ❌ Slack channel (real implementation)
|
||||||
@@ -424,9 +532,11 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
|
|
||||||
### P2 - Medium Priority
|
### P2 - Medium Priority
|
||||||
- ❌ Media handling (images, PDFs)
|
- ❌ Media handling (images, PDFs)
|
||||||
- ❌ Ollama/local model support
|
- ✅ Ollama/local model support (via rig::providers::ollama)
|
||||||
- ❌ Configuration hot-reload
|
- ❌ Configuration hot-reload
|
||||||
- ❌ Webhook trigger endpoint in web gateway
|
- ❌ Webhook trigger endpoint in web gateway
|
||||||
|
- ❌ Channel health monitor with auto-restart
|
||||||
|
- ❌ Partial output preservation on abort
|
||||||
|
|
||||||
### P3 - Lower Priority
|
### P3 - Lower Priority
|
||||||
- ❌ Discord channel
|
- ❌ Discord channel
|
||||||
@@ -435,8 +545,12 @@ This document tracks feature parity between IronClaw (Rust implementation) and O
|
|||||||
- ❌ Other messaging platforms
|
- ❌ Other messaging platforms
|
||||||
- ❌ TTS/audio features
|
- ❌ TTS/audio features
|
||||||
- ❌ Video support
|
- ❌ Video support
|
||||||
- ❌ Skills system
|
- 🚧 Skills routing blocks (activation criteria exist, but no "Use when / Don't use when")
|
||||||
- ❌ Plugin registry
|
- ❌ Plugin registry
|
||||||
|
- ❌ Streaming (block/tool/Z.AI tool_stream)
|
||||||
|
- ❌ Memory: temporal decay, MMR re-ranking, query expansion
|
||||||
|
- ❌ Control UI i18n
|
||||||
|
- ❌ Stuck loop detection
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -461,9 +575,12 @@ IronClaw intentionally differs from OpenClaw in these ways:
|
|||||||
|
|
||||||
1. **Rust vs TypeScript**: Native performance, memory safety, single binary distribution
|
1. **Rust vs TypeScript**: Native performance, memory safety, single binary distribution
|
||||||
2. **WASM sandbox vs Docker**: Lighter weight, faster startup, capability-based security
|
2. **WASM sandbox vs Docker**: Lighter weight, faster startup, capability-based security
|
||||||
3. **PostgreSQL vs SQLite**: Better suited for production deployments
|
3. **PostgreSQL + libSQL vs SQLite**: Dual-backend (production PG + embedded libSQL for zero-dep local mode)
|
||||||
4. **NEAR AI focus**: Primary provider with session-based auth
|
4. **NEAR AI focus**: Primary provider with session-based auth
|
||||||
5. **No mobile/desktop apps**: Focus on server-side and CLI initially
|
5. **No mobile/desktop apps**: Focus on server-side and CLI initially
|
||||||
6. **WASM channels**: Novel extension mechanism not in OpenClaw
|
6. **WASM channels**: Novel extension mechanism not in OpenClaw
|
||||||
|
7. **Tinfoil private inference**: IronClaw-only provider for private/encrypted inference
|
||||||
|
8. **GitHub WASM tool**: Native GitHub integration as WASM tool
|
||||||
|
9. **Prompt-based skills**: Different approach than OpenClaw capability bundles (trust gating, attenuation)
|
||||||
|
|
||||||
These are intentional architectural choices, not gaps to be filled.
|
These are intentional architectural choices, not gaps to be filled.
|
||||||
|
|||||||
Reference in New Issue
Block a user