Talk an app into being.
Kiln is experimental: a separate binary that mounts a chat panel on your running GoFastr app. The agent calls typed tools; the in-memory IR mutates; the schema migrates; the app re-renders, all in-process. Freeze the journal when done to emit the canonical entity files you commit.
Your app, being authored live
Illustration: your real app renders here as the agent edits it.
add a posts entity with title, body, status enum
Reading your existing schema. Three new tools required, no destructive changes.
looks good, ship it
Proposing a plan. Approve below to apply.
+ add_entity("posts") + add_field("posts", title) + add_field("posts", status)
Seven events from prompt to commit
Agent connects
kiln subscribes to its own SSE bus and spawns the configured CLI.Agent calls world_get
Reads the in-memory IR: current entities, fields, hooks, routes.Agent calls add_entity
Mutates the IR: posts(title, body, status). No DB write yet.Agent calls propose_plan
Lists destructive targets (none) and the three add_* operations.You click Approve
Plan id is stamped onto the agent's retry call.Schema auto-migrates
The plan applies and the schema auto-migrates in-process; the posts table is live.Journal freezable
kiln freeze --dir build/ snapshots the world; graduate to Go via a gofastr.yml app spec.
The agent acts within explicit limits
What the agent can do
- Add entities, fields, hooks, routes
- Migrate up + seed data
- Edit pages and screens (non-destructively)
- Inspect logs, run queries, browse docs
Without an approved plan
- Drop entities, fields, hooks, routes
- Migrate down
- Touch credentials, secrets, .env
- Spawn external processes you didn't allow
Two binaries. Two commands of setup.
Install the kiln binary alongside the gofastr CLI. Pick the agent CLI you already use; kiln spawns it as a subprocess with KILN_URL injected.