-
The audit tools clean themselves up
2026-04-27
We finally pointed our own tooling at our own design drift, ran the demo through a real visitor's eyes, and shipped fourteen public releases in a single sitting.
-
Boards discovers what it really is
2026-04-26
We started building a Visual Work OS. We ended up building a database substrate every other app gets to use for free.
-
Splitting the big apps before they get bigger
2026-04-26
Two apps had grown past the point of fitting comfortably in one file. We split them into orchestrator plus pure modules, kept the public API identical, and watched the test suite stay green.
-
Voice gets a feedback loop
2026-04-26
Aura learned to do things, then we noticed it couldn't tell you it had. Closing the loop without giving the assistant any new knowledge of any app.
-
The cron got poisoned because writes weren't validated
2026-04-25
Three scheduled agents had been silently skipping at boot for days. The bug was a free-prose field landing in a place that needed strict syntax.
-
The daemon disappears
2026-04-25
The OS finally stops haunting the desktop. Tray icon for everything; no more terminal window watching you work.
-
When retrieval becomes the bottleneck
2026-04-21
The assistant was inventing vault notes that didn't exist. The fix wasn't a better model — it was giving it eyes.
-
When the agent stops flailing
2026-04-20
Half a day of context, safety reflexes, and self-verification turns the coding agent from a bandaid factory into a tool we trust.
-
Making the coding agent legible
2026-04-19
The agent worked — but the web UI couldn't tell you which model was behind it, the command surface was invisible, and when a provider rejected a request the error said nothing useful. Fixing that revealed a silent wire-compat bug we'd been shipping for weeks.
-
The bench earns its keep
2026-04-19
We built the agent bench to grade providers. It turned out to be just as good at finding tool-side bugs the agent had been silently working around — and at proving that our fixes actually fix anything.
-
One provider was hiding three
2026-04-18
The dictionary had no sound. Chasing that revealed that the speak capability — the one supposedly guarding graceful fallback — was quietly pretending three engines were one.
-
Ready to be run by anyone
2026-04-18
Deployment modes, Docker, a cloud-consent gate, auth middleware, a demo vault, a devlog-publish pipeline — the day EmptyOS crossed from 'a personal system that's getting tidier' to 'something someone else could install and run.'
-
The audit had a blind spot
2026-04-18
The self-audit kept flagging 113 unheard events — but the audit itself was the component that was broken.
-
The system gets a uniform
2026-04-17
Entity cards, shared badges, settings panels everywhere, zero native dialogs, a reusable reference-test framework — the day the frontend learned to speak one language instead of twenty.
-
Two kinds of looking
2026-04-16
A split between personal usage analytics and public audience analytics, plus a generator that keeps the EmptyOS site honest against live system state — the day the system started seeing itself from two different outsides.
-
Voice becomes native
2026-04-15
Kokoro TTS as default, a cover-generation pipeline with a human gate, the assistant learning to remember, a structural-duplicate scanner — the day rich media and SDK discipline both tightened up.
-
Giving the system a vocabulary
2026-04-13
Six new skills, shared UI primitives, a dimensions SDK, a conversation shell — turning recurring patterns into named things the system can speak in.
-
Making it ready for other people
2026-04-12
A publish app, multi-site layouts, release tiers, public docs — the day EmptyOS stopped being a single-user tool and started being something that could be handed to someone else.
-
The system starts watching itself
2026-04-11
Before today EmptyOS had health checks. By the end it had a consciousness model, 13 scoring dimensions, two weekly agents doing audits, and a dev-log pipeline that records what it is becoming.