Before you start, ask help@rime.ai for registry access and a runtime license that matches your selected image. If you already run an API/model pair, follow Migrate an existing deployment.
Architecture
The engine checks the license locally at startup and sends aggregate usage counts to Rime over HTTPS. Your synthesis text and audio stay within your deployment.Prerequisites
Hardware requirements
- GPU
- For Mist
- NVIDIA T4, L4, A10, or higher
- For Coda
- Confirm GPU requirements with Rime before provisioning
- For Mist
- Storage
- 50 GB storage
- CPU
- 8 vCPUs
- Memory requirements
- 32 GiB
Software requirements
- Supported Linux Distributions
- Debian 12 (
bookworm), x86_64 - Ubuntu Server 24.04 (
noble), x86_64
- Debian 12 (
- NVIDIA drivers
- Minimum:
580.65.06(R580) for the defaultnativeCUDA mode - R535 or R570 hosts: supported only with
RIME_CUDA_COMPAT_MODE=compaton forward-compatibility-eligible GPUs - Recommended:
595.71.05or newer
- Minimum:
- Docker
- NVIDIA Container Toolkit
Installations
NVIDIA drivers
Follow https://www.nvidia.com/en-us/drivers to install the latest NVIDIA drivers, or use the following instructions on Debian-based systems:NVIDIA Driver Installation (Debian-based)
Docker
Follow https://docs.docker.com/engine/install to install Docker on your system. Optionally, add the current user to thedocker group for convenience: https://docs.docker.com/engine/install/linux-postinstall.
The code snippets below assume that you can run docker as the current login.
NVIDIA Container Toolkit
Follow https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html to install the NVIDIA Container Toolkit. Follow both the Installation and the Configuration sections.Verification
This command runsnvidia-smi inside a CUDA container, so it checks the driver, Docker, and the NVIDIA Container Toolkit together:
Verify Prerequisites
Firewall requirements
If the engine cannot reach
/metering, synthesis continues. The engine keeps reports in memory and retries them. Its queue holds up to 168 reporting windows, each one hour by default. Adding a window beyond that limit drops the oldest pending window. A process exit can also lose pending counts.
The licensed engine sends reports to /metering only. It does not call /license or /usage.
API and registry credentials
Rime supplies registry access and the signed runtime license. In the dashboard for the billed account, open API Tokens and create the metering API key. Store the license as./secrets/license and the API key as ./secrets/api-key on the deployment host. The engine must be able to read both files inside the container. Keep them outside source control.
Log in to Artifact Registry with the key Rime supplied:
Image tags
Use the release tag in the.env example below for Coda or Mist v3. Confirm the selected image and runtime license with Rime for standalone licensed deployment.
TTS service
Create
.env next to compose.yml to select the Coda image at the current release tag:
us-docker.pkg.dev/rime-labs/mist/v3/omni and keep the same tag.
On R535 or R570 hosts with forward-compatibility-eligible GPUs, add RIME_CUDA_COMPAT_MODE=compat to .env. Compose uses native when this setting is absent.
Keep the image’s command and entrypoint. The image already contains the model files, pipeline configuration, license verifier keys, and package identity. You do not need an API service image in this mode.
Use Models and Voices to choose a model and voice. Confirm the languages in your selected image with Rime.
Docker Compose configuration
Createcompose.yml to run the model with GPU access and read-only credential mounts:
model:8080 and model:7463 without published host ports. On Kubernetes, mount the same secrets and route a private Service to these container ports.
Mounted files keep credentials out of the container environment. If your platform mounts secrets elsewhere, set RIME_LICENSE_FILE and RIME_API_KEY_FILE to those paths.
You can also set RIME_LICENSE to the base64 license text Rime supplied and RIME_API_KEY to the key value. Do not encode the license again. Restart the engine after you change either credential.
Startup fails if a configured license is missing, invalid, or expired, or if the metering API key is missing. With no license source at all, the engine starts in legacy request-license mode. You must supply a runtime license to use standalone licensed mode.
Allow time for shutdown. The eleven-minute stop grace period covers the default ten-minute request drain plus cleanup. See Load balancing before you change it.
Start and verify
Start the deployment, then wait for the engine to load and warm up. This readiness check retries for up to ten minutes, with a five-second timeout per attempt:ok means the engine is ready. During loading or drain, it returns HTTP 503. If the retries fail, check docker compose logs model before you send synthesis requests. See Health checks and metrics for liveness and gRPC checks.
Send this request to write output.wav. Coda and Mist v3 both support the example voice, luna. Use a voice available in your image:
output.wav. If you hear the sentence, the license, GPU access, and engine are working. If curl reports an HTTP error, output.wav holds the engine’s error response, not audio. Engine protocols covers the request fields, response handling, and gRPC and WebSocket examples.
Migrate an existing deployment
Keep the previous API/model pair available while you test a separate standalone deployment. Verify each protocol your application uses before you switch traffic.
Remove
MODEL_URL, API_KEY_HEADER, and PLATFORM_API_KEY from the new deployment. They configure the old API service. Mount the metering key on the engine, then update your proxy routes, firewall rules, probes, and clients. The engine image selects the model. A request’s modelId cannot route it to another model.
Changing a WebSocket URL is not enough to migrate a client. An old /ws3 client must also send the messages that /ws expects. Follow the WebSocket migration rules and check audio completion, cancellation, and errors before you switch traffic.
Existing API/model pairs keep their request-license and API-side usage reporting behavior when no offline runtime license is mounted.
