Henry Lee · the lab

Things I build when nobody's paying me to.

Backend Team Lead by day. Off the clock: interactive systems and a self-hosted AI agent, run on the same engineering discipline as my day job — memory architecture, tiered model routing, honest post-mortems. Click in and poke around.

▸ Interactive demos of systems I've designed — click any card to run it.

3D · Three.js

Boot henry.home

→ click to power it on, then type commands in the terminal

Power on a 3D UM890 mini-PC; it projects a holographic terminal. Explore the real home lab — hermes, services, the rules my agents live by.

WebGLbloomlive terminalTailscale mesh
▶ boot it →
2D · live canvas

scalp-analyzer

→ tap a ticker to see its safety score & entry/target/stop card

A live US-stock scalping desk: candles, EMA & VWAP, a confluence checklist and a 0–10 safety score. Type check NVDA for the entry/target/stop card.

EMA·VWAP·RSI7 setupsClaude Code skill
▶ open the desk →
interactive demo · canvas

Retry Storm

→ mash retry, flip idempotency on, watch duplicates vanish

Mash RETRY against a transaction pipeline — duplicates pile up in red. Flip idempotency on and every retry returns the same record. A demo of the real design: workflow-ID as creation key.

idempotencychaos modeledger integrity
▶ break it (try to) →
interactive demo · canvas

Dispatch Floor

→ add players, click an agent to change status, watch the pick

A weighted-scoring queue router, live: agents with status and load, players arriving (VIPs jump the line), one sorted-set score picking the winner — status ▸ load ▸ waited-longest.

zset scoringlive simchat routing
▶ run the floor →
live data · zero backend

Live from GitHub

→ nothing to click — live repo data, fetched in your browser

Your browser calls api.github.com directly — live repo cards, a language mix bar, latest pushes. No server, no cache, graceful fallback if rate-limited.

fetch APIlive reposno backend
▶ see it live →
coming soon

stock-sentry

A multi-agent trading assistant in Telegram — analyzer → strategy → backtester → verdict. Being desensitized before it ships here.

— soon —
under the hood

No framework, no build, no backend.

terminal engine

A real shell, in vanilla JS

Typeable commands with Tab-complete and ↑/↓ history, over a small virtual filesystem — ls, cat, ps, ping — all hand-rolled, no library.

3d scene

Three.js + UnrealBloom

An orbitable mini-PC that boots into a holographic screen — OrbitControls, bloom post-processing, and a canvas texture as the terminal display.

architecture

One file per page

Each showcase is a single self-contained HTML file. Dependencies pinned via import map to three@0.161.0 on the CDN. Deploys as plain GitHub Pages.

ci guard

Checks on every PR

A no-dependency script runs node --check on every inline script block and verifies every local link target exists; Prettier keeps the tooling formatted.

try the terminal

The machine is on the other page.

geewoni@henry.home — holo-terminal
~ $ help
  system  │ neofetch  services  cron  top  ping
  agent   │ hermes  memory  mnemosyne  skills  gaps
  trading │ backtest   (live: open scalp)
  hint: Tab completes · ↑/↓ history
~ $ neofetch
  geewoni@henry.home · UM890 Pro · up 24/7 since 2026-05-26
~ $ 
▶ boot the machine and type it yourself →
from the workbench

Where the rest of it lives.

what's new

The lab, versioned.

v1.2.0latest
  • Retry Storm — an idempotency playground: mash retry, flip the guard on, watch the ledger stay clean.
  • Dispatch Floor — a weighted-scoring queue router, live: status ▸ free slots ▸ waited-longest.
  • Live from GitHub — live repo cards straight from the API, zero backend.
  • This grid grew an under-the-hood section, a terminal teaser, a workbench row — and visible versioning (try version in the terminal).
v1.1.0
  • Reduced motion honored across the site; graceful fallback when the 3D library can't load.
  • SEO & social meta, a terminal-themed 404, and CI checks on every PR.
v1.0.0
  • Boot henry.home — a 3D mini-PC that powers on into a real, typeable terminal.
  • scalp-analyzer — a live scalping desk with a confluence checklist and safety score.

full changelog on GitHub →