Important
Kaja is still evolving ๐
๐ข
Kaja is an AI assistant you talk to from your terminal. Give it a task and it keeps looping with an LLM, using tools and switching personas as needed, until the job is done. Point it at a local model or a cloud one, chat with it in the terminal, on Telegram, or through a widget on your own website.
Under the hood it is a full-stack playground: a Hono API secured by Better Auth, a TanStack Start web app, and a React Ink terminal agent. All TypeScript, all Bun, one repo.
curl -fsSL https://kaja.io/install.sh | bash # macOS / Linux
kajaThat's cloud mode โ approve a device code in the browser and start chatting, no API key of your own. Run kaja --local instead to run the agent loop on your machine against your own provider; the first run writes ~/.config/kaja/ for you to fill in.
You need Bun and Docker Compose.
git clone https://github.com/SubZtep/kaja.git
cd kaja
bun install
bunx lefthook install # lint on commit, test on push
docker compose up -d db mail
bun dev # API + web portal, hot reload
bun dev:tui # the terminal clientdocker compose up -d (no service names) additionally builds and runs the API and web images.
Apps
api- REST API and cloud agent (
/nasi) - Authentication and database migrations
- Email sending and templates
- Widget bundle served to third-party sites
- REST API and cloud agent (
tui- Terminal UI for the AI agent
- Telegram bot
web- Public homepage
- Admin portal
Packages
nasiโ the agent brain: the loop, tools, and memoryschemaโ shared Zod schemas and typessharedโ small pure utilities
Until it reaches its 1st major version the codebase is under constant refactor.
Want the full story? ๐ Head to docs.kaja.io.