Skip to content

TinyTitan Plugin

André Borchert edited this page Sep 18, 2026 · 2 revisions
TinyTitan

TinyTitan Plugin (dsh-tinytitan)

plugins/dsh-tinytitan is the DeepSeek Harness bundle that points the harness at a local TinyTitan server, and keeps it pointed there. It is the one the installer sets up: tools/dsh_local.sh installs a pinned harness under ~/.tinytitan and adds this bundle, and tools/server_launcher.sh --web starts a TinyTitan server and opens the harness in the browser.

It is deliberately thin. The harness's own llm-pi-ai adapter serves the models, so this package adds configuration, not a protocol implementation — it never patches the harness, and a harness upgrade cannot desynchronise a copied protocol.

What it does

Two jobs, both at boot, both idempotent.

Keeps the route current. Local Server and Launchers generates the harness's llm-pi-ai route block from the models installed under models/. This plugin runs that at boot and watches models/ afterwards, so an install you start and finish while the harness is running reaches the model picker without a restart — and a deletion stops being offered. Where no server has been built yet it reads the folder itself, by the same rules, so an installed model is still listed.

Mounts a compaction backend that does not think. Compaction calls name no reasoning level, so they inherit the route's default — and against a local thinking model that spends a summariser's whole output budget inside its reasoning block, costing tens of seconds on every new session. The generated agent preset points that row at dsh-tinytitan/backend, which forces thinking off for those calls only; ordinary turns keep the route's level. Session titles are not covered: they are issued by a host-plane plugin with its own context, which a bundle cannot wrap, so the route's own reasoning setting is the only lever there.

Install

dsh plugin --profile web add file:/path/to/TinyTitan/plugins/dsh-tinytitan

Restart DSH and the plugin reports what it did. Or let the installer do it: tools/dsh_local.sh sets the bundle up inside its own DSH_HOME, isolated from any harness you already run — a harness of your own is never read, written or stopped.

Important

A file: install is a copy, not a link. After editing the plugin, re-install it (dsh plugin --profile web remove dsh-tinytitan, then add again) and restart the harness, or DSH keeps running the copy it made. The failure is silent — the plugin still works, just at the version you installed.

Supported harness version

This bundle supports exactly one DeepSeek Harness release: 0.1.6-alpha.2 — not older, not newer, and not a build from main. It is also the release tools/dsh_local.sh installs.

On any other release it refuses to run: one line on stderr naming both versions, and nothing else — no route, no preset, no watcher, and no writes into your harness home. It never throws, so DSH boots normally, every other plugin loads, and removing this one leaves nothing to undo. A version that cannot be read at all is refused the same way. stderr is where it goes because the harness prints a plugin's log records only when the boot itself fails, so anything quieter would be invisible.

What it writes

Each change is made with a timestamped backup beside the original.

File Change
~/.dsh/settings.yaml the llm-pi-ai route block, refreshed from the catalog
~/.dsh/.agent-presets/tinytitan/agent.cordis.yml generated from the harness's shipped standard preset, with the compaction row on this backend
~/.dsh/settings.yaml agent-presets.default: tinytitanonly when the file names no default
the current default preset its stock compaction-basic row, re-pointed — never a preset that is not a user file

If you have already chosen a preset, adoptDefaultPreset re-points that row rather than overwriting your choice; set it to false to leave every file you own untouched, and the plugin then writes only its own tinytitan preset.

Configure

Every field is optional. Six of them read the environment as a fallback — port, reasoning, repoRoot, serverBinary, modelsDir and dshHome, through TINYTITAN_PORT, TINYTITAN_REASONING, TINYTITAN_REPO, TINYTITAN_SERVER, TINYTITAN_MODELS_DIR and DSH_HOME; the switches below do not. The ones worth knowing:

Field Default Meaning
port TINYTITAN_PORT, else 8080 the port the server serves on
reasoning TINYTITAN_REASONING, else medium the route's declared default. It must match how the server was started: a route that says "think" against a server running --reasoning off makes a dense Qwen spend its whole output budget inside the reasoning block and never answer
registerRoute true refresh the route block at boot
watchModels true keep watching models/ while the harness runs
writeCompactionPreset true generate the preset, or adopt the default's row
selfContained false use the built-in generator even where tools/dsh_route.sh exists

The exhaustive table, and what the plugin deliberately does not do, is in plugins/dsh-tinytitan/README.md.

See also

Clone this wiki locally