DSH Tavern: a SillyTavern-style text game agent that runs on DeepSeek Harness
基于 DeepSeek Harness(DSH)的 SillyTavern 类文字游戏 Agent,支持候选项生成、对话式人物卡编辑、剧本模式与素材抽取。
At a glance
- What is it?
- DSH Tavern imports SillyTavern character cards and runs them as a playable agent on DSH, with separately generated action candidates, script mode and conversational card editing. The catch is version pinning: it only installs against DSH 0.1.2-rc.1.
- Who is it for?
- Adopt DSH Tavern if you already run DSH Desktop 2.0.5 or are willing to install the pinned CLI runtime with Node.js 22.19 or higher, and if you want a SillyTavern-style loop where narration, candidates and background state updates are kept apart. Skip it if you need a standalone SillyTavern replacement, if you cannot hold DSH at 0.1.2-rc.1, or if Android is your only platform, since the README calls that support experimental.
- 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 received new commits within the last day.
- 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 18, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem DSH Tavern picks, and who it is for
SillyTavern cards are a de facto interchange format for character roleplay, but a card is mostly static text: a description, a personality block, a scenario, a first message, maybe a world book. Playing a long story with one means the model carries the whole context forward, and every turn pays for it. DSH Tavern takes that card format and runs it as an agent on DeepSeek Harness, so the card becomes the seed of a game loop rather than the entire prompt.
The intended user is someone who already has cards and wants either free play or a story that follows a fixed outline. The README describes two modes: pick a card and play freely, or bind a novel, script or outline and let the story advance along its main line. A second audience is card authors. The project includes a card workbench where you discuss changes with the agent and edit fields, world books and bound scripts conversationally, keeping the original import intact while you modify a working copy.
It is not a general chat frontend. Everything in the README is oriented around a turn-based loop with state that persists across turns: guides, candidate actions, script progress, MVU variables, and a right-hand status panel.
How the loop is split: narration, candidates and background state
The design choice that shapes everything else is separation of concerns per turn. The README states that the main text and the candidate actions are generated separately, and that candidate generation and background state maintenance are handled apart from the narration so the prose carries less formatting burden. In practice that means the model writing the scene is not also being asked to emit a JSON array of choices in the same completion.
Script mode follows the same logic. The right panel shows script progress and the passage referenced for the current turn, so the whole novel is not stuffed into context at once. The README describes this as reading only the material currently needed, which reduces wasted tokens. For a bound script, the cursor position is the state: v1.9 is titled around a script cursor, background recovery and long-conversation tuning.
Background work is where MVU lives. The README says a background agent updates MVU variables and the right-side status bar keeps showing them, with the current turn's update results visible below the main text. That is a second model call per turn whose output is structured state rather than prose. The README also claims a cache hit rate above 95 percent, which is a project claim, not something verified here; it follows from keeping a stable prefix and appending per-turn material rather than rewriting the prompt.
The README gives a rough figure of about 10 seconds per interaction. Treat that as the author's stated figure on unspecified hardware and model service, not a benchmark.
Installing DSH Tavern and playing your first card
The hard constraint comes before any command. The README states that all platforms require the actually running DSH to be 0.1.2-rc.1, and the installer stops when it detects a non-matching version. The reason given is that DSH makes breaking changes often, and DSH Desktop and DSHA update the bundled DSH with them, so a plugin that worked can stop working after a host upgrade. The project therefore pins the DSH version it has adapted to.
On Windows there is a portable EXE for x64 that the README calls the simplest path. It downloads and runs, and on first launch it needs a network connection because it installs the newest tavern compatible with Desktop 2.0.5. No separate Node.js or DSH Desktop install is needed. Desktop itself is fixed at 2.0.5, and existing installs and data are preserved.
If you already have DSH Desktop 2.0.5 on Windows or macOS, open it, go to Settings, then General settings, click to open the DSH terminal at the top of the page, and paste the command for your system. Windows:
$env:DSH_TAVERN_HOST='desktop'; $tavernInstaller=[Text.Encoding]::UTF8.GetString((New-Object Net.WebClient).DownloadData('https://cdn.jsdelivr.net/gh/flizzywine/dsh-tavern@main/install.ps1')); Invoke-Expression $tavernInstallermacOS uses the shell installer with the host variable set to desktop:
curl -fsSL https://cdn.jsdelivr.net/gh/flizzywine/dsh-tavern@main/install.sh | DSH_TAVERN_HOST=desktop shAfter it finishes, restart DSH Desktop, go to Settings, then Desktop settings, and click tavern in the Profile list on the right. When the word meaning current appears next to tavern, that profile is selected and you can open the tavern.
The command line route needs Node.js 22.19 or higher and does not require DSH to be installed beforehand. The installer uses its own DSH 0.1.2-rc.1 and does not touch a global DSH. On macOS, Linux or WSL2:
curl -fsSL https://cdn.jsdelivr.net/gh/flizzywine/dsh-tavern@main/install.sh | DSH_TAVERN_HOST=cli shThe installer starts the tavern and opens the web page. Afterwards the CLI entry point manages it:
dsh-tavern open # open the web page
dsh-tavern start # start
dsh-tavern stop # stop
dsh-tavern restart # restart
dsh-tavern update # updateOn first install it asks for a directory and offers three choices: the default ~/.dsh-tavern/, the current directory (pressing Enter takes this), or another full path. Program, standalone runtime and game data go into the chosen directory. The README notes that the command entry point and the npm or pnpm cache may live outside it. Re-running the install command should happen from the original install root, or you set DSH_TAVERN_CLI_HOME to point at the old location.
Once the page is up, configure a model service and API key under Settings, then Model, import a character card, and pick it to start. The default preset is built in, so no preset tuning is needed to begin.
Where DSH Tavern breaks: version pinning, data silos and card compatibility
The version lock is the biggest operational cost, and the README is explicit about it. DSH Desktop is fixed at 2.0.5, DSHA at 1.2.0-rc1.4, and the runtime DSH at 0.1.2-rc.1. If your host updates, the installer refuses. You are expected to wait until the project adapts to the new DSH. Anyone who treats DSH Desktop as a general tool they keep current will hit this wall repeatedly.
Data does not move between install modes. The README states that CLI data is kept separate from Desktop and DSHA data, and that switching install methods does not sync automatically. Installing the CLI version after using the Desktop version gives you an empty tavern. Migration is possible but manual, and the README points to the full installation document for backup and migration rather than describing the steps inline.
Card compatibility is partial. The README says PNG and JSON cards, regex decoration, HTML display, MVU background variable updates and adapted small-phone interfaces are supported, then adds that the compatibility range for third-party scripts depends on the specific interfaces involved. Cards that lean on scripts outside those interfaces will not behave the same as in SillyTavern.
Scenario illustrations are off by default and need a separately configured image service. And the Android path is labelled experimental with no guarantee it works. Finally, the undo feature has a boundary the README states plainly: after a mistaken rollback you can restore the most recent rollback's text and state from More, but the restore point is invalidated once you start a new generation or edit.
SillyTavern as the alternative, and the real difference
The obvious comparison is SillyTavern, since DSH Tavern imports its cards. The difference is not the card format but where the turn logic lives. SillyTavern is a frontend: it assembles a prompt from the card, world book entries and your settings, sends it, and renders the reply. Context management is largely your responsibility through presets, world book activation and manual editing, and structured state such as character variables depends on extensions.
DSH Tavern moves that work into an agent profile on DSH and splits it across calls. Candidates are generated independently of the narration. Script mode keeps a cursor and recalls only the passage needed for the turn. MVU variables are written by a background agent rather than by the narrator. The trade-off is the pinning described above: SillyTavern runs against many backends and you control the versions, while DSH Tavern only installs against the DSH build it has adapted to.
If you want a mature frontend with broad model support and you do not mind managing context yourself, SillyTavern is the safer choice. If you want the loop itself to manage script progress and background state, DSH Tavern is the one that does that, at the cost of following its host compatibility schedule.
Licence and the cost of keeping up
The repository is licensed AGPL-3.0. That matters most if you plan to run a modified DSH Tavern as a network service for other people: the AGPL's network clause is the reason projects choose it, and it is stricter than MIT or Apache-2.0 in that scenario. This is a description of the licence identifier in the repository, not legal advice; read the LICENSE file and talk to a lawyer if you intend to host it.
The upgrade cost is real but bounded. Because the project pins DSH, updates arrive as tavern releases rather than as host upgrades: v1.7, v1.8 and v1.9 landed within four days of each other in September 2026, and the last push to the repository was on 2026-09-16. Each release notes what it touched, such as the script cursor, background recovery and long-conversation tuning in v1.9. The README also states that updates preserve user-added plugins and configuration, and that the Android path can update from the update link at the bottom of the tavern sidebar or from the update/repair button next to the workbench when the tavern will not open. The recurring cost is waiting for adaptation after any DSH change you want.
Editorial conclusion
Adopt DSH Tavern if you already run DSH Desktop 2.0.5 or are willing to install the pinned CLI runtime with Node.js 22.19 or higher, and if you want a SillyTavern-style loop where narration, candidates and background state updates are kept apart. Skip it if you need a standalone SillyTavern replacement, if you cannot hold DSH at 0.1.2-rc.1, or if Android is your only platform, since the README calls that support experimental. Before committing, verify three things: the running DSH version, which install root you chose at first run (the installer offers ~/.dsh-tavern/, the current directory, or a full path), and whether your cards rely on third-party scripts, because the README states compatibility depends on the specific interfaces involved.
Frequently asked questions
What does DSH stand for in DSH Tavern?
The README expands it as DeepSeek Harness, the host runtime the tavern runs on. The project is built as a DSH plugin profile and requires a running DSH version of 0.1.2-rc.1.
What does DSH stand for in mental health?
Nothing in this project. DSH here means DeepSeek Harness, a runtime for agents and plugins, and the tavern is a text game agent built on it.
How do I install DSH Tavern on Windows?
The README offers a portable x64 EXE that installs the compatible Desktop 2.0.5 on first launch with a network connection, or a PowerShell command run from the DSH terminal in Settings, General settings. Both paths stop if the running DSH is not 0.1.2-rc.1.
Which DSH version does DSH Tavern require?
The README states that all platforms require the actually running DSH to be 0.1.2-rc.1, with DSH Desktop pinned at 2.0.5 and DSHA at 1.2.0-rc1.4. The installer stops when it detects a non-matching version.
Can DSH Tavern import SillyTavern character cards?
Yes. The README lists PNG and JSON cards, regex decoration, HTML display and MVU background variable updates, while noting that compatibility for third-party scripts depends on the specific interfaces involved.
Community notes