Luigit
repositories / will

will

owned by admin

README.md

Raw
Rendered preview

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 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.
# 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`.