Help us shape the future of Go! Take the 2026 Go Developer Survey

builder

command
v0.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2026 License: MIT Imports: 23 Imported by: 0

README

Builder

You type "build me a…" on the dashboard and watch it become a deployed app: interview → spec → build → test → live. The app owns the interview, the spec gate, and run state; everything past the gate runs outside this process behind the spool (ADR-0023, builder-plane.md).

Records

  • runs — id (r<unix-ms>, shared with the spool), idea, slug, spec markdown, status (interviewing → ready → building → deploying → live | failed), failure detail.
  • messages — the interview transcript (user/assistant).
  • run_events — mirror of the spool's events.jsonl (seq = line number, so tailing is idempotent).

Views

  • GET / — idea input + run list (live region on the standard /_live hub).
  • GET /runs/{id} — interview chat, spec + approve button, build log. Live via a per-run SSE loop (GET /runs/{id}/live) that re-renders every 2s and patches only on change — the /_live hub carries no per-run context.
  • POST /runs, POST /runs/{id}/say, POST /runs/{id}/approve.

The pipeline

  1. Interview — design-app skill as a gateway conversation (llm.WithUser); protocol: the final turn starts SPEC_READY slug=<slug> followed by the spec (interview.go). Bad/taken slugs bounce back one interview turn.
  2. Spec gate — the approve button; the ONLY human gate (by owner decision, 2026-08-02).
  3. Build/test/deploy — the app writes build/<run>.request.json; the runner (as builder) builds in a clone and sandbox-tests on 127.0.0.1:42101; the monitor goroutine tails events, then writes the deploy request; the deploy watcher (as the platform user) re-checks, pushes main, quiesces, deploys --edge.

Platform surfaces

  • Dashboard card: active run status, else shipped count.
  • Chat over run state; tools list_runs, get_run, start_build (marked explicit-request-only).
  • Intent build-app (accepts text): selected text anywhere becomes an app idea.

Services

pkg/llm for the interview (~2s/turn; the say handler is synchronous and redirects — no streaming needed). No audio.

Non-goals

  • No modifying existing apps — v1 builds new apps only (guardrails for migrations on live data are undesigned).
  • No deploy gate and no PR flow — spec approval is deliberately the last click; commits go straight to main (owner decision, 2026-08-02).
  • One run at a time end-to-end: the runner and watcher drain serially; the app doesn't enforce it but the plane does.
  • In dev (just dev) requests queue in data/spool with nothing consuming them — runs sit honestly at "building". The plane exists only on the app host.

Later

  • Modify-existing-apps with migration/backup guardrails.
  • Voice input for the interview (ui.VoiceButton — natural fit, deferred).
  • Stall detection: a run stuck in building for hours should self-fail.

Documentation

Overview

builder: the app that builds new apps (ADR-0023, docs/design/builder-plane.md). It owns the interview, the spec gate, and run state; the actual building and deploying happen outside this process, behind the spool.

Directories

Path Synopsis
templ: version: v0.3.1020
templ: version: v0.3.1020

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL