Technologies and AI services
Part of how development happens here. See also agent coding and the checks around it, the development workflow, and testing.
Specific technologies
TypeScript throughout; JavaScript files exist only as thin loaders. Node 24 and pnpm 10 workspaces across beebox, its frontend, tap-check, personal-vibe-check, workstreams-app, site, and others.
The backend is Fastify 5 with tRPC 11, including WebSocket subscriptions; raw Fastify routes are reserved for transports that do not fit tRPC. Zod 4 validates untrusted boundaries. SQLite through Node's built-in node:sqlite (wrapped by src/core/sqlite.ts) backs usage accounting and the event bus. The frontend is React 18 with Vite, TanStack Query and Router, XState 5, and Tailwind. Markdoc renders card markdown. Tests run on tap, with the tap-check plugin (t.check) layered on top.
Every box is a git repository, and its media is tracked with git-annex rather than Git LFS: git holds a pointer, annex holds the bytes. A Dockerfile and compose file cover the container install. The public site under site/ is a static Markdoc generator with no server-side anything and no external requests at view time.
AI services used
Beyond the coding agent, these are the only services box data leaves for, and each is configured by the person running the box. Keys live in a machine-level secrets store; a box gets access only when granted. The store and its grants are documented in secrets.md.
Transcription has four backends: OpenAI Whisper, Mistral's Voxtral, Deepgram, and Microsoft's diarized service, the last reachable only through OpenRouter. Text to speech uses OpenAI, or Gemini on Google's own API (OpenRouter proved too slow and unreliable as a proxy for it, and drops speaking style). Search embeddings use OpenAI. Scan and image understanding defaults to Claude, with a Gemini backend available, and Gemini also handles audio questions. Google OAuth and an R2 publish target are connector credentials rather than model services. The repository configures image generation only for its own architecture illustrations; it is not a product feature.
The box's own agent runs on one of three engines, Claude, Codex or pi, pinned per box. The model provider behind the coding agent therefore sees every agent turn. pi sends turns only to OpenRouter, for models the owner added; see the pi engine.