01 / Capability Radar

Framework scores across 8 dimensions

02 / Score Matrix

Dimension-by-dimension breakdown — click rows to compare

Dimension Nanobot OpenClaw NanoClaw OpenFang IronClaw Lyra Now Lyra Target

03 / Category Leaders

Best-in-class per domain

5/5
Memory / Search
OpenClaw + IronClaw
5/5
Context Management
OpenClaw
5/5
Channel Count
OpenFang (40 adapters)
5/5
Channel Abstraction
OpenClaw (7-tier bindings)
5/5
Bus / Events
OpenClaw + OpenFang
5/5
LLM Providers
IronClaw (decorator chain)
5/5
Tool System
IronClaw + OpenFang
5/5
Plugin System
OpenClaw (typed SDK)
5/5
Security
OpenFang (16 layers) + IronClaw
5/5
Orchestration
OpenFang (workflow engine)
5/5
Observability
OpenClaw (diagnostic events)
5/5
Config / Hot-Reload
OpenClaw + ScalyClaw
5/5
Proactive Engagement
ScalyClaw (unique)
5/5
Readability
Nanobot + Lyra

04 / The "Chimera" Strategy

Best of each — ~2,170 LOC gives Lyra production-grade capabilities

Phase 1b~710 LOC
1
Provider Registry
Metadata-driven auto-detection via JSON/TOML
Nanobot#76
2
LLM Decorator Chain
Retry → SmartRoute → Failover → CircuitBreaker → Cache
IronClaw#104
3
Hybrid RRF Search
FTS always works, vector boosts — Reciprocal Rank Fusion
IronClaw#83
4
ContextEngine Protocol
Pluggable token-budget assembly — lazy-load recall
OpenClaw#83
5
Smart Routing Decorator
Complexity classifier → cheap model for trivial, powerful for complex
IronClaw#134
6
Runtime Agent Config
!config command — live-tune temperature/model/style without restart
ScalyClaw#135
Phase 2~760 LOC
5
Lane-Based Queue
Cron lane separate — never blocks user messages
OpenClaw#112
6
Binding Resolution Tiers
Exact match → wildcard → default agent
OpenClaw#112
7
Tool Approval Levels
Never / UnlessAutoApproved / Always
IronClaw#106
8
Credential Proxy
Plugins declare secret names — hub injects at boundary
IronClaw#106
9
Diagnostic Events
Stuck detection, token tracking, per-session observability
OpenClaw#44
10
Prompt Injection Scanner
Block / Warn / Review / Sanitize severity levels
OpenFangfuture
11
Proactive Engagement Engine
2-phase: cron signal scan (no LLM) → eval job (LLM only when warranted)
ScalyClawfuture
12
Command Shield
Deterministic blocklist/allowlist — no LLM, fail-closed, zero latency
ScalyClawfuture

05 / Pattern → Issue Dependency Flow

Which patterns unblock which Lyra issues

flowchart TD
  subgraph FW["Source Frameworks"]
    IC["IronClaw"]
    OC["OpenClaw"]
    NC["NanoClaw"]
    NB["Nanobot"]
    SC["ScalyClaw"]
  end

  subgraph P0["Phase 0 — Bot Core Parity #101"]
    I104["#104 Circuit Breaker"]
    I106["#106 Plugin System"]
  end

  subgraph P1b["Phase 1b — Agent Core #73"]
    I76["#76 Anthropic SDK Agent"]
    I75["#75 Persona System"]
    I134["#134 Smart Routing"]
    I135["#135 Runtime Config"]
    I67["#67 Session Persistence"]
    I83["#83 Memory Integration"]
    I99["#99 Hub Command Sessions"]
    I112["#112 Hub Refactor"]
  end

  subgraph P2["Phase 2"]
    I48["#48 Bus Abstraction"]
    I44["#44 Event Monitoring"]
  end

  IC -->|"decorator chain"| I104
  IC -->|"smart routing"| I134
  IC -->|"approval levels"| I106
  IC -->|"credential proxy"| I106
  IC -->|"RRF fusion"| I83
  OC -->|"append-only JSONL"| I67
  OC -->|"lane-based queue"| I112
  OC -->|"diagnostic events"| I44
  NC -->|"dual cursors"| I67
  NC -->|"self-register factory"| I106
  NB -->|"split queues"| I112
  NB -->|"per-session Task"| I112
  SC -->|"runtime config"| I135

  I76 -->|"unblocks"| I134
  I76 -->|"unblocks"| I135
  I75 -->|"persona path"| I135
  P0 -->|"unblocks"| I67
  P0 -->|"unblocks"| I83
  I83 -->|"unblocks"| I99
  I112 -->|"unblocks"| I48

  classDef fw fill:#0f2a3a44,stroke:#22d3ee,stroke-width:1.5px
  classDef issue fill:#0d1f1a33,stroke:#34d399,stroke-width:1px
  classDef new fill:#1a2a0033,stroke:#facc15,stroke-width:1.5px
  class IC,OC,NC,NB,SC fw
  class I104,I106,I67,I83,I99,I112,I48,I44,I76,I75 issue
  class I134,I135 new
      

06 / Lyra Today

What we have vs what we're building

Already solid
RoutingKey (platform, bot_id, user_id)Matches OpenClaw session key pattern
asyncio single event loopCorrect foundation — Nanobot validates this
Protocol-based adapters (ChannelAdapter)Matches all frameworks' structural approach
WebSocket via aiogram + discord.pyBest-practice ingestion for both platforms
roxabi-memory (SQLite + FTS5 + vectors)Best-in-class storage stack. Needs RRF fusion.
Bounded asyncio.Queue (size 100)Better than Nanobot's unbounded queue
Python-first paradigmHighest readability score alongside Nanobot
🔨Being built
Per-session asyncio.Task (has per-user Lock)No cancellation, no per-turn timeout#112
Split inbound / outbound queuesSingle queue limits backpressure control#112
Crash recovery (JSONL + dual cursors)Pool.history is volatile, lost on restart#67
LLM decorator chain (retry + CB + cache)No resilience on Anthropic API failures#104
Tool approval levels (Never/Auto/Always)Mandatory for plugin safety#106
Credential proxy at hub boundaryPlugins should never see raw API keys#106
RRF fusion in hybrid searchCurrently naive score averaging in roxabi-memory#83