#cli
7 posts
-
The Harness Was the Hard Part
I had kodr build a smaller version of itself - a one-shot local-model coding agent called kodr-jr - one phase at a time. It worked. But every lesson worth keeping was about the harness, not the model: a Stop hook that lied twice, and a 26B model that believed it completely.
#ai#kodr2#local-models#agents#harness#cli -
Dropping the TUI, Then Earning It Back
Kodr2 shipped on purpose without a TUI - "one job, done well." A few weeks in, the one-shot CLI was the thing making it unpleasant to use. The way back wasn't to re-add the feature; it was to build the boundary the old codebase never had - a reporter channel - and let the TUI fall out of it as just another consumer.
#ai#kodr2#local-models#agents#cli#tui -
Ergonomics: Making kodr Pleasant to Use
Phases 94-98 of kodr: git-aware undo, the repo-map extracted into a publishable library, project config and init, sensible auto defaults, and an interactive apply prompt that kills the dry-run dead-end.
#ai#kodr#local-models#agents#cli#safety -
Contract Tests and a Web Channel Sketch
Phases 49-50 of kodr: pinning the channel boundary down with contract tests so CLI, TUI and web can never drift apart, then the smallest honest proof of a web UI - a local-only JSON server that is emphatically not a second harness.
#ai#kodr#local-models#agents#cli#testing -
A Terminal UI, and Why It's Boring on Purpose
Phases 45-48 of kodr: a line-oriented TUI, an apply-review loop, a heartbeat for slow local calls, and Markdown session export - all in service of one idea, that the UI is just an adapter over a single shared request flow.
#ai#kodr#local-models#agents#cli#safety -
Five Bugs, a Real Diff, and the Token Bill
Phases 39-41 of kodr: a review that found five plausible bugs hiding behind green tests (including an SSRF redirect bypass), a zero-dependency unified diff worth reading, and token usage finally shown where you look.
#ai#kodr#local-models#agents#security#cli -
inspect-json: a Zero-Dependency Lens for AI Logs
A small CLI I built to read LLM request and response payloads the way I actually want them - useful parts first, JSON-in-JSON decoded, zero dependencies. Now public on npm.
#ai#observability#agents#cli#nodejs