H

Meet Hank

Family Librarian — Reactive Keystore

"Remembers what was said. Tells you when it changes."
Protocol v0.2 — draft

What Hank does

If Lattice is the family's nervous system, Hank is its memory. Hank keeps durable, keyed records of everything the family needs to remember — settings, state, commands, schedules, snapshots — and tells anyone who's listening the instant something changes. Reactive by default, file-backed by design, same records visible from any tool the family uses.

Per-Key Records

Every key lives in its own record with a monotonic version and a last-modified timestamp. Independent keys never clobber each other, even under sync.

Reactive Pub/Sub

Subscribe to a key or a pattern. When it changes, you get notified. No polling, no stale views, no "did this update?" questions.

Public Protocol

HANK/1 is a documented wire format over WebSocket. Any language, any surface, same records. Build your own adapter in an afternoon.

One Source, Every Surface

The same record visible from CLI, dashboard, Marco, and any tool you add later. Read it anywhere, write it anywhere.

Fleet-Aware Namespaces

Reserved kevin:* prefixes mirror device state, telemetry, and the command channel. Your notes can read live fleet data without credentials.

Module, Not Service

Ships as a module inside the Kevin daemon. One config flag enables it; zero surface when it's off. Splits to a sibling service if you outgrow it.

HANK/1 Protocol

Hank speaks a small, versioned wire protocol over WebSocket. Published, documented, and free to implement.

client → {"op":"set","key":"kevin:cmd:restart-pump-17","value":{...}}
server → {"ack":true,"version":7,"updated_at":1712345678901}

client → {"op":"subscribe","pattern":"kevin:device:*"}
server → {"event":"set","key":"kevin:device:kv-pump-17","record":{...}}
Read the protocol spec →

Who's using Hank

Hank is the shared memory layer across the Kevin family. Walt, Vera, Norm, Max and Chip all read and write through him — so when one part of the family learns something, the others know about it too.

Kevin daemon

Hosts Hank as a gated module. Mirrors device registry, telemetry, and the command channel into reserved namespaces.

Kevin dashboard

Subscribes for live fleet state without polling. Every widget reacts the moment a record changes.

Hank for Obsidian

A thin adapter that exposes Hank inside your vault. Live device state and schedules, right in your notes.

CLI & scripts

hank get, hank set, hank watch. Incident response and automation without a browser.