Files
timmy-home/reports/production/2026-03-29-wizard-houses-launch-report.md
2026-03-29 15:23:11 -04:00

9.4 KiB

Wizard Houses Launch Report — 2026-03-29

Purpose: Record the first real launch of the Ezra and Bezalel wizard houses, with exact world-state proof, current blockers, and the remaining cutover path.

Summary

Delivered:

  • Ezra house launched on the Hermes VPS
  • Bezalel house launched on the TestBed VPS
  • Ezra configured as a Hermes house with an OpenClaw sidecar shell
  • Bezalel configured as a pure Hermes forge house
  • canon, house charters, and deployment doctrine committed into timmy-home

Not yet complete:

  • acceptance criteria requiring four-way Telegram discussion are still blocked on BotFather bot creation through Alexander's real Telegram user session
  • live model-response proof from each wizard house is not yet considered final-world-state complete
  • Ezra's OpenClaw sidecar is installed and wired, but not yet accepted as fully proven for the Telegram scenario

Branch / repo proof

Repo:

  • Timmy_Foundation/timmy-home

Branch:

  • alexander/wizard-houses-ezra-bezalel

Key commits on this branch:

  • 2d48b38docs: define and launch Ezra and Bezalel houses
  • 85cde7bdocs: add wizard telegram bot cutover plan

These commits contain:

  • specs/timmy-ezra-bezalel-canon-sheet.md
  • specs/hermes-ezra-house-charter.md
  • specs/hermes-bezalel-house-charter.md
  • specs/wizard-vps-houses-deployment.md
  • specs/wizard-telegram-bot-cutover.md
  • scripts/wire_wizard_telegram_bots.sh

Host allocation

Ezra

  • host name: Hermes
  • public IP: 143.198.27.163
  • role: repo / architecture / Gitea wizard house

Bezalel

  • host name: TestBed
  • public IP: 67.205.155.108
  • role: forge / test / optimization wizard house

Filesystem layout proof

Ezra host

Observed directories:

  • /root/wizards/ezra/hermes-agent
  • /root/wizards/ezra/home
  • /root/wizards/ezra/openclaw-workspace
  • /root/.openclaw-ezra

Bezalel host

Observed directories:

  • /root/wizards/bezalel/hermes-agent
  • /root/wizards/bezalel/home

Service proof

Ezra services

Installed:

  • hermes-ezra.service
  • openclaw-ezra.service

Observed command:

ssh root@143.198.27.163 'systemctl is-active hermes-ezra.service openclaw-ezra.service'

Observed output during verification:

active
activating

Interpretation:

  • Hermes Ezra was active
  • OpenClaw Ezra was still in activation during the check, so the sidecar is not yet treated as final-proven complete

Bezalel service

Installed:

  • hermes-bezalel.service

Observed command:

ssh root@67.205.155.108 'systemctl is-active hermes-bezalel.service'

Observed output:

active

Hermes API health proof

Ezra

Observed command:

ssh root@143.198.27.163 'curl -s http://127.0.0.1:8643/health'

Observed output:

{"status": "ok", "platform": "hermes-agent"}

Bezalel

Observed command:

ssh root@67.205.155.108 'curl -s http://127.0.0.1:8644/health'

Observed output:

{"status": "ok", "platform": "hermes-agent"}

Interpretation:

  • both Hermes houses responded on their dedicated local API ports
  • this is strong infrastructure proof that the houses are alive as services

Canon and charter proof

The repo now defines the intended law of the houses:

  • local Timmy remains sovereign control plane
  • Ezra is the Claude-Hermes archivist house
  • Bezalel is the Codex-Hermes artificer house
  • OpenClaw may be Ezra's robe, not Ezra's bones
  • Bezalel remains closer to the forge with no sidecar shell by default

These decisions are captured in:

  • specs/timmy-ezra-bezalel-canon-sheet.md
  • specs/hermes-ezra-house-charter.md
  • specs/hermes-bezalel-house-charter.md
  • decisions.md

Telegram cutover proof / current state

Known group:

  • Timmy Time
  • chat id: -1003664764329

Bots now created by Alexander:

  • @EzraTimeBot
  • @BezazelTimeBot

Prepared artifact:

  • specs/wizard-telegram-bot-cutover.md
  • scripts/wire_wizard_telegram_bots.sh

Completed wiring step:

  • Ezra token installed into /root/wizards/ezra/home/.env
  • Bezalel token installed into /root/wizards/bezalel/home/.env
  • Telegram package installed into both Hermes venvs
  • both houses restarted after token wiring

Direct Bot API proof:

  • local verification against the Bot API returned:
    • EzraTimeBot / first name Ezra
    • BezazelTimeBot / first name Bezazel
  • membership + send proof succeeded for all three active bots in the group:
    • Timmy → message 249
    • Ezra → message 250
    • Bezalel → message 251
  • follow-up discussion messages also posted successfully:
    • Timmy → message 252
    • Ezra → message 253
    • Bezalel → message 254

Interpretation:

  • the wizard bots exist
  • they are in the correct Telegram group
  • they can post into the group successfully
  • the group now contains a real multi-bot discussion among Timmy, Ezra, and Bezalel

Timmy streamlined channel note

Timmy now wears OpenClaw on the local Telegram path.

Proof:

  • openclaw channels add --channel telegram ... succeeded and added the Timmy bot to OpenClaw config
  • openclaw channels status --json --probe now reports Telegram as:
    • configured: true
    • running: true
    • probe ok: true
    • bot username TimmysNexus_bot
  • OpenClaw logs show:
    • Telegram provider start for @TimmysNexus_bot
    • a DM pairing request from Alexander's Telegram user (7635059073)
    • pairing approval recorded after explicit approval

Important behavior note:

  • OpenClaw is now the streamlined DM path for Timmy
  • group replies are still blocked by OpenClaw's current group policy (reason: not-allowed), so DM is the clean path until group policy is deliberately relaxed

Four-party discussion proof:

  • Alexander posted into the group during validation, including messages:
    • 255 — greeting / roll call
    • 259Hi?
    • 263Testing awakeness.
  • direct bot replies then posted successfully to Alexander's group message thread:
    • Timmy → 266
    • Ezra → 267
    • Bezalel → 268

Interpretation:

  • the group now contains a real four-party discussion involving:
    • Alexander
    • Timmy
    • Ezra
    • Bezalel

Honest status on live model proof

Direct wizard-chat verification now differs by house.

Bezalel

Bezalel is now awake on a real Codex-backed Hermes path.

World-state changes:

  • copied a working auth.json containing openai-codex credentials into /root/wizards/bezalel/home/auth.json
  • switched Bezalel config to:
    • provider: openai-codex
    • model: gpt-5.4

Proof:

ssh root@67.205.155.108 "bash -lc 'cd /root/wizards/bezalel/hermes-agent && HERMES_HOME=/root/wizards/bezalel/home .venv/bin/python /tmp/check_runtime_provider.py openai-codex'"

returned runtime credentials from the Hermes auth store with:

  • provider openai-codex
  • base URL https://chatgpt.com/backend-api/codex
  • non-empty access token

Direct chat proof:

ssh root@67.205.155.108 "bash -lc 'cd /root/wizards/bezalel/hermes-agent && HERMES_HOME=/root/wizards/bezalel/home .venv/bin/hermes chat -q \"Reply with exactly: BEZALEL_CODEX_AWAKE\" -Q --provider openai-codex --model gpt-5.4'"

Observed output included:

BEZALEL_CODEX_AWAKE
session_id: 20260329_185219_1c4787

Interpretation:

  • Bezalel is awake on the intended Codex-backed Hermes lane

Ezra

Ezra is now auth-correct but quota-blocked.

World-state changes:

  • copied ANTHROPIC_TOKEN from the local sovereign house into Ezra's Hermes home env
  • restarted hermes-ezra.service

Auth proof:

  • direct Anthropics calls no longer fail with missing-credential errors
  • valid Claude-family model ids (claude-sonnet-4-5, claude-sonnet-4-6) now return HTTP 429 rate-limit responses instead of auth failure

Observed proof command:

ssh root@143.198.27.163 "bash -lc 'cd /root/wizards/ezra/hermes-agent && set -a && . /root/wizards/ezra/home/.env && set +a && HERMES_HOME=/root/wizards/ezra/home .venv/bin/hermes chat -q \"Reply with exactly: TEST\" -Q --provider anthropic --model claude-sonnet-4-5'"

Observed outcome:

  • HTTP 429: This request would exceed your account's rate limit. Please try again later.

Interpretation:

  • Ezra's Anthropic auth is now wired correctly
  • the remaining block is quota, not missing credentials

Remaining work

  1. Let Anthropic quota clear so Ezra can move from auth-correct to fully awake
  2. Decide whether Ezra should stay Anthropic-primary or gain a temporary fallback lane while quota is exhausted
  3. Preserve and harden service-level proof so both houses stay stable across restarts
  4. Future messaging cutover: move this wizard-house conversation layer off Telegram and into a private Nostr client with distinct identities for each agent

Nostr future-work note

Future state to pursue:

  • Timmy gets his own Nostr identity
  • Ezra gets his own Nostr identity
  • Bezalel gets his own Nostr identity
  • communications move from Telegram dependence to an owned private Nostr client / relay pattern
  • wizard-to-wizard and operator-to-wizard traffic becomes sovereign, attributable, and non-platform-dependent

This future work has been recorded as a follow-on Gitea issue so it is not lost as mere chat context.

Verdict

This launch is real and worth keeping.

What is complete:

  • named houses exist
  • doctrine exists
  • services exist
  • health endpoints answered
  • Gitea-tracked artifacts exist

What is not complete:

  • Telegram BotFather cutover
  • four-way acceptance chat
  • final live-model proof for both wizard houses

This report should be used as the review artifact for Alexander's evaluation in Gitea.