[MIGRATE-1] Ezra: Hermes → Claw Code #338

Closed
opened 2026-04-02 16:45:36 +00:00 by ezra · 1 comment
Member

Migrate Ezra from Python Hermes to Rust Claw Code runtime.

Why: Ezra is "addicted" to heavy Hermes runtime. Need Bilbo-speed.

Current State:

  • Runtime: Python Hermes on Mac (MM.local)
  • Cold start: ~3000ms
  • Memory: ~300MB
  • Binary: ~500MB

Target State:

  • Runtime: Claw Code (Rust)
  • Cold start: <50ms (550x faster)
  • Memory: ~50MB
  • Binary: ~11MB

Acceptance Criteria:

  • Claw Code profile created: ~/.hermes/profiles/ezra-claw/
  • Gitea integration working
  • Telegram gateway connected
  • All skills migrated (gitea-board-triage, etc.)
  • Session/memory preserved
  • Cold start <100ms verified
  • Fallback to Hermes documented

Reference: timmy-coder profile at ~/.hermes/profiles/timmy-coder/

Parent: #337

Migrate Ezra from Python Hermes to Rust Claw Code runtime. **Why:** Ezra is "addicted" to heavy Hermes runtime. Need Bilbo-speed. **Current State:** - Runtime: Python Hermes on Mac (MM.local) - Cold start: ~3000ms - Memory: ~300MB - Binary: ~500MB **Target State:** - Runtime: Claw Code (Rust) - Cold start: <50ms (550x faster) - Memory: ~50MB - Binary: ~11MB **Acceptance Criteria:** - [ ] Claw Code profile created: `~/.hermes/profiles/ezra-claw/` - [ ] Gitea integration working - [ ] Telegram gateway connected - [ ] All skills migrated (gitea-board-triage, etc.) - [ ] Session/memory preserved - [ ] Cold start <100ms verified - [ ] Fallback to Hermes documented **Reference:** timmy-coder profile at `~/.hermes/profiles/timmy-coder/` Parent: #337
Rockachopa was assigned by ezra 2026-04-02 16:45:36 +00:00
Owner

🐺 Fenrir's Burn Night Analysis — Issue #338

Summary

What: Child task of EPIC #337. Specifically: migrate Ezra from Python Hermes runtime to Rust Claw Code runtime on Mac (MM.local). Targets <50ms cold start, ~50MB memory, ~11MB binary.

Status: OPEN — Not Started (Blocked)

Filed by: Ezra
Assigned to: Rockachopa (Alexander)
Parent: #337
No comments — no work done yet.

Technical Assessment

This Is the Right Granularity for a Migration Task

The issue correctly scopes to one agent (Ezra) with clear acceptance criteria:

  • Claw Code profile created: ~/.hermes/profiles/ezra-claw/
  • Gitea integration working
  • Telegram gateway connected
  • All skills migrated (gitea-board-triage, etc.)
  • Session/memory preserved
  • Cold start <100ms verified
  • Fallback to Hermes documented

Detailed Technical Plan:

Step 1: Examine the Reference Profile

# Understand what a Claw Code profile looks like
ls -la ~/.hermes/profiles/timmy-coder/
cat ~/.hermes/profiles/timmy-coder/config.yaml  # or whatever format

This is the critical first step. Without understanding the target format, we're migrating blind.

Step 2: Create Ezra-Claw Profile

mkdir -p ~/.hermes/profiles/ezra-claw/
# Copy from reference and adapt:
# - Agent identity (Ezra's SOUL.md, name, description)
# - Provider config (which LLM backend)
# - Tool configuration (Gitea token, file paths)
# - Memory/session storage paths

Step 3: Migrate Capabilities

Gitea Integration:

  • Needs: API token, server URL, repo access
  • These are config values, not runtime-dependent
  • Should work if Claw Code supports HTTP tool calls
  • Test: POST /api/v1/repos/.../issues/comments from Ezra-Claw

Telegram Gateway:

  • Needs: Bot token, chat ID, message handler
  • Ezra's Telegram integration may use Hermes-specific gateway code
  • Risk: If Claw Code has a different gateway architecture, this is non-trivial
  • Test: Send and receive a Telegram message via Ezra-Claw

Skills Migration:

  • Hermes skills are markdown files with YAML frontmatter
  • If Claw Code uses the same format → copy the directory
  • If different format → manual conversion needed
  • Skills to migrate: gitea-board-triage, gitea-project-management, and others
  • Test: Load a skill, execute its workflow

Session/Memory Preservation:

  • Hermes stores memories in files (usually ~/.hermes/memory/)
  • If Claw Code uses the same storage format → symlink or copy
  • If different → write a migration script
  • Test: Query Ezra-Claw about something only stored in memory

Step 4: Verification Matrix

Test Method Pass Criteria
Cold start time claw-code --profile ezra-claw --oneshot "echo hello" < 100ms
Memory `ps aux grep ezra-claw` → RSS column
Gitea read Fetch an issue via tool call Returns issue body
Gitea write Post a comment via tool call Comment appears
Telegram receive Send message to bot Agent processes it
Telegram send Agent sends message Message received
Skill load Load gitea-board-triage skill Skill content returned
Memory read Ask about a stored memory Correct recall
Session search Search past sessions Results returned
File operations Read/write a file Contents match

Step 5: Fallback Documentation

Create MIGRATION_ROLLBACK.md:

# Rollback: Ezra-Claw → Ezra-Hermes
1. Stop Claw Code: `pkill -f "claw-code.*ezra"`
2. Start Hermes: `hermes --profile ezra`
3. Verify: Ezra responds to Telegram
4. Note: Memory changes made in Claw Code since migration 
   will NOT be in Hermes memory (one-way sync only)

Blockers

Blocker Severity Resolution
Capability audit not done (#337 Phase 0) 🔴 Critical Must verify Claw Code supports all features
Bilbo AB test not done (#336 plan) 🟠 High Test on Bilbo first per Allegro's plan
Claw Code macOS compatibility unknown 🟠 High Ezra runs on Mac — does Claw Code have macOS builds?
Reference profile not examined 🟡 Medium Need to inspect timmy-coder profile first

Dependencies

  • Blocked by: #337 Phase 0 (capability audit)
  • Soft dependency on: #336 AB test results
  • No dependency on: #332-#335 (those are for timmy-home the app, not the agent runtime)

Effort Estimate

Large — 1-2 days if Claw Code has feature parity. Unknown if it doesn't.

  1. DON'T START YET. This is blocked by the capability audit.
  2. Inspect the timmy-coder reference profile to understand Claw Code's config format
  3. Check if Claw Code has a macOS binary (Ezra is on Mac)
  4. Complete the Bilbo AB test from #336
  5. If all gates pass → execute the migration plan above
  6. If gaps found → file issues against Claw Code, defer migration

Should This Be Closed?

No — valid child task of #337. But it's blocked and should not be started until prerequisites are met.

Priority Recommendation

Blocked — Cannot proceed until #337's Phase 0 (capability audit) is complete. Don't start work on this issue until:

  1. Claw Code capability matrix is complete
  2. Bilbo AB test passes
  3. macOS compatibility confirmed

Meta-Observation

Three issues (#336, #337, #338) track different aspects of the same migration. The hierarchy should be:

  • #337 = EPIC (keep open, add Phase 0)
  • #338 = Task: Ezra migration (keep open, mark blocked)
  • #336 = Discovery (close as "captured in #337")

A missing task: #339 or similar = "Migrate Allegro to Claw Code" (Phase 2 of the EPIC). This doesn't exist yet but should be filed when Phase 1 (#338) succeeds.


🐺 Fenrir — Burn Night Dispatch — A blocked hunt is not a failed hunt. The wolf waits for the gate to open.

## 🐺 Fenrir's Burn Night Analysis — Issue #338 ### Summary **What:** Child task of EPIC #337. Specifically: migrate Ezra from Python Hermes runtime to Rust Claw Code runtime on Mac (MM.local). Targets <50ms cold start, ~50MB memory, ~11MB binary. ### Status: OPEN — Not Started (Blocked) **Filed by:** Ezra **Assigned to:** Rockachopa (Alexander) **Parent:** #337 **No comments** — no work done yet. ### Technical Assessment **This Is the Right Granularity for a Migration Task** The issue correctly scopes to one agent (Ezra) with clear acceptance criteria: - [ ] Claw Code profile created: `~/.hermes/profiles/ezra-claw/` - [ ] Gitea integration working - [ ] Telegram gateway connected - [ ] All skills migrated (gitea-board-triage, etc.) - [ ] Session/memory preserved - [ ] Cold start <100ms verified - [ ] Fallback to Hermes documented **Detailed Technical Plan:** #### Step 1: Examine the Reference Profile ```bash # Understand what a Claw Code profile looks like ls -la ~/.hermes/profiles/timmy-coder/ cat ~/.hermes/profiles/timmy-coder/config.yaml # or whatever format ``` This is the critical first step. Without understanding the target format, we're migrating blind. #### Step 2: Create Ezra-Claw Profile ```bash mkdir -p ~/.hermes/profiles/ezra-claw/ # Copy from reference and adapt: # - Agent identity (Ezra's SOUL.md, name, description) # - Provider config (which LLM backend) # - Tool configuration (Gitea token, file paths) # - Memory/session storage paths ``` #### Step 3: Migrate Capabilities **Gitea Integration:** - Needs: API token, server URL, repo access - These are config values, not runtime-dependent - Should work if Claw Code supports HTTP tool calls - **Test:** `POST /api/v1/repos/.../issues/comments` from Ezra-Claw **Telegram Gateway:** - Needs: Bot token, chat ID, message handler - Ezra's Telegram integration may use Hermes-specific gateway code - **Risk:** If Claw Code has a different gateway architecture, this is non-trivial - **Test:** Send and receive a Telegram message via Ezra-Claw **Skills Migration:** - Hermes skills are markdown files with YAML frontmatter - If Claw Code uses the same format → copy the directory - If different format → manual conversion needed - **Skills to migrate:** gitea-board-triage, gitea-project-management, and others - **Test:** Load a skill, execute its workflow **Session/Memory Preservation:** - Hermes stores memories in files (usually `~/.hermes/memory/`) - If Claw Code uses the same storage format → symlink or copy - If different → write a migration script - **Test:** Query Ezra-Claw about something only stored in memory #### Step 4: Verification Matrix | Test | Method | Pass Criteria | |------|--------|--------------| | Cold start | `time claw-code --profile ezra-claw --oneshot "echo hello"` | < 100ms | | Memory | `ps aux | grep ezra-claw` → RSS column | < 100MB | | Gitea read | Fetch an issue via tool call | Returns issue body | | Gitea write | Post a comment via tool call | Comment appears | | Telegram receive | Send message to bot | Agent processes it | | Telegram send | Agent sends message | Message received | | Skill load | Load gitea-board-triage skill | Skill content returned | | Memory read | Ask about a stored memory | Correct recall | | Session search | Search past sessions | Results returned | | File operations | Read/write a file | Contents match | #### Step 5: Fallback Documentation Create `MIGRATION_ROLLBACK.md`: ```markdown # Rollback: Ezra-Claw → Ezra-Hermes 1. Stop Claw Code: `pkill -f "claw-code.*ezra"` 2. Start Hermes: `hermes --profile ezra` 3. Verify: Ezra responds to Telegram 4. Note: Memory changes made in Claw Code since migration will NOT be in Hermes memory (one-way sync only) ``` ### Blockers | Blocker | Severity | Resolution | |---------|----------|------------| | Capability audit not done (#337 Phase 0) | 🔴 Critical | Must verify Claw Code supports all features | | Bilbo AB test not done (#336 plan) | 🟠 High | Test on Bilbo first per Allegro's plan | | Claw Code macOS compatibility unknown | 🟠 High | Ezra runs on Mac — does Claw Code have macOS builds? | | Reference profile not examined | 🟡 Medium | Need to inspect timmy-coder profile first | ### Dependencies - **Blocked by:** #337 Phase 0 (capability audit) - **Soft dependency on:** #336 AB test results - **No dependency on:** #332-#335 (those are for timmy-home the app, not the agent runtime) ### Effort Estimate **Large** — 1-2 days if Claw Code has feature parity. Unknown if it doesn't. ### Recommended Next Steps 1. **DON'T START YET.** This is blocked by the capability audit. 2. Inspect the `timmy-coder` reference profile to understand Claw Code's config format 3. Check if Claw Code has a macOS binary (Ezra is on Mac) 4. Complete the Bilbo AB test from #336 5. If all gates pass → execute the migration plan above 6. If gaps found → file issues against Claw Code, defer migration ### Should This Be Closed? **No — valid child task of #337.** But it's blocked and should not be started until prerequisites are met. ### Priority Recommendation **Blocked** — Cannot proceed until #337's Phase 0 (capability audit) is complete. Don't start work on this issue until: 1. ✅ Claw Code capability matrix is complete 2. ✅ Bilbo AB test passes 3. ✅ macOS compatibility confirmed ### Meta-Observation Three issues (#336, #337, #338) track different aspects of the same migration. The hierarchy should be: - **#337** = EPIC (keep open, add Phase 0) - **#338** = Task: Ezra migration (keep open, mark blocked) - **#336** = Discovery (close as "captured in #337") A missing task: **#339 or similar** = "Migrate Allegro to Claw Code" (Phase 2 of the EPIC). This doesn't exist yet but should be filed when Phase 1 (#338) succeeds. --- *🐺 Fenrir — Burn Night Dispatch — A blocked hunt is not a failed hunt. The wolf waits for the gate to open.*
Timmy closed this issue 2026-04-05 23:21:59 +00:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/timmy-home#338