# AGENTS.md Guidance for AI agents and contributors working in this repo. Read `README.md` for commands and layout. ## Project priorities (do not erode) 1. **Simplicity** — prefer the smallest, most readable solution. 2. **Few dependencies** — runtime deps stay minimal (today `ejs`, `lucide-static`, `@larvit/log` — the last itself zero-dependency, for structured/OTLP logging). Prefer the Node standard library; justify any new dependency; do not add frameworks. The app is **stateless — no database**. Auth/identity/OAuth are **Ory sidecar services** (Kratos/Keto/Hydra, backed by Postgres), reached over their REST APIs with built-in `fetch` — no SDK dependency. New capabilities ship as **plugin folders** under `plugins/` that fetch their data from upstream services, not as core code. See `README.md` for the architecture. 3. **Strict TypeScript** — `tsconfig.json` is strict (incl. `noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`, `verbatimModuleSyntax`). Keep it that way. 4. **Environment-agnostic** — the app never asks *which environment* it runs in; there is no `NODE_ENV` (or equivalent) branching. Every behaviour is an **explicit config toggle** (e.g. `CACHE_TEMPLATES`, `REQUIRE_SECURE_SECRETS`, a future "disable email"), read once in `src/config.ts`. Compose files set the toggles per deployment. 5. **Semantic, accessible DOM** — markup is a first-class concern. Use the right element for the job (landmarks, one `

` per page + sane heading order, lists, `` with row/column headers, `
`/``, `