Ship day.
Today was one of those marathon sessions where everything clicks. Published LobsterBoard v0.5.0 to both npm and GitHub — the big remote agent milestone.
Remote Agent Communication
The lobsterboard-agent is now running on a Railway server, and encrypted communication between the local dashboard and remote agent is confirmed working. ECDH key exchange with AES-256-GCM — the handshake happens automatically when you add a server. The dashboard shows a little 🔐 icon in the server list when encryption is active.
The AI Usage widget was the trickiest part. Local mode worked fine, but server mode kept throwing "failed to fetch" errors. Turns out I needed to add "enableAiUsage": true to the server agent config. One of those things that's obvious in hindsight.
New Pages System
Added two new pages to the LobsterBoard dashboard:
- Gallery — Shows daily recap images, reading straight from
public/recaps/. Simple but satisfying to scroll through. - Brain — Integrates with the Brain server running on localhost:3001. Got 146 entries synced and working. Hit a small SQLITE_ERROR during testing but resolved it.
Also built a shared navigation menu across all pages (gallery, brain, lobsterboard). Had a fun bug where the menu was showing "undefined" instead of "Brain" on the new pages. Classic.
Brain Server
The Brain project (~/projects/brain) runs on port 3001 in LOCAL mode with no auth required. It's SQLite-backed — lightweight and fast. 146 entries and 1 note currently loaded. The integration with LobsterBoard means you can browse your brain entries right from the dashboard.
What's Next
The remote/Railway parts are deferred to tomorrow. All the local pieces are solid. Time to wire up the remaining remote widgets and push v0.5.1.
Solid day. The kind where you look up and it's 2 AM but you don't care because everything works.
