Repository navigation
Portable Storage and Transfer
The complete release runs from a writable folder on a local Windows drive. Manual examples use E:\tts_server; that path is not required. UNC/network shares are unsupported.
| Location | Contents |
|---|---|
TTSServer.exe |
Clickable launcher with visible setup progress |
runtime/launcher |
Self-contained Windows desktop host |
runtime/python |
Windows Python for the CLI |
runtime/webview2 |
Fixed Version browser runtime |
runtime/linux-rootfs.tar.gz |
Clean Linux image, dependencies, and offline-ready Kokoro |
wsl/ext4.vhdx |
Installed Linux disk, created on first launch |
voices, projects_output, output
|
Audio, projects, jobs, logs, and API discovery |
secrets |
Your Hugging Face token, if saved |
cache/webview2 |
Desktop browser profile |
Inside the disk, /opt/tts_server holds Linux Python, weights, optional engine dependencies, and caches. These paths stay stable when the folder moves. Windows-visible paths and the source link are refreshed before every launch.
Use Windows x64 with working WSL2 and virtualization. A GPU is optional for Kokoro; GPU inference needs a compatible Windows NVIDIA driver. WSL and drivers are host components. Python, .NET runtime, WebView2, FFmpeg, CUDA user-space libraries, and Kokoro are included.
Allow at least 35 GiB free for initial downloading, extraction, import, and working room. Once the app works, remove the downloader's .tts-download cache to reclaim the space occupied by parts and the joined ZIP. Additional engines may consume tens of gigabytes. The VHD grows as models and caches are added. Use tts.cmd disk for actual sizes.
- Extract the complete release and run
TTSServer.exe. - Before moving, copying, or backing up, run
Stop-TTSServer.cmd. It requests API shutdown and terminates only this folder's verified WSL distro. - If Stop confirms the disk is released, copy the whole folder, including
wsl/ext4.vhdx, to the destination local drive or PC. If it reports a locked disk, use the transfer command below. - Run
TTSServer.exethere. Packages and installed engines travel with the disk.
Never copy an active VHD. Keep a complete stopped backup before upgrading. Do not merge a fresh release over a running installation.
Some WSL versions keep a stopped distro's disk locked until the shared WSL virtual machine exits. Stop detects this condition. To preserve installed engines and user data without interrupting other WSL apps, run from this app's folder:
.\Copy-TTSServer.ps1 -Destination 'D:\Portable-TTS-Server-V2'Choose a new destination outside the source folder. Finish or cancel generation and installation first, and keep this app closed until the command finishes. The helper stops this copy, copies its Windows files, and uses WSL's tar export for the Linux state. The original is preserved. Allow enough space for the complete copy, an uncompressed Linux snapshot, and its subsequently imported VHD.
Start the destination normally. It imports runtime/transfer-rootfs.tar instead of the clean factory image. Once the new copy works, delete that snapshot to reclaim its space; retain the new wsl/ext4.vhdx. A failed transfer is marked incomplete and cannot start. This personal transfer includes saved tokens, voices, and projects; keep it private.
For a manual VHD copy instead, close all WSL applications and run wsl --shutdown yourself, then check Stop again before copying. That command stops every WSL distro, including Docker and unrelated apps; this app never runs it automatically. Microsoft documents terminate, export, import, and shutdown.
Each new folder gets a name TTS-Server-V2-<12 hexadecimal characters> derived from its full Windows path. Startup verifies that its WSL BasePath is exactly this folder's wsl. It rejects unrelated distributions and escaping paths. The legacy name linbox-TTS_Server is accepted only for an existing registration pointing to this folder's disk.
.\Start-TTSServer.ps1 -VerifyOnly shows the distro and disk without launching. -PrepareOnly imports/registers without opening the GUI. -Headless starts the backend; -BridgePort and -GatewayPort select unused ports for another copy.
WSL stores a registration in the current Windows account. A manual move can leave an old entry pointing to the previous path. The launcher never deletes registrations automatically. Do not run wsl --unregister on a disk you want to keep; it deletes distro data. The stop command does not unregister anything.
The source checkout has no runtime. See build instructions. Public images are built from a fresh base; private development disks, tokens, voices, generated audio, and browser profiles are excluded.
Wiki home · Manual index · Download release · Source
Portable TTS Server V2 · Windows + WSL2 · Offline-ready Kokoro
Start here
Desktop tabs
Engines and audio
CLI and API
Maintenance
Reference