Pure TypeScript on Node, ESM throughout. React 19 dashboard. SQLite for persistence. Three inference providers behind one abstraction.
package.json)| Package | Why |
|---|---|
@anthropic-ai/claude-agent-sdk 0.2.38 | Per-session agent loop, MCP server hosting |
@anthropic-ai/sdk ^0.78 | Direct Claude calls (assembler, briefing, challenge) |
openai ^4.85 | Used by the local-Ollama and Mistral OpenAI-compatible paths |
fastify ^5.7 + @fastify/* | HTTP server, cors, helmet, multipart, rate-limit, static, websocket |
better-sqlite3 ^12.6 | Embedded DB; auth, sessions, archive, knowledge base FTS5 |
zod ^4 | Schema validation for tool args + API routes |
pdf-parse · mammoth · marked · docx | Parse PDF/DOCX/MD; emit DOCX |
puppeteer · satori · @resvg/resvg-js | HTML → image rendering (OG images, scorecards) |
stripe · @stripe/stripe-js | Billable-hours subscription (gated behind LAVERN_AUTH_ENABLED) |
resend | Transactional email |
prompts · pino-pretty | CLI prompts + log formatting |
Dev: typescript 6, tsx, vitest 4.
viz/package.json)| Package | Why |
|---|---|
react 19 · react-dom 19 | SPA |
vite 6 | Bundler + dev server |
tailwindcss 4 + @tailwindcss/vite | Editorial design system, utility layer |
motion 12 | Animations (Working view, gates, dashboards) |
recharts 3 | Cost gauges, scorecards, claw portfolio |
pdfjs-dist 5 | Client-side PDF preview |
canvas-confetti | Tasteful confetti on delivery |
@sentry/react 10 | Error reporting |
@stripe/stripe-js 9 | Billing checkout (when auth enabled) |
Test: vitest 4 + @testing-library/react + jsdom.
src/providers/mistral*.ts. Set LAVERN_PROVIDER=mistral.LAVERN_PROVIDER=local.site/) — static HTML, Netlify drag-and-drop.menubar/) — SwiftUI status app polling Claw API.npm test).Dockerfile + docker-compose.yml for self-hosting.gitleaks via npm run protect.ANTHROPIC_API_KEY=… # Anthropic, optional in demo MISTRAL_API_KEY=… # Required if LAVERN_PROVIDER=mistral LAVERN_PROVIDER=anthropic # anthropic | mistral | local LAVERN_AUTH_ENABLED=false # cookie auth + Stripe + Google OAuth SHEM_PORT=3000 SHEM_DEFAULT_BUDGET=5.0 # USD per session LAVERN_MANAGED_AGENTS_BRIDGE=0