Open-source, AI-optional technical slide platform with BYOK model support.
ProofDeck is designed around a strict separation:
- Core editor is local-first and fully usable without AI.
- Intelligence layer is pluggable via provider adapters.
- Users bring their own keys/endpoints (OpenAI, Anthropic, Gemini, OpenAI-compatible local endpoints).
apps/web: Vite + React technical slide editor MVPpackages/core: deck schema, math symbol registry, deterministic lint rulespackages/ai: model-agnostic AI provider contracts + AI SDK adaptersdocs: architecture and extension docs
- Local-first slide editing with persistent Deck JSON (
localStorage) - Smart block types: text, math (KaTeX), graph
- Deterministic notation linting:
- undefined symbols
- duplicate definitions
- unbalanced delimiters
- BYOK configuration UI
- AI SDK provider routing with encrypted local API key storage
- AI notation review and AI graph suggestion hooks
- Frontend: React + Vite + TypeScript + Zustand
- Math rendering: KaTeX
- AI layer: Vercel AI SDK (
ai) + provider adapters - Schemas: Zod
npm_config_cache=/tmp/npm-cache npm installnpm run devnpm run build- API keys are never sent to ProofDeck servers.
- API keys are encrypted in browser local storage (AES-GCM via Web Crypto + passphrase-derived key).
- Key must be unlocked in-session via passphrase before AI calls.
The core AI provider interface is implemented in packages/ai/src/types/aiProvider.ts:
interface AIProvider {
reviewNotation(deck: Deck): Promise<ReviewResult>;
suggestGraph(equation: string): Promise<GraphSpec | null>;
validateEquation(equation: string): Promise<ValidationResult>;
formatCitation(input: string): Promise<Citation>;
}- Add plugin loader API for external provider/lint/citation modules.
- Add collaboration and citation provider plugins.
- Add desktop packaging (Tauri/Electron).
- Add Dockerized self-host deployment profile.