Skip to content

HOMECORE: native Rust/WASM/TS port of Home Assistant — implementation tracking #798

@ruvnet

Description

@ruvnet

What this is

A high-fidelity port of Home Assistant from Python to native Rust + WASM + TypeScript, with RuView sensing, ruflo agent orchestration, and ruvector AI memory built in as first-class core features rather than bolt-on integrations.

Tracked via the 9-ADR series shipped yesterday:

  • ADR-126 — HOMECORE master — strategic argument + phase map + series guide
  • ADR-127 — state machine, event bus, service registry (Rust core)
  • ADR-128 — WASM-sandboxed integration plugins (replaces HA's 2000+ Python components)
  • ADR-129 — automation engine + Jinja templates via MiniJinja
  • ADR-130 — wire-compatible REST + WS (HA app + HACS keep working)
  • ADR-131 — TS + Rust→WASM frontend in a SharedWorker
  • ADR-132 — SQLite + ruvector semantic memory of state history
  • ADR-133 — voice assistant + agent automation via ruflo
  • ADR-134 — migration tooling + side-by-side runtime from existing HA installs
  • ADR-125 — Apple Home HAP bridge (sibling, ships alongside)

Why now

Python HA has architectural limits this port targets to escape:

  • Single-process GIL bottlenecks → Rust async runtime
  • 15-30s cold start on Pi → <1s
  • 300MB+ idle RAM → <50MB
  • No native WASM safety boundary for community integrations → Wasmtime sandbox per plugin
  • No semantic memory of state history → ruvector-backed
  • Heavyweight Lit-element frontend (~5 MB) → TS+WASM SharedWorker
  • Voice assistant is bolted on → ruflo-backed native

Critical path

Three ADRs unblock the rest of the work, in this order:

  1. ADR-127 (HOMECORE-CORE) — state machine + event bus. Everything else depends on this.
  2. ADR-130 (HOMECORE-API) — wire-compat REST + WS. Required before companion apps / HACS can interact.
  3. ADR-128 (HOMECORE-PLUGINS) — Wasmtime plugin runtime. Required before any integration (including RuView's first-party plugin) can run.

After P2 on those three, ADRs 129/131/132/133/134/125 can proceed in parallel.

Loop execution

/loop 10m (cron 422eb635) is firing every 10 minutes. Each iteration:

  1. Pulls latest state from swarm-memory-manager namespace homecore-impl/*
  2. Picks the next P1 milestone on the critical path (or parallel branch once unblocked)
  3. Implements + tests + commits + pushes
  4. Updates this issue with what shipped, what's next, and any newly-discovered open questions
  5. Updates the relevant ADR with progress markers

UI work uses /browser against the cognitum-one/v0-appliance design system as the reference.

Top open questions (gating)

  • Q1/ADR-127 — unicode entity_id strictness (HA accepts; HOMECORE choice affects 5% of real-world install migrations)
  • Q2/ADR-128 — Wasmtime (15MB, JIT) vs WASM3 (50KB, 3-5× slower) plugin runtime — must decide before P1
  • Q1/ADR-130 — HA companion app ha_version feature-detect behavior — needs RE verification
  • Q3/ADR-133 — Node.js subprocess teardown on Windows for ruflo runner
  • Q5/ADR-134.storage/core.config_entries format is undocumented; reverse-engineering is load-bearing

Iteration log

Each cron fire posts an iteration update below. Starting iteration 1 now.

Branch: feat/adr-126-homecore-impl

made by rUv

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions