The IR is the source of truth
Typed builders describe your app as data. The validator, compiler and runtime share one representation.
Invalid programs are hard to express. Valid programs are cheap to verify.
Give your coding agent a structure it can check: typed views, explicit data and contracts for every behaviour.
Start buildingUnderstand Hozu
ほぞ / A joint that fits.
Create an app, add a feature, check your work. Node 22.18 or newer.
Use --agent agents for Codex, Cursor or Copilot; --agent claude for Claude Code.
npm create hozu@latest my-app -- --agent claude
cd my-app
npm install
npx hozu add feature tasks --page /tasks
npx hozu checkTyped builders describe your app as data. The validator, compiler and runtime share one representation.
Given a state, when an event happens, expect a result. Every machine transition has a contract.
Declare who can see data and how fresh it must be. Hozu derives the render plan; only machine-bound views hydrate.
Each diagnostic carries a location, a cause and a suggested fix. Read it yourself or pass the JSON to your agent.
In the notes-app correctness trial, Hozu passed 72/72 checks and Nuxt passed 67/72 across two runs per framework. One Nuxt change broke existing behaviour. This is a small sample, not an estimated failure rate.
| Framework | Checks passed |
|---|---|
| Hozu | 72 / 72 |
| Nuxt | 67 / 72 |
The trade-off: trial 0012 used 2.79× Nuxt’s weighted tokens to build and 2.06× to change. With the account scaffold, trial 0013 reduced build cost to 1.66×, reusing the earlier Nuxt baseline.