Model or dataset
Darkatse/TauriTavern avatar
Darkatse/TauriTavern

TauriTavern: SillyTavern's Frontend in a Rust Backend, Without Node.js

The classic Sillytavern, now has been rewritten in Tauri/Rust.

1,620 stars135 forksJavaScriptAGPL-3.0

At a glance

What is it?
TauriTavern repackages the SillyTavern frontend as a Tauri v2 desktop and mobile application with a Rust backend. The pitch is install-and-run compatibility; the trade-off is that a Node.js rewrite is not a drop-in replacement for every backend extension.
Who is it for?
Adopt TauriTavern if you want the SillyTavern frontend on Windows, macOS, Linux, Android or iOS without installing Node.js or touching a command line, and if your extensions are frontend-only. Do not adopt it if you depend on Node.js backend plugins, because the README states those are not supported, or if you need a stable mobile client today: iOS ships through TestFlight under Apple's rules.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly JavaScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The Problem TauriTavern Targets: SillyTavern's Install Friction

SillyTavern ships as a Node.js application. Running it means installing a Node runtime, fetching the repository, installing dependencies and starting a server that you then open in a browser. That workflow is fine on a developer laptop. It is awkward on a phone, tedious on a fresh Windows machine, and it keeps the application one browser tab away from everything else you have open. TauriTavern's stated goal is to remove that layer: the README describes it as porting SillyTavern into a real native application, with the frontend kept intact and the backend rebuilt in Rust on Tauri v2. The audience is people who already use SillyTavern and want it as an installed app on desktop and mobile, plus people who bounced off the Node setup entirely. The README is explicit that TauriTavern is independently maintained and is not an official SillyTavern client, which matters if you were expecting upstream support channels to cover it.

What Actually Changed: A Cargo Workspace Behind an Unchanged Frontend

The split is cleaner than a typical fork. The frontend is upstream SillyTavern, synced to version 1.18.0 according to the README, plus a modular Tauri injection layer under src/tauri/main/. The two halves talk through a platform ABI exposed as window.__TAURITAVERN__. Everything the frontend already knew how to do (character cards, chat logs, presets, world books) keeps working because the data formats and directory layout are kept compatible. The Rust side is a Cargo workspace under src-tauri/crates/ that the README says follows Clean Architecture. The tauritavern crate holds the Tauri host, command layer and composition root. tt-application, tt-ports, tt-domain and tt-contracts carry use cases, ports, domain models and cross-crate contracts. Concrete implementations live in tt-adapter-* crates covering storage, HTTP, media, sync, extensions and tokenization. Two documents are named for the detail: docs/BackendStructure.md and docs/FrontendGuide.md. The practical consequence of this layout is that the backend is not a thin shim around the old Node server. It is a reimplementation, and any behaviour that lived in Node has to have been rebuilt as an adapter.

Installing TauriTavern: Package Managers, Scripts and Channels

The README routes most users to a downloads page that detects the platform, with GitHub Releases as the fallback. Package manager paths are documented per platform. On Windows, Scoop: scoop bucket add Darkatse https://github.com/Darkatse/Scoop-Darkatse.git followed by scoop install Darkatse/TauriTavern. On macOS, brew install --cask tauritavern. On Arch Linux, an AUR package tauritavern-bin maintained by a third-party contributor, installed with yay -S tauritavern-bin. Debian, Ubuntu, Fedora, openSUSE and NixOS go through a script: curl -fsSL https://raw.githubusercontent.com/Darkatse/TauriTavern/main/scripts/install-linux.sh | sh. Nix users can instead run nix profile add github:Darkatse/TauriTavern#tauritavern, and Flatpak is available through a remote at flatpak.tauritavern.com installing com.tauritavern.client. Two channel notes matter. Canary builds update daily and the README suggests trying Canary specifically when you hit a bug on stable, to see whether it is already fixed. Canary installs use the same Linux script with --channel canary, or nix profile add github:Darkatse/TauriTavern/Canary#canary. iOS is TestFlight only, requires iOS 16 or higher, and the README warns that TestFlight builds are subject to Apple's rules and carry usage limits. The Windows portable build needs the WebView2 runtime present on the system.

Building From Source and the Tauri Pilot Debugging Hook

Building requires Rust stable with edition 2024 support, Node.js 20.19.x or 22.12 or newer, pnpm and the Tauri CLI. The sequence in the README is git clone, cd TauriTavern, pnpm install. From there pnpm run check runs frontend guardrails, types and contract checks plus a Rust dev check; pnpm run web:build produces the frontend bundle with Rspack; pnpm run tauri:dev and pnpm run tauri:build cover desktop development and release packaging; pnpm run android:dev and pnpm run ios:dev cover mobile. One detail worth flagging for anyone doing UI work with an AI agent: the project integrates Tauri Pilot as a development-only plugin and permission set, installed once with cargo install tauri-pilot-cli and launched with pnpm run tauri:dev:pilot. The README states plainly that ordinary development and release commands do not enable this capability, so the accessibility-snapshot control surface is not present in shipped builds. If you are evaluating the project for a team, that separation is the right default and worth preserving in any internal fork.

The Extension Boundary Is Where Compatibility Stops

The README makes one limitation unusually clear: the built-in native Git support lets you install, update and switch branches of extensions from inside the interface, but upstream Node-only backend plugins are not supported. That is the real boundary of the port. A frontend extension is JavaScript running against the same UI and the same window.__TAURITAVERN__ ABI, so it has a plausible path to working. A backend plugin written against SillyTavern's Node server expects a Node process, its module system and its server-side APIs, none of which exist in a Rust host. If your setup depends on a server-side plugin, TauriTavern is the wrong tool and no amount of frontend fidelity will change that. The same logic applies to any custom server-side scripting you have added yourself. Check your extension list against this distinction before migrating, not after.

Multi-Device Sync and the Agent Framework

Two features have no direct upstream equivalent in the material provided. The first is sync: the README describes encrypted pairing over a local network, or automatic upload through a remote service it calls TT-Sync v2. The second is an agent framework with tool calling, Skills, subagents and a runtime timeline, which the README labels as still evolving. Treat these as the project's own additions rather than SillyTavern behaviour you already understand. The sync description is thin on operational detail: the README does not state what the remote endpoint is, who operates it, or what happens to your data if it disappears, and it does not document conflict resolution between two devices editing the same chat. If your chats are sensitive, the local-network pairing path is the one whose data flow you can reason about from the description alone. The agent framework is explicitly described as in progress, so building a workflow that depends on its current shape carries the usual risk of a moving target.

Migration From SillyTavern and the AGPL-3.0 Obligation

Migration is a two-step path per the README: run the SillyTavern data export script, then import inside the application. Because the directory layout and data formats are kept compatible, your character cards, chats, presets and world books are meant to move across intact. The README does not describe a rollback path, so keep the original SillyTavern installation in place until you have confirmed the import. On licensing, TauriTavern is AGPL-3.0, and the README itself tells you to read the terms before use. The practical implication for most users is nil: running the app locally does not trigger distribution obligations. It becomes relevant if you modify the code and expose it to other people over a network, which is the scenario the AGPL was written for. That is a description of the licence, not legal advice; if you plan to ship a modified build or host it for others, get your own reading of the terms. Maintenance cost also tracks upstream: the frontend is synced to SillyTavern 1.18.0, so staying current means following both projects, and Canary builds change daily by design.

TauriTavern Versus Running SillyTavern Behind a Reverse Proxy

The obvious alternative is not another Tauri app. It is the setup many SillyTavern users already have: run the Node server on a home machine or VPS and reach it from a browser or a mobile browser session. The difference in approach is where the runtime lives. That setup keeps one server, one data directory and one update path, and it gives you remote access from any device with a browser, including devices TauriTavern does not target. The cost is that you maintain the Node runtime, handle TLS and authentication yourself, and accept that the app is a web page. TauriTavern inverts this: each device gets its own installed application and its own local data, with sync as a separate feature you configure rather than a property of the architecture. That is better for offline use, for phone installs, and for people who never wanted to run a server. It is worse if you want a single canonical copy of your data reachable from anywhere, because you now depend on TT-Sync v2 or local pairing to keep devices consistent, and the README does not document how conflicts resolve.

Editorial conclusion

Adopt TauriTavern if you want the SillyTavern frontend on Windows, macOS, Linux, Android or iOS without installing Node.js or touching a command line, and if your extensions are frontend-only. Do not adopt it if you depend on Node.js backend plugins, because the README states those are not supported, or if you need a stable mobile client today: iOS ships through TestFlight under Apple's rules. Before committing, verify your existing SillyTavern data imports through the in-app import path, and confirm every extension you rely on appears in the built-in Git extension manager rather than the Node-only plugin list.

Official sources

  1. Darkatse/TauriTavern on GitHub
  2. License: AGPL-3.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes