# will A resident digital lifeform deployed as a two-container pod, grown through CI from this repository. Design of record: [spec.html](spec.html). ## What is here - `src/service` — phenotype: stdlib HTTP + SQLite worker, public read-only web surface, pod-local API, archives and media store - `src/agent` — senses and muscles: resident pi session, wake queue, Telegram runtime, curated ZAI capability tools, CI and deployment watch - `src/shared` — contracts and pure policy - `web` — handmade frontend (timeline, conversations, media, deployments) - `persona`, `.pi` — will's personality and skills (immutable image content) - `deploy` — external deployment contract, revision schema, quadlet templates - `.ci` — Luci validation/browser/canary jobs ## Development Requirements: Node 26, mise; podman for image/boot tiers. ``` mise install # node 26 npm ci npm run check # biome + strict tsc npm test # unit + property + integration npm run coverage # coverage with the committed ratchet npm run build # bundles + docs mise run dev # dev body in containers (prints URLs + curl recipes) mise run dev:chat hi # message the local will (echoes back as a wake) ZAI_API_KEY=... mise run dev # same body, real model session ``` Local dev uses `WILL_SESSION_MODE=fake` and a fake Telegram so the whole wake path runs offline; the real model session requires `ZAI_API_KEY` (pi's built-in `zai` provider). ## Layout notes - Production deploys only from `trunk` through Luci and the deployment platform (`deploy/contract.md`); there are no hot releases. - The service is the only SQLite writer; the agent talks to its pod-local API with a durable idempotent spool. - Every test tier is listed in `AGENTS.md` and `docs/test.md`.