Releases: enclavum/otaku
Release list
v0.4.3
v0.4.2
v0.4.1
v0.4.0
- Added web UI:
otaku webopens the same session in a browser — the second frontend, over the
same stories, the same lore and the same commands. - Added native Windows support (10 and 11, 64-bit only).
- The context builder is reworked from the ground up, after
docs/context_design.md; the new
max_contextsetting keeps the prompt inside the window models still handle well for roleplay. - The lore browser in terminal (
/lore,/cast) is reworked to include the system message and
the story messages. - Prompt caching for OpenRouter.
- Sound notifications.
- A second, longer sample story.
v0.3.0
- New feature: character card import with the
/cardcommand. - Commands
/meand/yousuggest and autocorrect cast names. - New commands available mid-prompt only:
/oocand/cue, both hinting the LLM —/ooc
introduces a standing note,/cuea one-time steer that the LLM won't see later. - The browsers (
/stories,/lore,/model) follow the terminal theme. - Commands get highlighted.
otaku 0.2.2
- New providers: OpenRouter and NanoGPT (cloud), llama.cpp and LM Studio (local); the prompt for
cloud providers is$instead of>. - Numerous UI improvements, including:
- dialogue coloring;
- undo erases the taken-back exchange from the screen;
- regenerate erases the old reply and streams the new one in its place;
- a rule drawn across the screen wherever the played story breaks;
- providers configurable directly in the model picker (
/modelor Ctrl+O); /systemaccepting a file in addition to text input.
- New commands:
/clear,/last,/balance; command/renamerenamed to/title. - New CLI command:
otaku update.
otaku 0.2.1
Packaging only — no functional changes.
Changed
- The required Python version is now 3.11, down from 3.14.
- Dependency bounds updated.
otaku 0.2.0
0.2 is a ground-up rewrite as a roleplay terminal client: chats are stories that can be
branched from any message, a background pass extracts lore from played messages — scenes,
characters, journals — and the context sent to the model keeps the opening and the recent tail
verbatim with scene summaries in between.
What carries over from 0.1: local models, one terminal, encrypted storage. The 0.1 chat and fleet
features (one-shot/pipe mode, otaku list/otaku stop, cross-provider RAM management,
/remember defaults) are gone. The database schema is new.
Added
- Stories: branch from any message, fork with its memory, resume where you left off; a
full-screen story browser with message-level resume and in-place editing. - The lore engine: idle-debounced background extraction closes scenes over played messages, keeps
per-character journals with rolled-up histories, and feeds the story back to the model as a
recap;/lorebrowses and edits the memory in place. - Roleplay commands:
/me,/you,/ooc— framing joined at wire time, bodies stored verbatim. - Import and export: a lossless Markdown story document, SillyTavern
.jsonlchats, and
plain-text dismantling — the format detected from the file. - A sample story seeded into a fresh database, so a first launch lands mid-story — with or
without a reachable model. - Day-rotated request, system, and error logs (
otaku logs).
otaku 0.1.2
Hardening release: complete state-dir isolation, never-overwrite key handling, and REPL quality-of-life.
Fixed
OTAKU_CONFIG_DIRis now fully isolated. Previously a custom state dir
wrote a config pointing at the default~/.otaku/history.db, and — much
worse — its first run replaced the shared OS-keychain key, making the
primary setup's history permanently undecryptable. Each dir now gets its own
default database and its own keychain item; the default~/.otakukeeps the
legacy item name, so existing installs keep unlocking.- Unlock failures no longer stutter ("Could not unlock encryption key: could
not unlock…") and a key mismatch is spelled out instead of surfacing as an
empty error. /rememberno longer risks dropping other models' saved defaults when
model_defaults.jsonis corrupt — it refuses instead, and writes atomically.
Changed
- Key setup never overwrites anything. Provisioning reuses an existing
keychain orretrieve_commandkey instead of replacing it, keychain writes
are add-only, andkeys.jsonis created exclusively — so deleting
keys.jsonno longer burns the key, and a restored backup keeps working.
A stray pre-envelopehistory.keyis left in place rather than deleted. - Bare
otakuunlocks encryption before the model picker, so interactive
key ceremonies (passphrase,commandproviders) happen up front. /historyrows fall backtitle → summary → first prompt.- Config paths in notices are shown
~-shortened; shorter-nrbanner.
Added
/modelremembers the switched-to model as the last used one (the picker
preselects it next time).[defaults].verbose— set the stats line globally (a session-wide UI
preference; deliberately not per-model, so/rememberdoesn't pin it).
otaku 0.1.1
Initial public release. (0.1.0 was a premature PyPI upload from a pre-release
tree — it was never tagged and is superseded by 0.1.1.)
Added
- Multi-backend client for Ollama, LM Studio, MLX (omlx), and any
OpenAI-compatible server — from one terminal command. - Zero-config first run: the initial
~/.otaku/config.tomlauto-detects each
built-in engine's port (and omlx's API key) from your environment
(OLLAMA_HOST) or the engine's own settings file, falling back to the
standard default. Runs once, at that first write; edit the sections freely
afterwards. - Cross-provider model management:
otaku list(with--runningto show only
loaded models), load and unload from the picker,otaku stop --all, with a
live RAM gauge. Provider queries run concurrently with a short (0.5s) probe
timeout, so one configured-but-down provider no longer slows every command;
when nothing is reachable, otaku names each provider, whether it answered,
and points at~/.otaku/config.tomlto fix. - Chat REPL: streaming responses, thinking-effort control, tok/s stats
(/set verbose, off by default), triple-quoted multiline input, in-chat
model switching (/model),/new(fresh conversation) vs/clear(reset
context in place), and slash commands. - Streaming markdown rendering: headers, lists, blockquotes, rules, and fenced
code blocks (syntax-highlighted via Pygments) on top of inline emphasis/code. - omlx output smoothing (
[providers.omlx].smooth, default on): de-jitters
omlx's bursty token delivery into steady typing, without affecting tok/s. - Persistent session defaults: a
[defaults]config section (system, think,
parameters, no_record) plus per-model overrides keyed by bare model name;
/remembersaves the current settings as the model's defaults. - One-shot / pipe mode:
otaku <model> "prompt"and… | otaku <model>
print a plain reply and exit (prompt + stdin combined instruction-first),
so otaku works as a Unix filter. - Encrypted conversation history (AES-256-GCM), searchable across all
conversations by full message content, with background LLM-generated
summaries (idle-debounced so they never block exit or reload a cold model;
[defaults].create_summaries/summary_idle_seconds), user-set titles
(/title, shown in the/historypicker), and resume-from-any-turn. - Get answers out:
/copy(last reply or whole chat → clipboard, via the native
tool or an OSC 52 fallback) and/save <file>(conversation → Markdown). - Install via
uv tool installor Homebrew (brew install enclavum/tap/otaku). - Runs on macOS, Linux, and Windows. On Windows the streaming-time Ctrl+R
(cancel + regenerate) shortcut is disabled — it needs a POSIX terminal — but
everything else works; WSL gives full parity.