open source · MIT · WIP

Your terminal
can talk now.

Kaja CLI is an open-source terminal chat assistant featuring personas, tools, and speech, running on the model you choose in the language you like.

curl -fsSL https://kaja.io/setup.sh | bash
kaja
$ kaja
> how can i watch one night in paris tonight in the uk?
⋮ calling web_search …
✓ found 2 relevant films
There are actually a couple of films with a similar name. Just to check — are you referring to:
1. One Night in Paris (2021) – a French stand-up comedy special on Netflix featuring top French comics
2. …
* nevermind

Why Kaja

built with Bun + TypeScript
~/
Local or cloud models
Any OpenAI-compatible API — Ollama, Fireworks, MiniMax M3, and more.
Voice in, voice out
Mic dictation and TTS via speaches, toggle with Ctrl+T.
@
Personas
Switch the assistant's character without restarting.
()
Tool use
Web search (Brave), location lookups, and more as config groups.
tg
Also on Telegram
kaja telegram runs the same personas, tools and models as a bot.
{}
Bun + TypeScript
Fast startup, single binary install, no runtime bloat.

Personas

~/.config/kaja/personas/*.toml

Each persona is a .toml file: a label, its system-prompt instructions, and an optional when clause. Kaja reads the room and switches personas mid-conversation on its own — no command needed.

Helpful assistant
default.toml
when = "no other persona clearly fits the conversation"
Barkochba guesser
barkochba.toml
when = "the user wants to play a guessing game / twenty questions"
Self-care companion
care.toml
when = "the user talks about their day, feelings, mood, or personal struggles"
Onboarding assistant
onboarding.toml
when = "a new user should be walked through the initial getting-to-know-you questions"

Memory & datasets

How Kaja remembers you, across chats and sessions.

Persistent memory

Kaja remembers key facts about you and recalls them later, so you never repeat yourself. — Mark the important ones sticky to keep them in every conversation.

Dataset collection

Some personas monitor a conversation for a set of fields and gently repeat their questions — even day after day — until every one is filled in.

Configuration

~/.config/kaja/

Everything lives in plain files. Fetch templates during onboarding and edit them by hand if tweaking is necessary.

~/.config/kaja/ ├─ settings.toml # optional settings and app preferences ├─ models.toml # model catalog per provider ├─ mcp.toml # model context protocol servers ├─ personas/*.toml # one behaviour per file └─ datasets/*.json # custom fields for personas to collect
Built-in tools
current_timeCurrent date/time in any IANA timezone
read_fileRead a text file
list_filesList a directory
fetch_urlFetch a URL and extract to text
web_searchLocaction based web search via Brave API
view_imageSee an image's contents
generate_imageGenerate an image from a prompt
summarizeSummarize text
rerankRank documents against a query
memoryRemember durable facts across sessions
dataset_infoTrack persona dataset collection progress

Install

Only tested on Linux. A setup wizard walks you through config on first launch (or anytime config is missing/invalid) — no separate step needed.

On Mac/Linux:

curl -fsSL https://kaja.io/setup.sh | bash

On Windows:

irm https://kaja.io/setup.ps1 | iex

Prefer a plain binary? Grab one from Releases — Linux, macOS, and Windows, x64 and arm64.

MIT License · built with Bun + TypeScript · by SubZtep · 2026
Star on GitHub