| .github | ||
| .vscode | ||
| default | ||
| docs | ||
| fastools | ||
| nix | ||
| scripts | ||
| src | ||
| src-tauri | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .taurignore | ||
| AGENTS.md | ||
| CONTRIBUTING.md | ||
| ExtensionDEV.md | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| README_EN.md | ||
| rspack.config.js | ||
| tsconfig.host.json | ||
TauriTavern
SillyTavern, as a native app — desktop & mobile, out of the box
简体中文 · English
Download
Tip
iOS: install via the public TestFlight beta. It requires iOS 16 or later. TestFlight builds are subject to Apple's TestFlight rules and have usage restrictions.
Windows portable: requires the WebView2 runtime on the system.
What is TauriTavern
TauriTavern ports SillyTavern into a true native app: the frontend keeps the full upstream experience (synced to 1.18.0), while the backend is rebuilt from Node.js into Rust (Tauri v2).
No Node.js to install, no command line — just download and run. Your character cards, chats, presets, world info, and frontend extensions all stay compatible with SillyTavern.
Note: TauriTavern is an independently maintained open-source project, not an official SillyTavern client. TauriTavern is free and open source under the AGPL-3.0 license. Please review the license terms before use.
Highlights
- 🖥️ Five native platforms: Windows, macOS, Linux, Android, and iOS — one experience everywhere
- 🎭 Full SillyTavern experience: frontend synced to upstream 1.18.0, with fully compatible data formats and directory layout
- 🧩 Frontend extension ecosystem: built-in native Git — install, update, and switch branches right in the UI (Node-only backend plugins are not supported)
- 🔄 Built-in multi-device sync: encrypted LAN pairing, or automatic upload via the remote TT-Sync v2
- 🤖 Agent framework: tool calling, Skills, sub-agents, and a run timeline; development is ongoing
- 📦 One-click migration: SillyTavern export scripts + in-app import for a smooth move
- ⚡ Performance engineering: phased startup and windowed chat loading keep even very long chats smooth
- 🔒 Your data, yours: everything stays on your device, with an optional portable mode
Screenshots
Architecture at a Glance
The Rust backend is a Clean Architecture Cargo workspace (src-tauri/crates/):
tauritavern: Tauri host, command layer, and composition roottt-application·tt-ports·tt-domain·tt-contracts: use cases, ports, domain models, and cross-crate contractstt-adapter-*: concrete storage, HTTP, media, sync, extension, and tokenization implementations
The frontend is upstream SillyTavern plus a modular Tauri injection layer (src/tauri/main/), talking to the Rust backend through the window.__TAURITAVERN__ platform ABI. See docs/BackendStructure.md and docs/FrontendGuide.md for details.
🛠 Development (prerequisites · common commands · Tauri Pilot · portable builds · FasTools)
Prerequisites: Rust stable (edition 2024) · Node.js 20.19.x or 22.12+ · pnpm · Tauri CLI
git clone https://github.com/Darkatse/TauriTavern.git
cd TauriTavern
pnpm install
Common commands:
pnpm run check # frontend guardrails/types/contracts + Rust dev check
pnpm run web:build # build frontend bundles (Rspack)
pnpm run tauri:dev # desktop dev mode
pnpm run tauri:build # build desktop installers
pnpm run android:dev # Android dev mode
pnpm run ios:dev # iOS dev mode
Tauri Pilot (UI development with AI agents)
The project already includes the development-only Tauri Pilot plugin and capability. It lets an AI agent inspect and operate the desktop WebView through accessibility snapshots. The standard development and release commands do not enable it.
cargo install tauri-pilot-cli # only needed once
pnpm run tauri:dev:pilot
After the app starts, use another terminal for the basic workflow:
tauri-pilot ping
tauri-pilot snapshot -i
tauri-pilot click @e3 # use a ref from the current snapshot
tauri-pilot diff -i
tauri-pilot logs --level error
Take a snapshot before interacting and perform one action at a time. Use wait after asynchronous updates and prefer assert for verification. An MCP-capable agent can register tauri-pilot mcp as a stdio server.
Portable builds: pnpm run tauri:build:portable (outputs to release/); force portable runtime with TAURITAVERN_RUNTIME_MODE=portable or a portable.flag file.
FasTools: the recommended toolkit for development and deployment debugging. Build with pnpm run fastools:build, run with pnpm run fastools:run.
Platform details: docs/AndroidDevelopment.md and docs/iOSDevelopment.md.
Documentation
- 📖 Online docs: bilingual guides covering usage, Agent, architecture, API, and downloads
- docs/FrontendGuide.md: frontend architecture and extension guide
- docs/FrontendHostContract.md: public host-layer contract
- docs/BackendStructure.md: backend Clean Architecture and crate boundaries
- docs/CurrentState/: implementation status of shipped modules
Contributing
Issues and PRs are welcome! Please read CONTRIBUTING.md first, target the dev branch unless it is an urgent fix.
Acknowledgements & License
Built on SillyTavern and Tauri, with thanks to Cocktail, Tavern-Helper, LittleWhiteBox, and MikTik.
Released under AGPL-3.0 (same license family as SillyTavern).
Made with love and care ❤️ — The TauriTavern Team