Skip to content

Hendrik Kühnel

I build tools for working with coding agents: what a session costs, what the model reads, and what it is handed to fix. And hardware, when nobody has written down how the hardware works.

Every number below links to the page that shows how it was measured.

Projects

UsageFoundry

A self-hosted dashboard and headless run orchestrator for Claude Code.

runs

Claude Code headlessly against a budget that stops it, each run in its own git worktree and branch, so several agents work one repository at once.

how runs stay out of each other's way

Runs on your machine, in one Docker container. No account, no telemetry, no third-party service. Source-available.

winnow

An instrument for deciding whether pruning a Claude Code session is worth what it costs.

measured

Cache reads bill at 0.1× and writes at 1.25× or 2×, and matching is prefix-ordered — so a prune invalidates everything after the cut. Break-even is T* = 19·(S/D) − 20 further turns.

the break-even formula

Stdlib only. No model call, no network, no MCP server. Three of milestone 2's acceptance criteria are still open.

DaiVELOPER

An MCP server that gives a coding model a code-structure-aware view of a repository instead of a generic filesystem.

measured

Twelve structural questions answered on 3,486 approximate tokens against a scripted native-tool agent's 16,495 — 78.9% fewer, every answer still derivable.

the whole table

A five-run proof of concept, not a product. stdio only, no network at runtime. 95.2% of its margin over the cheapest native sequence is one scenario.

openrepository not published

VisualEdit

Point at what is wrong on a running page; it writes a handoff folder a coding agent can act on.

anchors

React 19 removed _debugSource and Next maps stack frames rather than DOM nodes, so nothing in the browser knows which file rendered an element. A comment it cannot place is reported unlocated rather than aimed at a guess.

what it does

A Chrome extension, version 1.0.0. The Chrome Web Store is the only way it is distributed, and it is not listed there yet.

openrepository private

picoleaf

Drives Nanoleaf Canvas light squares from a Raspberry Pi Pico W, with no control square attached.

decoded

The Canvas panel bus had no public capture, decode or replacement controller, and no control square on the bench to record one from. It is single-wire half-duplex UART, 8N1 at 1 Mbaud; the trailer is CRC-16/ARC, poly 0x8005 reflected; a session drops unpolled — 476 ms held it, 497 ms did not.

the decode

A prototype instrument, not a product, and not affiliated with Nanoleaf. The bytes nobody has explained are tagged in the repository as unexplained.

Contact