Risuai: A GPL-3.0 Svelte and Tauri Client for Multi-Provider LLM Roleplay
Make your own story. User-friendly software for LLM roleplaying
At a glance
- What is it?
- Risuai is a cross-platform chat front end that puts provider choice, prompt ordering and long-term memory in the user's hands. It is a good fit if you want a self-hostable roleplay client; it is a poor fit if you expect stable documentation or a finished plugin API.
- Who is it for?
- Adopt Risuai if you want a self-hosted, provider-agnostic roleplay client and you are willing to read the source when the wiki falls short. Skip it if you need a documented plugin API, a stable script interface, or a permissively licensed component to embed in closed-source software.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly TypeScript, 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 gap Risuai fills between a raw API key and a chat window
Talking to an LLM with a persistent character is not hard to prototype and is annoying to maintain. You need a place to store the character card, a way to inject world information only when it is relevant, a system for swapping providers when one goes down or gets expensive, and some method for keeping context alive past the model's window. Risuai packages all of that into one application. The README describes it as "cross platform AI chatting software / web application" with "multiple API support, assets in the chat, regex functions and much more".
The audience is narrower than the tag list suggests. This is for people who roleplay or run character-driven chat and want control over the prompt rather than a hosted product. The feature list is explicit about that control: "Powerful Prompting" means changing the prompting order, impersonating inside prompts, and using conditions and variables. A user who just wants a chat box with a model behind it will find more surface area than they need. A user who has been fighting a hosted client's fixed prompt template will recognize the problem immediately.
The cost of that control is configuration. Nothing in the repository suggests sensible defaults will carry you. Provider selection, prompt order and memory settings are decisions the application exposes rather than makes.
Svelte 5, Tauri 2.5 and a browser build from the same source
The repository is TypeScript throughout, with Svelte 5 for the interface, Vite 8 as the bundler, Tailwind CSS 4 for styling, and Tauri 2.5 for the desktop shell. That combination explains the cross-platform claim: the same front end runs in a browser and inside a Tauri window, with Tauri supplying native packaging for desktop targets. The README points users at two install paths, the website at risuai.net (marked "Recommended") and the GitHub releases page, which is consistent with shipping both a hosted web build and packaged desktop binaries.
Data flow is client-side in the ordinary sense. The application holds the character definition, the lorebook entries and the chat history, assembles a prompt according to the user's configured order and conditions, and sends it to whichever provider the user selected. The README lists OpenAI, Claude, Gemini, DeepInfra, Ooba and OpenRouter among the supported APIs, with "and More!" left unspecified. The topics list adds llama, mistral and an MCP client, but the README body does not document how MCP is wired in, so treat that as unverified from the supplied material.
The interesting architectural choices are the ones that run after the model replies. Regex scripts modify model output, which the README frames as a way to "make a custom GUI and others". Emotion images pick a character image based on the expression in the response. Additional assets embed images, audio and video into a bot and display them in the chat or as a background. Those three features share a pattern: the model's text is parsed and mapped onto presentation, which is why the regex layer matters more here than in a plain chat client.
Running it: Docker in one command, pnpm for development
The fastest path in the README is Docker, aimed at web hosting. One command pulls the compose file and starts the stack:
curl -L https://raw.githubusercontent.com/kwaroran/Risuai/refs/heads/main/docker-compose.yml | docker compose -f - up -d
The documented port is 6001, so the application is reachable at http://localhost:6001. That is the whole Docker story in the README. There is no documented environment variable for pinning the image tag, setting a base path, or supplying provider credentials at container start, which means provider keys are configured through the running application rather than through the compose file.
For development, the prerequisites are Node.js 20.19 or newer, or 22.12 or newer, plus pnpm. The README does not list the install and dev commands, but the stack (Vite, Svelte, Tauri) determines them, and the repository's package.json is the authoritative source for script names. If you are building the desktop target rather than the web target, the Tauri CLI is the entry point, and that requires the usual platform toolchain for your operating system.
Because there is no configuration file documented in the README, the settings that matter (provider, API key, prompt order, lorebook, regex scripts) live inside the application's own storage. That has an operational consequence: backing up a Risuai setup means backing up application data, not a checked-in config file. The README does not describe an export path for that data.
Memory features are the hardest part to evaluate before you install
The README's most specific claim is also its least documented. It lists "Long-term Memory: Advanced memory systems including HypaMemoryV2/V3 memory compression, SupaMemory for context management to maintain long-term conversation context." Three named systems in one bullet, with no explanation of how they differ, which one is the default, or whether they can be combined.
This matters because memory compression is the feature most likely to change model behaviour in ways users notice and dislike. A compression scheme that summarizes older turns will eventually drop a detail the character was supposed to remember, and the failure is quiet. Nothing in the supplied material describes the compression trigger, the summary format, or whether the original turns remain retrievable. The lorebook (also called world infos or memory book) is a separate mechanism for the same problem, and the README does not explain how lorebook retrieval interacts with the compression systems.
If long-term coherence is the reason you are considering Risuai, plan to test it directly with a long conversation before trusting it. That is not a knock on the design. It is a statement that the documentation does not let you predict the behaviour, and the wiki is described in the README itself as "Work in Progress".
Where Risuai is the wrong tool
The GPL-3.0 licence is the first hard boundary. If you want to embed a chat interface inside a closed-source product, this licence does not give you that permission, and the README offers no alternative licensing path. For a personal or internal deployment the licence is unremarkable. For a commercial product it changes the decision entirely.
The second boundary is the plugin and regex surface. The README advertises plugins ("Add your features and providers, and simply share") and regex scripts, but the wiki is explicitly incomplete. That means anyone building on those extension points is working against source code rather than a specification. If your plan depends on a stable plugin API that survives upgrades, Risuai is the wrong tool right now. The release cadence reinforces this: the supplied releases show v2026.8.240 on August 24 and v2026.8.250 on August 25, a same-week increment, alongside a larger gap back to v2026.6.215 in July. Frequent small releases are normal for an active project, but they are also the environment in which undocumented extension points break.
The third boundary is the target user. Risuai assumes you have an API key and opinions about prompting. Someone who wants a managed service with a support contract is not the audience, and the README does not pretend otherwise.
How it compares with SillyTavern
The obvious alternative is SillyTavern, the other widely used front end in this space. Both are self-hosted clients that connect to multiple providers, both support character cards and lorebooks, and both expose prompt construction to the user. The difference is in the delivery model. SillyTavern is a Node server you run and open in a browser. Risuai ships a Tauri desktop application as well as a web build, so it can be installed as a native program rather than run as a local server.
The second difference is the extension model. Risuai's README foregrounds plugins and regex scripts as first-class features, and its regex layer is described as capable of building a custom GUI, which is a more ambitious role for regex than output cleanup. SillyTavern's ecosystem is built around server-side extensions and a separate UI extension mechanism. Which is easier to work with depends on whether you prefer writing regex against model output or writing JavaScript against a host API. The supplied material does not describe Risuai's plugin API in enough detail to compare the two fairly, so that judgement has to come from reading both codebases.
A third difference is packaging weight. A Tauri build carries a native shell and its platform dependencies; a Node server carries a runtime. Neither is free, and the choice mostly comes down to whether you want a desktop application or a service you can put behind a reverse proxy.
Maintenance, upgrades and what the licence asks of you
Risuai is not archived, and the last push recorded is 2026-09-09, after the most recent release. The version scheme is calendar-based (v2026.8.250), which makes it easy to see how far behind you are but says nothing about whether an upgrade is safe. The README documents no migration process, no changelog policy, and no compatibility guarantee for plugins, regex scripts or stored chats.
That puts the practical upgrade cost on the user. Before updating a working installation, the thing worth checking is whether your character data and scripts survive, since the application stores its state internally and the README describes no export or backup command. Running the Docker command against a new image is a single line; recovering a broken prompt configuration afterwards is not.
The licence is GPL-3.0, which means anyone distributing a modified version has obligations that a permissive licence would not impose. That is a statement about the licence text, not legal advice. If you plan to redistribute Risuai, modified or not, or to ship it inside another product, have someone qualified read the licence against your specific plan. For an individual running it locally or hosting it for themselves, the licence is unlikely to be the deciding factor.
Editorial conclusion
Adopt Risuai if you want a self-hosted, provider-agnostic roleplay client and you are willing to read the source when the wiki falls short. Skip it if you need a documented plugin API, a stable script interface, or a permissively licensed component to embed in closed-source software. Before committing, verify the current Node and pnpm versions against package.json, confirm which memory system is active in your build (HypaMemoryV2, HypaMemoryV3 or SupaMemory), and check whether the regex scripts or plugins you depend on still load after an upgrade.
Community notes