May 5, 2026
Why a language tutor should be local-first
Most AI language tutors treat your study state the same way a chatbot treats yesterday's small talk: ephemeral, lossy, replaceable. Some don't even keep your chats around. Most don't store the words you've looked up unless you remember to click "save". Almost none let you walk away with your data in a portable format.
That's fine for a tool you'll forget about in two weeks. It's wrong for a tool that's supposed to take you from "你好" to reading 鲁迅 over the next three years.
Fluency is a long game
Anyone who's reached a serious level in a second language knows the same thing: it took a long time, and the system that worked was the one you didn't have to keep rebuilding. Anki decks survived laptop reinstalls. Frequency lists got copied between machines. Notebooks were physical objects you could put on a shelf.
Tokori starts from that observation. The vocabulary list, the reader documents, the SRS state, the dictionary you imported, the chat history with your tutor — all of it lives in a single SQLite file on your machine. You can back it up with anything that copies a file. You can rsync it to a new laptop. You can crack it open with the standard sqlite3 CLI when something breaks.
Local doesn't mean offline-only
Tokori still talks to LLM providers — that's where the conversational tutoring power comes from. But your state doesn't go through a Tokori-controlled server on the way. You bring your own provider key (OpenAI, Anthropic, Gemini, Ollama for fully local), and the request goes straight from your machine to the provider you typed in. We never see it.
The same goes for the dictionary. We ship CC-CEDICT, JMdict, and the others as files you install once. Lookup is a SQLite query, not an HTTP round-trip. It's fast, it works on a plane, and it stays correct in five years even if some hosted dictionary site goes down.
The pricing implication
Local-first changes how the business model works. There's no per-message cost we have to mark up. There's no recurring infrastructure we have to amortise across a subscription. The app is free. We make money from optional content — curated vocabulary packs, textbook companions, dictionary imports — and from a hosted credits product for users who want one-click model access without the mental overhead of provider keys.
This is a deliberately small business model. We'd rather grow slowly with happy users than chase an "AI for languages" SaaS curve. The thing has to still work in 2030.
The API as a forcing function
The clearest test of "is this really local-first" is: can a third-party tool, with the user's permission, read and write Tokori data without going through us? The HTTP API answers yes. It runs on localhost, it's gated by a token that never leaves your machine, and it speaks the same data shapes the desktop app uses internally.
That means a developer can build an Obsidian plugin, a Raycast extension, or a daily cron job that syncs reviews to their phone — without our blessing, without our involvement, and without the risk that we shut it off. That's the test, and it's the test most cloud SaaS tools fail.
If you're new here
The fastest way to get a feel for what this looks like in practice is the two-minute quickstart in the app. Pick a language, plug in any LLM, click a few words. The vocab list builds itself. The session timer runs in the background. Tomorrow your reviews will be waiting.
And next year, when you've moved laptops twice and switched providers three times — your study will still be there.