A local-first desktop workspace for writing novels with an AI co-author.
Brainstorm the idea, build the plan, draft scenes, and export a finished book — all on your machine, with your own AI account and nothing stored in the cloud.
Bowri is a desktop writing studio for long-form fiction. It walks a book from a blank page to an exportable manuscript through a guided workflow, and it treats AI as a proposal engine — every change the model suggests is shown in the UI and saved only after you approve it.
Your work lives in a local SQLite database. Bowri never uploads your manuscript; the only thing that leaves your machine is the prompt you send to your own AI account.
- 📖 Guided writing workflow — Brainstorm → Concept → Plan → Characters → World → Scene editor → Editing → Export.
- 🤖 AI co-author, human in control — the model proposes; you review a diff-style preview and accept or reject. Nothing is written behind your back.
- 🧠 Story bible awareness — characters, world, and continuity summaries are fed back into prompts so the AI stays consistent across chapters.
- 🎨 Cover & character art — generate a book cover, character portraits, and editorial illustrations through the same AI account.
- 💸 Cost visibility — token usage and generation cost are surfaced per request.
- 📝 Rich scene editor — a TipTap-based editor built for drafting and redrafting prose.
- 📦 Portable projects — export a project as a self-contained ZIP and re-import it anywhere.
- 🌍 Bilingual UI — Polish and English out of the box (i18next).
- 🔌 Bring your own AI — use a CLI subscription (OpenAI Codex or Anthropic Claude Code) or plug in an OpenAI / Anthropic API key.
- 🔒 Local-first & private — SQLite on disk, no accounts, no telemetry. Your manuscript never leaves your machine.
Bowri never hosts a model itself — it drives your AI account. Pick a text provider in the in-app AI settings:
| Provider | Auth | Notes |
|---|---|---|
| Codex CLI (default) | Your Codex CLI login (codex login) |
Reuses the official Codex CLI; also does image generation |
| Claude Code CLI | Your Claude Code CLI login (subscription) | Runs through the official Claude Code CLI |
| Anthropic API | Anthropic API key | Claude Sonnet / Opus / Haiku |
| OpenAI API | OpenAI API key | GPT-5.x / GPT-4.1 |
CLI providers reuse the login you already have — Bowri stores no tokens of its own. API providers need a key, which is saved locally in the app's data directory (plaintext JSON today; a keyring-backed store is the planned upgrade).
Image generation (covers, character art, editorial illustrations) currently
runs through the Codex CLI, so codex login is required for those features
regardless of the text provider you choose.
| Layer | Technology |
|---|---|
| Shell | Tauri 2 (Rust) |
| Frontend | React 19, TypeScript, Vite |
| Routing | TanStack Router |
| State/data | TanStack Query, Zustand, Zod |
| Editor | TipTap 3 |
| Storage | SQLite (local) |
| AI | Codex CLI · Claude Code CLI · Anthropic API · OpenAI API |
| i18n | i18next / react-i18next (Polish + English) |
- Node.js 18+ and npm
- Rust (stable, MSVC toolchain on Windows) — required for the desktop build
- An AI provider — a Codex CLI or Claude Code CLI login, or an OpenAI / Anthropic API key (see AI providers)
- Codex CLI — required for image generation (covers, character art) regardless of text provider
Install Rust on Windows if you don't have it:
winget install Rustlang.Rustup
rustup default stable
cargo --versionAuthenticate the Codex CLI (default text provider, and required for image generation):
codex --version
codex loginPrefer a different text model? Switch the provider to Claude Code CLI, Anthropic API, or OpenAI API in the app's AI settings.
From the repository root, with PowerShell:
npm install
npm run tauri -- devThis launches the full Tauri app with the Rust backend, SQLite storage, and Codex CLI integration.
Note: Image generation (covers, character art) can take several minutes. Bowri keeps a 600-second minimum timeout and copies the final PNG into the app's
coversdirectory once Codex CLI finishes.
For UI work you can run just the Vite dev server:
npm run desktopThis starts the browser preview only — it has no Rust backend, SQLite commands, or Codex CLI checks. Use it for styling and layout, not for testing real behavior.
npm testBowri/
├─ apps/
│ └─ desktop/
│ ├─ src/ # React frontend
│ │ ├─ app/ # Router & app shell
│ │ ├─ features/ # Brainstorm, book, characters, world, scenes, editing, export, ai
│ │ └─ shared/ # UI kit, i18n, API bindings
│ └─ src-tauri/ # Rust backend (Tauri commands, SQLite, Codex bridge)
└─ docs/ # Design system & planning docs
failed to run cargo metadata … program not found
Tauri can't find cargo. Install Rust, open a new terminal, and confirm
cargo --version works before retrying. If Cargo is installed but not on
PATH yet:
$env:PATH="$env:USERPROFILE\.cargo\bin;$env:PATH"
cargo --version
npm run tauri -- dev