The lite version of UltraKit — an AI application starter kit for the Claude Code era.
This is the free, open-source teaser. The full version includes 4 LLM providers (incl. self-hosted), Drizzle + MySQL, Better-auth, vector stores, full RAG pipeline, production essentials, 3 themes, and plug-and-play add-ons. Join the waitlist →
30-second demo of the streaming chat UI. Full version has 4 LLM providers, RAG, auth, and more.
- Clean architecture — two-layer separation of
src/lib/(platform primitives) andsrc/features/(composable modules) - AI-assistant-native conventions —
CLAUDE.md,AGENTS.md,.cursorrulesfiles so Claude Code and Cursor extend the codebase correctly - Clean code enforced — ESLint rules, pre-commit hooks, strict TypeScript — commits fail on messy code
- Streaming chat UI — working OpenAI-backed chat demo using the LLMClient abstraction
- Feature module template — ready to copy when adding new features
- Self-hosted LLM adapter
- Multiple LLM providers (just OpenAI here)
- Authentication
- Database + migrations
- Vector store + RAG pipeline
- File upload
- Production essentials (rate limiting, cost tracking, observability)
- Multiple themes
- Docker, Makefile, Storybook
- Commercial support
These are all in the full version. Join the waitlist →
pnpm install
cp .env.example .env.local
# Add your OPENAI_API_KEY to .env.local
pnpm devVisit http://localhost:3000.
The LLM client speaks the OpenAI protocol, so it works with any endpoint that does too. Just set OPENAI_BASE_URL in your .env.local:
# OpenRouter (access to 100+ models through one key)
OPENAI_API_KEY=sk-or-v1-...
OPENAI_BASE_URL=https://openrouter.ai/api/v1
OPENAI_MODEL=anthropic/claude-3.5-sonnet
# Ollama (self-hosted, free)
OPENAI_API_KEY=ollama
OPENAI_BASE_URL=http://localhost:11434/v1
OPENAI_MODEL=llama3.2
# Groq (fast inference)
OPENAI_API_KEY=gsk_...
OPENAI_BASE_URL=https://api.groq.com/openai/v1
OPENAI_MODEL=llama-3.1-70b-versatileZero code changes. One env flip switches between cloud and self-hosted. The full version of UltraKit adds native Anthropic, Gemini, and a dedicated OpenAICompatibleProvider to make this even cleaner.
pnpm check:qualityRuns ESLint, TypeScript typecheck, and tests. Pre-commit hooks call this automatically — commits fail on lint errors, type errors, missing tests, or files over 300 lines.
# From the project root
claude "add a simple document summary feature module"Claude Code reads CLAUDE.md and docs/clean-code-rules.md, copies the features/chat/ pattern, creates a new module with tests, and the pre-commit hooks verify the output is clean.
src/
├── lib/ # Platform primitives (stable foundation)
│ ├── llm/ # LLM client abstraction with OpenAI provider
│ └── env.ts # Env validation
└── features/ # Composable feature modules
└── chat/ # Streaming chat feature
├── index.ts # public API
├── chat.ts # core logic (tested)
├── chat.types.ts # types
├── chat.test.ts # tests
├── components/ # UI
└── hooks/ # React hooks
This is a teaser repo. Issues and PRs welcome, but active development happens in the full version.
MIT — do anything you want with this code, including commercial use.
Built by an experienced full-stack engineer shipping AI applications for a living. 10+ years of experience spanning consumer-scale systems and enterprise AI work.
This ships under a brand, not a face — my day job requires it. Follow on Twitter/X →
