Back to Ironclaw

IronClaw ↔ OpenClaw Feature Parity Matrix

FEATURE_PARITY.md

0.21.029.2 KB
Original Source

IronClaw ↔ OpenClaw Feature Parity Matrix

This document tracks feature parity between IronClaw (Rust implementation) and OpenClaw (TypeScript reference implementation). Use this to coordinate work across developers.

Legend:

  • ✅ Implemented
  • 🚧 Partial (in progress or incomplete)
  • ❌ Not implemented
  • 🔮 Planned (in scope but not started)
  • 🚫 Out of scope (intentionally skipped)
  • ➖ N/A (not applicable to Rust implementation)

Last reviewed against OpenClaw PRs: 2026-03-10 (merged 2026-02-24 through 2026-03-10)


1. Architecture

FeatureOpenClawIronClawNotes
Hub-and-spoke architectureWeb gateway as central hub
WebSocket control planeGateway with WebSocket + SSE
Single-user systemExplicit instance owner scope for persistent routines, secrets, jobs, settings, extensions, and workspace memory
Multi-agent routingWorkspace isolation per-agent
Session-based messagingOwner scope is separate from sender identity and conversation scope
Loopback-first networkingHTTP binds to 0.0.0.0 but can be configured

Owner: Unassigned


2. Gateway System

FeatureOpenClawIronClawNotes
Gateway control planeWeb gateway with 40+ API endpoints
HTTP endpoints for Control UIWeb dashboard with chat, memory, jobs, logs, extensions
Channel connection lifecycleChannelManager + WebSocket tracker
Session management/routingSessionManager exists
Configuration hot-reload
Network modes (loopback/LAN/remote)🚧HTTP only
OpenAI-compatible HTTP API/v1/chat/completions, per-request model override
Canvas hostingAgent-driven UI
Gateway lock (PID-based)
launchd/systemd integration
Bonjour/mDNS discovery
Tailscale integration
Health check endpoints/api/health + /api/gateway/status + /healthz + /readyz, with channel-backed readiness probes
doctor diagnostics🚧16 checks: settings, LLM, DB, embeddings, routines, gateway, MCP, skills, secrets, service, Docker daemon, tunnel binaries
Agent event broadcast🚧SSE broadcast manager exists (SseManager) but tool/job-state events not fully wired
Channel health monitorAuto-restart with configurable interval
Presence systemBeacons on connect, system presence for agents
Trusted-proxy auth modeHeader-based auth for reverse proxies
APNs push pipelineWake 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🚧Token breakdown logged before LLM call (conversational dispatcher path); other LLM entry points not yet covered

Owner: Unassigned


3. Messaging Channels

ChannelOpenClawIronClawPriorityNotes
CLI/TUI-Ratatui-based TUI
HTTP webhook-axum with secret validation
REPL (simple)-For testing
WASM channels-IronClaw innovation; host resolves owner scope vs sender identity
WhatsAppP1Baileys (Web), same-phone mode with echo detection
Telegram-WASM channel(MTProto), DM pairing, caption, /start, bot_username, DM topics, setup-time owner auto-verification, owner-scoped persistence
DiscordP2discord.js, thread parent binding inheritance
SignalP2signal-cli daemonPC, SSE listener HTTP/JSON-R, user/group allowlists, DM pairing
Slack-WASM tool
iMessageP3BlueBubbles or Linq recommended
LinqP3Real iMessage via API, no Mac required
Feishu/Lark🚧P3WASM channel with Event Subscription v2.0; Bitable/Docx tools planned
LINEP3
WebChat-Web gateway chat
MatrixP3E2EE support
MattermostP3Emoji reactions, interactive buttons, model picker
Google ChatP3
MS TeamsP3
TwitchP3
Voice CallP3Twilio/Telnyx, stale call reaper, pre-cached greeting
NostrP3

Telegram-Specific Features (since Feb 2025)

FeatureOpenClawIronClawNotes
Forum topic creationCreate topics in forum groups
channel_post supportBot-to-bot communication
User message reactionsSurface inbound reactions
sendPollPoll creation via agent
Cron/heartbeat topic targetingMessages land in correct topic
DM topics supportAgent/topic bindings in DMs and agent-scoped SessionKeys
Persistent ACP topic bindingACP harness sessions can pin to Telegram forum or DM topics

Discord-Specific Features (since Feb 2025)

FeatureOpenClawIronClawNotes
Forwarded attachment downloadsFetch media from forwarded messages
Faster reaction state machineWatchdog + debounce
Thread parent binding inheritanceThreads inherit parent routing

Slack-Specific Features (since Feb 2025)

FeatureOpenClawIronClawNotes
Streaming draft repliesPartial replies via draft message updates
Configurable stream modesPer-channel stream behavior
Thread ownershipThread-level ownership tracking plus reply participation memory
Download-file actionOn-demand attachment downloads via message actions

Mattermost-Specific Features (since Mar 2026)

FeatureOpenClawIronClawNotes
Interactive buttonsClickable message buttons with signed callback flow
Interactive model pickerIn-channel provider/model chooser

Feishu/Lark-Specific Features (since Mar 2026)

FeatureOpenClawIronClawNotes
Doc/table actionsfeishu_doc supports tables, positional insert, color_text, image upload, and file upload
Rich-text embedded media extractionPull video/media attachments from post messages

Channel Features

FeatureOpenClawIronClawNotes
DM pairing codesironclaw pairing list/approve, host APIs
Allowlist/blocklist🚧allow_from + pairing store + hardened command/group allowlists
Self-message bypassOwn messages skip pairing
Mention-based activationbot_username + respond_to_all_group_messages
Per-group tool policiesAllow/deny specific tools
Thread isolationSeparate sessions per thread/topic
Per-channel media limits🚧Caption support plus mediaMaxMb enforcement for WhatsApp, Telegram, and Discord
Typing indicators🚧TUI + channel typing, with configurable silence timeout; richer parity pending
Per-channel ackReaction configCustomizable acknowledgement reactions/scopes
Group session primingMember roster injected for context
Sender_id in trusted metadataExposed in system metadata

Owner: Unassigned


4. CLI Commands

CommandOpenClawIronClawPriorityNotes
run (agent)-Default command
tool install/list/remove-WASM tools
gateway start/stopP2
onboard (wizard)-Interactive setup
tui-Ratatui TUI
config-Read/write config plus validate/path helpers
backupP3Create/verify local backup archives
channels🚧P2list implemented; enable/disable/status deferred pending config source unification
models🚧-Model selector in TUI
status-System status (enriched session details)
agentsP3Multi-agent management
sessionsP3Session listing (shows subagent models)
memory-Memory search CLI
skills-CLI subcommands (list, search, info) + agent tools + web API endpoints
pairing-list/approve, account selector
nodesP3Device management, remove/clear flows
pluginsP3Plugin management
hooksP2Lifecycle hooks
cron🚧P2list/create/edit/enable/disable/delete/history; TODO: cron run, model/thinking fields
webhooksP3Webhook config
message sendP2Send to channels
browserP3Browser automation
sandbox-WASM sandbox
doctor🚧P216 subsystem checks
logs🚧P3logs (gateway.log tail), --follow (SSE live stream), --level (get/set). No DB-persisted log history.
updateP3Self-update
completion-Shell completion
/subagents spawnP3Spawn subagents from chat
/export-sessionP3Export current session transcript

Owner: Unassigned


5. Agent System

FeatureOpenClawIronClawNotes
Pi agent runtimeIronClaw uses custom runtime
RPC-based executionOrchestrator/worker pattern
Multi-provider failoverFailoverProvider tries providers sequentially on retryable errors
Per-sender sessions
Global sessionsOptional shared context
Session pruningAuto cleanup old sessions
Context compactionAuto summarization
Compaction model overrideUse a dedicated provider/model for summarization only
Post-compaction read auditLayer 3: workspace rules appended to summaries
Post-compaction context injectionWorkspace context as system event
Custom system promptsTemplate 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 (off/minimal/low/medium/high/xhigh/adaptive)Configurable reasoning depth
Per-model thinkingDefault overrideOverride thinking level per model; Anthropic Claude 4.6 defaults to adaptive
Block-level streaming
Tool-level streaming
Z.AI tool_streamReal-time tool call streaming
Plugin toolsWASM tools
Tool policies (allow/deny)
Exec approvals (/approve)TUI approval overlay
Elevated modePrivileged execution
Subagent supportTask framework
/subagents spawn commandSpawn from chat
Auth profilesMultiple auth strategies
Generic API key rotationRotate keys across providers
Stuck loop detectionExponential backoff on stuck agent loops
llms.txt discoveryAuto-discover site metadata
Multiple images per tool callSingle tool call, multiple images
URL allowlist (web_search/fetch)Restrict web tool targets
suppressToolErrors configHide tool errors from user
Intent-first tool displayDetails and exec summaries
Transcript file size in statusShow size in session status

Owner: Unassigned


6. Model & Provider Support

ProviderOpenClawIronClawPriorityNotes
NEAR AI-Primary provider
Anthropic (Claude)🚧-Via NEAR AI proxy; Opus 4.5, Sonnet 4, Sonnet 4.6, adaptive thinking default
OpenAI🚧-Via NEAR AI proxy; GPT-5.4 + Codex OAuth
AWS BedrockP3
Google GeminiP3
NVIDIA APIP3New 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)
PerplexityP3Freshness parameter for web_search
MiniMaxP3Regional endpoint selection
GLM-5P3Via Z.AI provider (zai) using OpenAI-compatible chat completions
node-llama-cpp-N/A for Rust
llama.cpp (native)🔮P3Rust bindings

Model Features

FeatureOpenClawIronClawNotes
Auto-discovery
Failover chainsFailoverProvider with configurable fallback_model
Cooldown managementLock-free per-provider cooldown in FailoverProvider
Per-session model overrideModel selector in TUI
Model selection UITUI keyboard shortcut
Per-model thinkingDefaultOverride thinking level per model in config
1M context supportAnthropic extended context beta + OpenAI Codex GPT-5.4 1M context

Owner: Unassigned


7. Media Handling

FeatureOpenClawIronClawPriorityNotes
Image processing (Sharp)P2Resize, format convert
Configurable image resize dimsP2Per-agent dimension config
Multiple images per tool callP2Single tool invocation, multiple images
Audio transcriptionP2
Video supportP3
PDF analysis toolP2Native Anthropic/Gemini path with text/image extraction fallback
PDF parsingP2pdfjs-dist fallback path
MIME detectionP2
Media cachingP3
Vision model integrationP2Image understanding
TTS (Edge TTS)P3Text-to-speech
TTS (OpenAI)P3
Incremental TTS playbackP3iOS progressive playback
Sticker-to-imageP3Telegram stickers

Owner: Unassigned


8. Plugin & Extension System

FeatureOpenClawIronClawNotes
Dynamic loadingWASM modules
Manifest validationWASM metadata
HTTP path registrationPlugin routes
Workspace-relative install~/.ironclaw/tools/
Channel pluginsWASM channels
Auth plugins
Memory pluginsCustom backends + selectable memory slot
Context-engine pluginsCustom context management + subagent/context hooks
Tool pluginsWASM tools
Hook pluginsDeclarative hooks from extension capabilities
Provider plugins
Plugin CLI (install, list)tool subcommand
ClawHub registryDiscovery
before_agent_start hookmodelOverride/providerOverride support
before_message_write hookPre-write message interception
llm_input/llm_output hooksLLM payload inspection

Owner: Unassigned


9. Configuration System

FeatureOpenClawIronClawNotes
Primary config file~/.openclaw/openclaw.json.envDifferent formats
JSON5 supportComments, trailing commas
YAML alternative
Environment variable interpolation${VAR}
Config validation/schemaType-safe Config struct + openclaw config validate
Hot-reload
Legacy migration
State directory~/.openclaw-state/~/.ironclaw/
Credentials directorySession files
Full model compat fields in schemapi-ai model compat exposed in config

Owner: Unassigned


10. Memory & Knowledge System

FeatureOpenClawIronClawNotes
Vector memorypgvector
Session-based memory
Hybrid search (BM25 + vector)RRF algorithm
Temporal decay (hybrid search)Opt-in time-based scoring factor
MMR re-rankingMaximal marginal relevance for result diversity
LLM-based query expansionExpand FTS queries via LLM
OpenAI embeddings
Gemini embeddings
Local embeddings
SQLite-vec backendIronClaw uses PostgreSQL
LanceDB backendConfigurable auto-capture max length
QMD backend
Atomic reindexing
Embeddings batchingembed_batch on EmbeddingProvider trait
Citation support
Memory CLI commandsmemory search/read/write/tree/status CLI subcommands
Flexible path structureFilesystem-like API
Identity files (AGENTS.md, etc.)
Daily logs
Heartbeat checklistHEARTBEAT.md

Owner: Unassigned


11. Mobile Apps

FeatureOpenClawIronClawPriorityNotes
iOS app (SwiftUI)🚫-Out of scope initially
Android app (Kotlin)🚫-Out of scope initially
Apple Watch companion🚫-Send/receive messages MVP
Gateway WebSocket client🚫-
Camera/photo access🚫-
Voice input🚫-
Push-to-talk🚫-
Location sharing🚫-
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)


12. macOS App

FeatureOpenClawIronClawPriorityNotes
SwiftUI native app🚫-Out of scope
Menu bar presence🚫-Animated menubar icon
Bundled gateway🚫-
Canvas hosting🚫-Agent-controlled panel with placement/resizing
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
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)


13. Web Interface

FeatureOpenClawIronClawPriorityNotes
Control UI Dashboard-Web gateway with chat, memory, jobs, logs, extensions
Channel status view🚧P2Gateway status widget, full channel view pending
Agent managementP3
Model selection-TUI only
Config editingP3
Debug/logs viewer-Real-time log streaming with level/target filters
WebChat interface-Web gateway chat with SSE/WebSocket
Canvas system (A2UI)P3Agent-driven UI, improved asset resolution
Control UI i18nP3English, Chinese, Portuguese
WebChat theme syncP3Sync with system dark/light mode
Partial output on abortP2Preserve partial output when aborting

Owner: Unassigned


14. Automation

FeatureOpenClawIronClawPriorityNotes
Cron jobs-Routines with cron trigger
Per-job model fallback overrideP2payload.fallbacks overrides agent-level fallbacks
Cron stagger controlsP3Default stagger for scheduled jobs
Cron finished-run webhookP3Webhook on job completion
Timezone support-Via cron expressions
One-shot/recurring jobs-Manual + cron triggers
Channel health monitorP2Auto-restart with configurable interval
beforeInbound hookP2
beforeOutbound hookP2
beforeToolCall hookP2
before_agent_start hookP2Model/provider override
before_message_write hookP2Pre-write interception
onMessage hook-Routines with event trigger
Structured system-event routinesP2system_event trigger + event_emit tool for event-driven automation
onSessionStart hookP2
onSessionEnd hookP2
transcribeAudio hookP3
transformResponse hookP2
llm_input/llm_output hooksP3LLM payload inspection
Bundled hooksP2Audit + declarative rule/webhook hooks
Plugin hooksP3Registered from WASM capabilities.json
Workspace hooksP2hooks/hooks.json and hooks/*.hook.json
Outbound webhooksP2Fire-and-forget lifecycle event delivery
Heartbeat system-Periodic execution
Gmail pub/subP3

Owner: Unassigned


15. Security Features

FeatureOpenClawIronClawNotes
Gateway token authBearer token auth on web gateway
Device pairing
Tailscale identity
Trusted-proxy authHeader-based reverse proxy auth
OAuth flows🚧NEAR AI OAuth plus hosted extension/MCP OAuth broker; external auth-proxy rollout still pending
DM pairing verificationironclaw pairing approve, host APIs
Allowlist/blocklist🚧allow_from + pairing store
Per-group tool policies
Exec approvalsTUI overlay
TLS 1.3 minimumreqwest rustls
SSRF protectionWASM allowlist
SSRF IPv6 transition bypass blockBlock IPv4-mapped IPv6 bypasses
Cron webhook SSRF guardSSRF checks on webhook delivery
Loopback-first🚧HTTP binds 0.0.0.0
Docker sandboxOrchestrator/worker containers
Podman supportAlternative to Docker
WASM sandboxIronClaw innovation
Sandbox env sanitization🚧Shell tool scrubs env vars (secret detection); docker container env sanitization partial
Tool policies
Elevated mode
Safe bins allowlistHardened path trust
LD*/DYLD* validation
Path traversal preventionIncluding config includes (OC-06) + workspace-only tool mounts
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 restrictionValidated download roots prevent arbitrary write targets
Webhook signature verification
Media URL validation
Prompt injection defensePattern detection, sanitization
Leak detectionSecret exfiltration
Dangerous tool re-enable warningWarn when gateway.tools.allow re-enables HTTP tools

Owner: Unassigned


16. Development & Build System

FeatureOpenClawIronClawNotes
Primary languageTypeScriptRustDifferent ecosystems
Build tooltsdowncargo
Type checkingTypeScript/tsgorustc
LintingOxlintclippy
FormattingOxfmtrustfmt
Package managerpnpmcargo
Test frameworkVitestbuilt-in
CoverageV8tarpaulin/llvm-cov
CI/CDGitHub ActionsGitHub Actions
Pre-commit hooksprek-Consider adding
Docker: Chromium + XvfbOptional browser in container
Docker: init scripts/openclaw-init.d/ support
Browser: extraArgs configCustom Chrome launch arguments

Owner: Unassigned


Implementation Priorities

P0 - Core (Already Done)

  • ✅ TUI channel with approval overlays
  • ✅ HTTP webhook channel
  • ✅ DM pairing (ironclaw pairing list/approve, host APIs)
  • ✅ WASM tool sandbox
  • ✅ Workspace/memory with hybrid search + embeddings batching
  • ✅ Prompt injection defense
  • ✅ Heartbeat system
  • ✅ Session management
  • ✅ Context compaction
  • ✅ Model selection
  • ✅ Gateway control plane + WebSocket
  • ✅ Web Control UI (chat, memory, jobs, logs, extensions, routines)
  • ✅ WebChat channel (web gateway)
  • ✅ Slack channel (WASM tool)
  • ✅ Telegram channel (WASM tool, MTProto)
  • ✅ Docker sandbox (orchestrator/worker)
  • ✅ Cron job scheduling (routines)
  • ✅ CLI subcommands (onboard, config, status, memory)
  • ✅ 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

  • ❌ Slack channel (real implementation)
  • ✅ Telegram channel (WASM, DM pairing, caption, /start)
  • ❌ WhatsApp channel
  • ✅ Multi-provider failover (FailoverProvider with retryable error classification)
  • ✅ Hooks system (core lifecycle hooks + bundled/plugin/workspace hooks + outbound webhooks)

P2 - Medium Priority

  • ❌ Media handling (images, PDFs)
  • ✅ Ollama/local model support (via rig::providers::ollama)
  • ❌ Configuration hot-reload
  • ✅ Tool-driven webhook ingress (/webhook/tools/{tool} -> host-verified + tool-normalized system_event routines)
  • ❌ Channel health monitor with auto-restart
  • ❌ Partial output preservation on abort

P3 - Lower Priority

  • ❌ Discord channel
  • ❌ Matrix channel
  • ❌ Other messaging platforms
  • ❌ TTS/audio features
  • ❌ Video support
  • 🚧 Skills routing blocks (activation criteria exist, but no "Use when / Don't use when")
  • ❌ Plugin registry
  • ❌ Streaming (block/tool/Z.AI tool_stream)
  • ❌ Memory: temporal decay, MMR re-ranking, query expansion
  • ❌ Control UI i18n
  • ❌ Stuck loop detection

How to Contribute

  1. Claim a section: Edit this file and add your name/handle to the "Owner" field
  2. Create a tracking issue: Link to GitHub issue for the feature area
  3. Update status: Change ❌ to 🚧 when starting, ✅ when complete
  4. Add notes: Document any design decisions or deviations

Coordination

  • Each major section should have one owner to avoid conflicts
  • Owners can delegate sub-features to others
  • Update this file as part of your PR

Deviations from OpenClaw

IronClaw intentionally differs from OpenClaw in these ways:

  1. Rust vs TypeScript: Native performance, memory safety, single binary distribution
  2. WASM sandbox vs Docker: Lighter weight, faster startup, capability-based security
  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
  5. No mobile/desktop apps: Focus on server-side and CLI initially
  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.