How Keylore got planned on a twenty dollar day and shipped with Grok

Planning Keylore ate almost a full day of a $20 package. Implementation with Grok 4.5 moved so much faster that I felt slightly scammed by the planning bill and grateful for the implement pass in the same hour. This post is that day, stretched into something I can still stand to read.

If you want the short why, the entry post is enough. Here we stay on how the work ran.

The loop, without the costume

I did not open a chat and say "build me a config manager" once. That path has bitten me before. Thin demos. Half-wired features. A README that lies about status.

The loop looked like this:

How the Keylore work actually ran: spec and plan, reiterate until the goal holds, then SDD with parallel agents.

Brainstorm and spec first. Write a plan second. When the plan wobbled, go back. Reiterate until the goal held. Only then subagent-driven development with parallel agents on the chunks, all under the same goal. Ship open source when the desk could use the app.

That is the whole ritual. No secret second process.

Who did which half

Spec and planning ran on GPT 5.6 under a sol ultra setup. Long briefs. Boring acceptance notes. What local-first meant. What a kit was allowed to be. What v1 apps were in scope. What "consent" had to mean when a template wanted onto disk.

That half was slow on purpose. I kept pushing on holes: execution in kits, silent overwrites, fake multi-app support, release claims I could not keep. The meter on a $20 package does not care about your pride. It still runs down while you argue with a model about whether a template may ship a binary.

Implementation ran on Grok 4.5. Shoutout to the xAI team. Once the plan stopped falling over, the implement pass was the fun part. Milestone after milestone. Forms. Discovery. Kit consent paths. Shortcut views. Tests that fail when a dirty form would clobber a deploy. Template engine pieces and app pieces got separate attention so one agent was not inventing both a kit format and a window layout in the same breath.

I stayed in the loop for taste and for the dumb breaks. Green CI is a liar if you never open the window. Screenshots. Click the wrong mode. Edit AeroSpace, flip to Ghostty, come back, see if the buffer still makes sense. Save with dirty state. Cancel a load mid-flight. Agents propose. I try to break it. Fail again. Repeat.

Some days that meant three rounds on the same form adapter because the happy path looked fine and the second open of the same file did not. That is still cheaper than finding it after a tag.

What "done" meant on a chunk

I kept a short quality list in ordinary language, the same spirit as the global bar on the diagram.

No red tests. No warning piles I planned to "clean later." No production stubs left as the real work. No TODO that was actually the feature. Use the skills that match the job. Prefer current tooling when I touch deps. Do not trust a stale local cache that says the world is fine.

That is not a manifesto. It is how you keep a multi-day agent run from turning into a junk drawer. When a chunk failed review, it went back. When the plan was wrong, the plan reopened. Spec was allowed to change when reality punched it. The diagram's reiterate arrow is not decoration.

Parallel agents helped on independent pieces. Shared state still needed a human with opinions. Two agents inventing two different "source of truth" stories for the same config is a special kind of headache. The goal text stayed shared so they were not solving different products by accident.

Where the money went

I will say the quiet part. Planning was expensive relative to typing. A day of back-and-forth on a $20 package feels silly until you remember the alternative: a week of coding the wrong architecture with full confidence.

The package did not care which half was "creative." It billed the long arguments about consent and adapters the same as a short "rename this type" pass. I watched the budget go mostly into the former. That is fine. That is where the product got opinionated.

Implement was cheap by comparison. Grok 4.5 chewed through milestones that would have been me copy-pasting for evenings. I still had to read the diffs. I still threw some away. Speed without reading is how you open-source a haunted house.

If you run a similar loop, budget the boring half. Spec is where you decide kits cannot execute. Spec is where you admit v1 is four apps on Apple Silicon. Spec is where you stop promising a DMG you cannot build this week. Writing those sentences once saved me from "just ship a zip of scripts" at 2am.

Release reality, said out loud

The repo is public: kaankoken/keylore.

I burned through GitHub Actions minutes on other projects like a responsible adult with a hobby and a timer. So the CI-built, signed DMG story is incomplete. The code is there. The Actions dashboard is crickets. Give me about ten days and I will put a proper build up. Until then, clone it and build on an Apple Silicon Mac if you are impatient.

I am also half looking for a good reason to stop treating GitHub as the only place builds can happen. Hosting the machines myself is on the list. Homelab energy. Not this week. The minutes first have to regenerate like a sad little meter.

That is not a brand story. It is ops. Open source without a pretty installer is still open source. Lying about the installer is just lying.

When the minutes come back I will wire the verify path and the signed release story the README already describes. Homebrew cask, notarized tags, the usual adult packaging. Until then the honest install docs are: clone, open the workspace, build Release, run it.

What I would repeat

Same loop on the next tool-shaped itch. Spec until it hurts. Plan until review stops finding new holes. Implement under a hard bar. Keep the human for the desk test.

I would also keep the split that worked here: a strong planner for the long argument, a fast implementer for the milestones, and me for "does this still feel like the app I wanted at 1am." Different models for different halves is allowed. Pretending one chat session is a full engineering org is how you get a demo and a hangover.

Keylore exists because I was tired of blind config edits. The agents did not invent that pain. They helped close it under a loop I could audit. If the product post is the desk, this post is the workshop floor: sawdust, rework, and a meter that hit zero at an inconvenient time.

Series

Tools