docs/MODULE_MAP.md` (generated) for every module and blueprint. TL;DR:
- **Flask app** with embedded HTML/CSS/JS frontend (no build step, no npm)
- **Per-feature route modules** under `routes/` — `routes/sessions.py`, `routes/usage.py`, etc. — each
purely decorative images.
## SEO Best Practices
- Every page must have a unique ` `, ` `, and ` `.
- The frontend layout (`frontend-app.blade.php`) provides sensible defaults; child views override with `@section`.
- Open Graph (`og:title
Express backend handling agent lifecycle, tmux integration, state detection, and SSE broadcasting
- **`public/index.html`** — Entire frontend (HTML/CSS/JS) in a single file with vanilla JavaScript
### Backend Core Systems (server.js)
**Agent Registry
utils/*` → `src/utils/*`
## Key Patterns
### GraphQL API Layer
All backend communication is GraphQL-shaped — the frontend issues GraphQL operations, which `@lib/rpcGateway` parses and dispatches to upstream action handlers (mounted under `/rpc
TypeScript strict mode. No `any` types — use `unknown` + type guards or proper generics.
3. **Frontend framework**: React 19 + React Router 7 + Vite. Do not introduce Next.js or other meta-frameworks
with hot reload)
bun run tauri:dev
# Build production app
bun run tauri:build
# Frontend only (Vite dev server on localhost:3000)
bun run dev
# Lint and format
changes are
picked up by Tauri's own dev loop.
## Architecture
### Two-side split
- **Frontend** (`src/`) is a thin Vue 3 SPA. State lives in `App.vue` refs;
there
single test
cd engine && source .venv/bin/activate && pytest tests/test_cards_api.py::test_function_name -v
# Frontend dev only (no Tauri shell)
cd ui && npm run dev
# Type check frontend
cd ui && npx svelte
code unchanged; the tray depends on them directly); **file/env/process
> routes are tray commands** (`tray/src-tauri/src/`). Frontend consumers reach Rust **only** via Tauri
> `invoke`/events through `ui/lib/bridge.ts` (`load`/`mutate` → `invoke`; `subscribe
migration, skills, hooks, reset) | `docs/agentic/adding-agent-runtime.md` | `docs/vi/agentic/adding-agent-runtime_vi.md` |
| Remote Hermes over LAN (Intern 2 as voice frontend for a Hermes server on the user's Mac, setup script, URL/token, verify) | `docs/agentic/remote-hermes.md` | `docs/vi/agentic/remote-hermes_vi.md
Pair is a Tauri 2 desktop app (Rust backend, React 19 + TypeScript frontend) that orchestrates two AI agents working together on a coding task:
- **Mentor** — read-only planner/reviewer
- **Executor** — code
A file Claude Code reads at the start of every session. It holds the commands, conventions and warnings the agent needs for this project.
Where does it go?
At the repository root. Claude Code also reads CLAUDE.md files in subdirectories when it works there.
What should it contain?
Build and test commands, the project's layout, conventions that aren't obvious from the code, and mistakes to avoid. Short files tend to work better than long ones.
CLAUDE.md or AGENTS.md?
Claude Code reads CLAUDE.md; most other agents read AGENTS.md. Many projects keep one and point the other at it.