Install
Otaku is free and open source (MIT). Install it with uv — `uv tool install otaku` — or with Homebrew: `brew install enclavum/tap/otaku`.
Get started
On first start, you choose a provider and a model: otaku automatically detects local installations of Ollama, oMLX, LM Studio, llama.cpp, and KoboldCpp and lets you pick from their models. Cloud providers (OpenRouter, NanoGPT) are added right there in the picker — enter an API key and their catalogs appear. After you've chosen, you land at the prompt. If nothing is running yet, otaku opens anyway — pick a model later with `/model`.
To give you an idea of the features and what play looks like, on first start a sample story is imported, and you land right in the middle of it. You can explore it with the `/lore`, `/cast`, and `/context` commands.
From there, you either start your own story with the `/new` command or import an ST chat with `/import`. Importing takes time, because it doesn't only import the messages — it also extracts characters and scenes from them (more on that below). You can also import a plain text file the same way; it will be split into messages. The format is detected from the file, and the extension has to match: `.jsonl` for an ST chat, `.txt` for plain text, `.md` for an otaku export.
Features
1. The play, stories, and branches
You send messages as usual, as your persona; the LLM infers which character to play from the dialogue. There are three helper commands — `/you`, `/me`, and `/ooc` — which only frame your prompt with minimal injections like "you play as …" (you can configure these templates in `~/.otaku/configs/prompts.toml`).
During play, you can `/undo` and `/regen` the last message. You can branch a new version of the story with `/fork`, or start a new story with `/new`. The `/stories` command lists your stories and their messages; you can switch to a previously played story from there, and resume it from any message. If you don't like an earlier message, you can also edit it in the `/stories` view.
2. Summaries and character extraction
After you've sent around 50 messages, a summary pass starts automatically in the background once you've been idle for 5 minutes, so it doesn't disturb your roleplay. You can also run it on demand with `/extract`. You'll see a notification and its progress in the status bar, and you can keep playing meanwhile — replies will just be slower while it runs. Once it completes, you can browse and edit the extracted summaries and characters with the `/lore` and `/cast` commands. Summaries are editable, so you can correct them however you like.
3. How the context is constructed
The summaries only kick in once you have more than around 200 messages in the chat. The first 20 and the last ~150 messages (both configurable) are always sent as-is, to preserve maximum detail and your prose style; everything in between is replaced with scene summaries. So even though summaries may exist up to the latest message, only the older ones are actually used.
4. Other features: - importing chats from ST, with scene and character extraction, - importing a plain text file, parsed into turns, with scene and character extraction, - loading and unloading models in Ollama, oMLX, and LM Studio directly from the app, - and more.