FIPS-Compliant Deployment
FIPS-Compliant Deployment
Deploy Deepgram self-hosted with FIPS-capable images for environments that require FIPS 140-3 cryptography.
Deepgram provides FIPS 140-3 self-hosted images for the API, Engine, License Proxy, and Billing containers, plus models encrypted using FIPS-approved algorithms.
Container Images
Use the FIPS variants (the -fips tag suffix) of API, Engine, and License Proxy images from a recent self-hosted release. See the release changelog for specific release versions and tags.
Configuration
Enable FIPS Mode
FIPS mode is set per service. Add the following block to the configuration file of every service you deploy:
Set it in each of:
api.toml(API)engine.toml(Engine)license-proxy.toml(License Proxy)billing.toml(Billing — airgapped deployments only)
The FIPS images do not enable FIPS mode on their own. A service whose configuration omits this block runs OpenSSL in standard (non-FIPS) mode, even on a FIPS image. Confirm each service logs openssl_fips_enabled=true at startup.
Engine Environment Variables
As with any self-hosted Engine deployment, the Engine container requires these NVIDIA environment variables:
These are set in your container orchestration configuration. See the reference configs for Docker and Kubernetes.
TLS Certificate
Customers must provide their own full-chain PKI certificate for the API’s HTTPS endpoint.
Models
Your Deepgram account team provides download links for the FIPS-encrypted models compatible with these images. FIPS models use the .dgv2 encrypted file format.
.dgv2 and .dg models are not interchangeable. The FIPS Engine loads only .dgv2 models — it will not load .dg models.
Model Support
Flux STT is not currently supported on FIPS images. Flux STT can only be run on standard (non-FIPS) images.
Flux TTS runs on FIPS images. Flux TTS is subject to the MP3 and FLAC output issue below: batch /v2/speak requests return MP3 unless they set encoding, so set it explicitly. Streaming /v2/speak output is unaffected.
Caveats
MP3 and FLAC Output
MP3 and FLAC output are not available on FIPS images. This is a known issue. A text-to-speech request that asks for either format returns HTTP 200 with an empty body rather than an error.
/v1/speak and batch /v2/speak both return MP3 when the request does not set encoding, so set encoding explicitly on FIPS images. Streaming /v2/speak returns linear16 and is unaffected.
Format support on FIPS images:
linear16andopusare unaffected, and are the recommended formats.mp3andflacare unavailable.- Verify any other format against your own deployment before relying on it.
This limitation applies to audio output only. Speech-to-text requests that submit MP3 or FLAC input are unaffected.
TLS 1.3 Only
The FIPS API image enforces TLS 1.3 exclusively. It rejects TLS 1.2 connections outright and rejects non-FIPS cipher suites (such as ChaCha20). Any TLS-1.2-only client, SDK, or proxy in front of the API will fail to connect.
Ensure your entire client stack negotiates TLS 1.3 before cutover.
The [fips] configuration flag does not control TLS behavior. TLS 1.3 enforcement is baked into the FIPS image itself, so disabling the [fips] flag will not restore TLS 1.2 support.
Airgapped (Offline) Deployment
The deployment above reaches Deepgram’s hosted license server through the License Proxy, which requires outbound internet access. If you require running FIPS-compliant self-hosted Deepgram deployments in environments without public internet connectivity, contact your Deepgram account team to inquire about airgapped access, which uses the FIPS Billing image to run license validation offline.
What’s Next
- Deploy STT Services - Standard deployment guide
- Status Endpoint - Monitor node health and readiness