Run Veni builder
Clone, configure, run. bun is the direct path; make wraps it.
Prerequisites
- Docker (Compose v2), Bun, and Node 20.12+ — the platform toolchain (full list).
- The
veniCLI onPATH— the Scaffold feature shells out to it. - The full platform running locally (Shell + Docker infra) — see Get started.
1 · Clone
git clone https://github.com/VENIZIA-AI/veni-builder.git && cd veni-builder2 · Configure
cp api/.env.example api/.env
cp ui/.env.example ui/.envapi/.env — only the signing secret is required; the rest already work locally. APP_ENV_NODE_ENV=development and APP_ENV_BUILDER_ENABLED=true are what unlock the scaffold + CLI-distribution endpoints:
APP_ENV_PORT=3010
APP_ENV_JWT_SECRET= # REQUIRED · openssl rand -hex 32
APP_ENV_NODE_ENV=development # must be development for scaffolding
APP_ENV_BUILDER_ENABLED=true # gate for scaffold + CLI endpoints
# APP_ENV_SCAFFOLD_ROOT=... # monorepo root the CLI runs from (default: 3 levels up)
APP_ENV_SHELL_JWKS_URL=http://localhost:3000/api/.well-known/jwks.json # verify Shell tokens
# APP_ENV_SHELL_PUBLIC_API_URL=... # Shell API as a LAPTOP reaches it — baked
# into install.sh for the device flow.
# Locally it falls back to the gRPC URL;
# in K8s you must set it (see below).Deploying the Builder? Set APP_ENV_SHELL_PUBLIC_API_URL
The installer it serves runs the device flow against a baked-in Shell URL, from a developer's machine. Unset, it falls back to APP_ENV_SHELL_GRPC_URL — correct locally, cluster-internal in Kubernetes (http://shell-api:3000/api), which no laptop can resolve. The symptom is an installer that stops at "could not start sign-in".
ui/.env — just the API URL and port:
VITE_API_URL=http://localhost:3010/api # must include /api
VITE_PORT=30113 · Run
Install dependencies, then run the API and UI in two terminals:
# API — terminal 1 (:3010)
cd api && bun install && bun run dev
# UI — terminal 2 (:3011)
cd ui && bun install && bun run devmake install
make dev-api # :3010
make dev-ui # :3011Open http://localhost:3011 — / and /docs are the component catalog. Shortcut: make dev runs both in the background (make stop to stop, make help lists every target).
Next: install the veni CLI, then scaffold an app.
Common snags
| Symptom | Fix |
|---|---|
| "Can't reach the Builder API" | Check the API is up on :3010 and VITE_API_URL ends with /api. |
API crash-loops: Environment validation failed: APP_ENV_JWT_SECRET | Blank in .env.example; set APP_ENV_JWT_SECRET=$(openssl rand -hex 32) in api/.env. |
| Scaffold form shows "Development only" / button disabled | The API gates scaffolding on APP_ENV_NODE_ENV=development and APP_ENV_BUILDER_ENABLED=true. Set both and restart the API. |
See also
- Overview — what Veni builder is and how it's built.
- Install the CLI — get the
venibinary once it's running.