AI-Powered Novel Writing Assistant
QuillForge is a desktop application for web novel authors, combining a rich text editor with AI-assisted writing capabilities. It supports multiple LLM providers (OpenAI, Anthropic, Ollama, and OpenAI-compatible APIs), stores all data locally with encrypted credentials, and features an inline ghost-text completion system inspired by modern code editors.
|
Hierarchical organization: books → chapters, with per-book world settings, story outlines, and character profiles that serve as AI context. |
Select text and receive grammar, pacing, character consistency, and plot logic feedback with one click. |
|
Describe your current plot point and get 3–5 creative directions, informed by your book's established world and characters. |
AI-generated prose appears as ghost text directly in the editor. Tab to accept, Esc to dismiss — just like IDE code completion. |
|
Generate world settings and character profiles with structured AI output. Auto-parsed into editable form fields. |
OpenAI · Anthropic · Ollama · OpenAI-compatible (DeepSeek, Qwen, Doubao, etc.). Save as named presets and switch from the toolbar. |
|
Chinese (简体中文) and English. Switch on the fly from the toolbar. |
One-click toggle. Follows system preference by default. |
- API keys are encrypted with AES-256-GCM and stored in the Tauri secure store
- Keys never leave the Rust backend — the frontend only knows whether a key is configured
- All LLM HTTP requests are proxied through the Rust layer
| Layer | Stack |
|---|---|
| Desktop Shell | Tauri 2.x |
| Frontend | Vue 3 + TypeScript + Vite |
| State | Pinia |
| Editor | TipTap (ProseMirror) |
| i18n | vue-i18n |
| Backend | Rust — reqwest, tokio, aes-gcm |
- Node.js ≥ 18
- Rust ≥ 1.70
- Platform-specific Tauri dependencies
# Install dependencies
npm install
# Start development
npm run tauri dev
# Production build
npm run tauri build├── src/ # Vue 3 frontend
│ ├── components/
│ │ ├── ai/ # ReviewResult, IdeaResult, ContinueResult, AiPanel
│ │ ├── common/ # AppLayout, TitleBar, LoadingDots
│ │ ├── editor/ # NovelEditor, BookSidebar, BookSettingsPanel, CharacterPanel
│ │ └── settings/ # SettingsDialog, ProviderCard, ApiKeyInput
│ ├── stores/ # Pinia (book, editor, settings, theme, i18n)
│ ├── commands/ # Tauri invoke wrappers
│ ├── extensions/ # TipTap GhostText extension
│ ├── i18n/locales/ # zh-CN, en-US
│ └── types/ # TypeScript definitions
│
├── src-tauri/ # Rust backend
│ └── src/
│ ├── commands.rs # Tauri commands (AI, persistence, export)
│ ├── crypto.rs # AES-256-GCM encrypt/decrypt
│ └── llm/ # Provider implementations (OpenAI, Anthropic, Ollama, compat)
│
├── package.json
├── vite.config.ts
└── tsconfig.json
MIT © 2026 oxroot & Claude
Built with ❤️ by oxroot & Claude