OpenClaw to Hermes Migration (5/13) — Parallel Run Is Unnecessary: Transplantability of 7
0/7 platform-exclusive capabilities. Single platform + memory reinforcement is the optimal configuration.
ํต์ฌ ์์ฝ
- Analyzes the 7 categories where Platform A outscored Platform B, evaluated under the criterion: "Can these be transplanted to B?"
- Measurement results: full transplant 5/7, partial transplant 2/7, A-exclusive mandatory capabilities 0/7.
- Conclusion: Running both systems in parallel yields no cost-justified benefit. Single platform + memory layer reinforcement is the optimal configuration.
- Key takeaways: (1) the "transplantability" decision framework, (2) how to distinguish configuration/policy transplant from code transplant, (3) analysis of 3 cost categories incurred by parallel operation.
Background Frame
In the preceding comparative analysis, OpenClaw (hereafter OC) scored higher than Hermes across 7 categories. This naturally raises the question:
"Do we lose these 7 advantages upon consolidation?"
That question directly leads to: "Must we run both systems in parallel?" Since this is the architectural crux, each of the 7 categories is decomposed and transplantability is quantified.
Analysis Method
For each category, 3 items are evaluated:
- Transplant unit — Is it code, configuration, or policy?
- Transplant form — Is it a 1:1 mapping, does it need an adapter, or does it require reimplementation?
- Feature loss — Is there any feature loss after transplanting?
Classification symbols: full transplant (zero feature loss), partial transplant (requires some additional configuration), mandatory reimplementation (code-level rewrite required).
Transplantability Analysis of 7 Categories
1. Channel / Gateway (OC 5, Hermes 4) — Partial Transplant
OC manages a Discord main channel plus Telegram Forum 6 topics using fine-grained routing policies. Hermes's gateway/ module supports the same channel routing. The difference is that the per-topic routing policies for Telegram Forum (which messages route to which topic) are defined as 9 rules.
The transplant unit is policy, not code. Migrating the 9 rules to Hermes gateway config as YAML is sufficient. Estimated size: ~20 lines.
2. Agent Management (OC 5, Hermes 4) — Partial Transplant
OC's agent binding is composed of 8 layers (tool / model / permission / channel / isolation / memory / skill / name). Hermes profiles natively support 6 layers; the remaining 2 (fine-grained channel policy, memory access level) map cleanly by adding 2 fields to the profile definition.
Zero feature loss after transplant. This is a partial transplant case resolved by extending the profile YAML schema.
3. Memory (OC 5, Hermes 3) — Full Transplant
This is already implemented. memcore rebuilt OC's 4-tier memory hierarchy on a SQLite backend, and connects to Hermes via the MemcoreProvider adapter. memcore replaces Hermes's default MEMORY.md with its 2,200-character ceiling.
The key mechanism here is the adapter pattern: the memory backend is swapped at the provider layer without modifying the Hermes core.
4. Scheduling (OC 4, Hermes 3) — Full Transplant
OC's 9 cron entries + 7 LaunchAgents can be reconstructed 1:1 using Hermes's cron/ module + macOS LaunchAgent combination. Registering memcore CLI commands as cron entries preserves the existing schedule intact.
How it works: cron/LaunchAgent is an OS-level facility, not tied to any specific platform. The only dependency is the existence of the target CLI.
5. Plugins (OC 4, Hermes 3) — Full Transplant
External integrations such as oMLX and Scrapling are fundamentally tool registrations. They transplant by placing wrappers in Hermes's optional-skills/ directory. No OC-proprietary protocol was used.
Applicable pattern: designing external tool integrations as wrapper directory + standard interface minimizes transplant cost during platform migration.
6. Configuration Management (OC 4, Hermes 3) — Full Transplant
The config-drift detector and agent-linter are scripts, not platform features. They transfer directly as Hermes cron payloads.
The principle exposed here: things that appear to be platform features are often just a script + scheduler combination. This distinction is decisive when estimating transplant cost.
7. Context Management (OC 4, Hermes 3) — Full Transplant
The safeguard compaction behavior and softThreshold 6000 value map 1:1 to the Hermes context_compressor.py configuration. The algorithm is identical; only the parameter location changes.
Transplantability Summary
| Category | OC Score | Transplantability | Transplant Form |
|---|---|---|---|
| Channel / Gateway | 5 | Partial | ~20 lines of gateway config |
| Agent Management | 5 | Partial | 2 fields in profile YAML |
| Memory | 5 | Full | memcore (already implemented) |
| Scheduling | 4 | Full | cron + LaunchAgent |
| Plugins | 4 | Full | optional-skills wrappers |
| Configuration Management | 4 | Full | cron payload |
| Context Management | 4 | Full | context_compressor config |
| A-exclusive mandatory: 0/7 |
None of the 7 categories contains a capability that is "impossible without Platform A." The transplant form stays at configuration/policy migration or adapter addition — not code-level reimplementation.
3 Cost Categories of Parallel Operation
Once transplantability is confirmed, the follow-up question is: "Isn't parallel operation safer anyway?" However, parallel operation structurally generates 3 categories of cost.
Cost 1 — Memory Synchronization Lag
For two systems to observe the same state, a sync layer is required. Sync is inherently asynchronous, so lag exists. A memory system with lag creates situations where "something written on one side isn't immediately visible on the other." This is a source of race conditions in inter-agent decision making.
Cost 2 — Doubled Operational Complexity
Two sets of cron entries, two sets of LaunchAgent plists, two log streams, two alert channels. Operational overhead scales not linearly but at O(n²) when interactions are included. On failure, determining "which side is the problem?" consumes additional diagnosis time.
Cost 3 — Routing Cognitive Load
"Should this task run on A or B?" must be evaluated for every task. This directly conflicts with the purpose of automation (reducing decision load).
Limits and Scope of Applicability
This analysis is valid for a single-user + single-host environment. The conclusion changes under the following conditions:
- Geographically distributed multi-host — redundant operation for fault isolation is justified
- Heterogeneous environments (e.g., macOS + Linux) — platform-specific feature availability changes the transplantability table
- Transitional parallel operation — temporary dual operation is a risk mitigation measure, not a cost
Reusable Decision Framework
A decision template reusable for other migrations:
- Score both old and new platforms by category
- Decompose old-platform-dominant items into "transplant units (code / config / policy)"
- Map transplant form (1:1 / adapter / reimplementation)
- Accept only items with non-zero feature loss as "justification for parallel operation"
- If feature loss is zero, proceed with single platform + adapter configuration
The core of this framework is identifying "things that appear to be platform features but are actually configuration or scripts."
Open Questions
- Can the memory adapter pattern (as in memcore) be applied to other backends (vector DB, graph DB) at the same cost?
- Do the partial transplant cases (adding YAML fields) accumulate schema drift cost over time?
- How long should old-platform logs and snapshots be retained after transplant?
Series Index (All 16 Parts)
Parts 1–6: Inventory → Mapping → Asset Review → 5-Week Spec → memcore Initial → Omission Audit Parts 7–13: Tier Gate → Heartbeat v2 → Router_Control → Vector DB → Failure Lessons → Manager/Runner → 5 Unresolved Decisions Parts 14–16: OC vs Hermes Comparison → memcore Complete → Parallel Run Unnecessary (this post)
Series overview: Series index
๋๊ธ
๋๊ธ ์ฐ๊ธฐ