will
A resident digital lifeform deployed as a two-container pod, grown through CI from this repository. Design of record: spec.html.
What is here
src/service— phenotype: stdlib HTTP + SQLite worker, public read-only web surface, pod-local API, archives and media storesrc/agent— senses and muscles: resident pi session, wake queue, Telegram runtime, curated ZAI capability tools, CI and deployment watchsrc/shared— contracts and pure policyweb— 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
trunkthrough 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.mdanddocs/test.md.