Deepgram Multi Env SetupSAFE
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
Overview
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
4f83675ca38aOBSERVED · 2026-10-08Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: deepgram-multi-env-setup description: 'Configure Deepgram multi-environment setup for dev, staging, and production. Use when setting up environment-specific configurations, managing multiple Deepgram projects, or implementing environment isolation. Trigger: "deepgram environments", "deepgram staging", "deepgram dev prod", "multi-environment deepgram", "deepgram config management". ' allowed-tools: Read, Write, Edit, Bash(kubectl:*), Bash(curl:*) version: 1.13.0 license: MIT author: Jeremy Longshore <[email protected]> tags: - saas - deepgram - environments - configuration compatibility: Designed for Claude Code --- # Deepgram Multi-Environment Setup ## Prerequisites - Separate Deepgram projects/credentials, storage/retention policies, and owners for development, staging, and production. - Reviewed promotion/rollback controls plus sanitized fixtures for each pre-production environment. ## Examples Validate a configuration in development with a licensed fixture, promote the same version to staging with a separate key, and record its quality/latency/alert results. Promote production through an approved canary only; never reuse production keys or recordings in development to make an environment test pass. ## Overview Configure isolated Deepgram environments for development, staging, and production. Each environment uses a separate Deepgram project, scoped API keys, environment-specific model selection, and validated configuration. Includes typed config, client factory, Docker Compose profiles, and Kubernetes overlays. ## Environment Strategy | Setting | Development | Staging | Production | |---------|------------|---------|------------| | Model | `base` (fast, cheap) | `nova-3` | `nova-3` | | Concurrency | 5 | 20 | 100 | | Diarization | Off | On | On | | PII Redaction | Off | On | On | | Callback URL | localhost:3000 | staging.example.com | api.example.com | | Key Rotation | Manual | Monthly | 90-day auto | ## Instructions ### Step 1: Typed Environment Configuration ```typescript interface DeepgramEnvConfig { apiKey: string; projectId: string; model: 'base' | 'nova-2' | 'nova-3'; maxConcurrency: number; features: { diarize: boolean; smart_format: boolean; redact: string[] | false; summarize: boolean; }; callbackBaseUrl?: string; timeout: number; } function loadConfig(env: string): DeepgramEnvConfig { const configs: Record<string, DeepgramEnvConfig> = { development: { apiKey: process.env.DEEPGRAM_API_KEY_DEV!, projectId: process.env.DEEPGRAM_PROJECT_ID_DEV!, model: 'base', maxConcurrency: 5, features: { diarize: false, smart_format: true, redact: false, summarize: false, }, callbackBaseUrl: 'http://localhost:3000', timeout: 60000, }, staging: { apiKey: process.env.DEEPGRAM_API_KEY_STAGING!, projectId: process.env.DEEPGRAM_PROJECT_ID_STAGING!, model: 'nova-3', maxConcurrency: 20, features: { diarize: true, smart_format: true, redact: ['pci', 'ssn'], summarize: true, }, callbackBaseUrl: 'https://staging.example.com', timeout: 30000, }, production: { apiKey: process.env.DEEPGRAM_API_KEY_PRODUCTION!, projectId: process.env.DEEPGRAM_PROJECT_ID_PRODUCTION!, model: 'nova-3', maxConcurrency: 100, features: { diarize: true, smart_format: true, redact: ['pci', 'ssn'], summarize: true, }, callbackBaseUrl: 'https://api.example.com', timeout: 30000, }, }; const config = configs[env]; if (!config) throw new Error(`Unknown environment: ${env}. Use: development, staging, production`); if (!config.apiKey) throw new Error(`DEEPGRAM_API_KEY_${env.toUpperCase()} not set`); return config; } const env = process.env.NODE_ENV ?? 'development'; const config = loadConfig(env); ``` ### Step 2: Client Factory ```typescript import { createClient, DeepgramClient } from '@deepgram/sdk'; class DeepgramClientFactory { private static clients = new Map<string, DeepgramClient>(); static getClient(env?: string): DeepgramClient { const environment = env ?? process.env.NODE_ENV ?? 'development'; if (!this.clients.has(environment)) { const config = loadConfig(environment); this.clients.set(environment, createClient(config.apiKey)); console.log(`Deepgram client created for: ${environment} (model: ${config.model})`); } return this.clients.get(environment)!; } // Convenience: transcribe with environment defaults static async transcribe(url: string, overrides: Record<string, any> = {}) { const environment = process.env.NODE_ENV ?? 'development'; const config = loadConfig(environment); const client = this.getClient(environment); const { result, error } = await client.listen.prerecorded.transcribeUrl( { url }, { model: config.model, smart_format: config.features.smart_format, diarize: config.features.diarize, redact: config.features.redact || undefined, summarize: config.features.summarize ? 'v2' : undefined, ...overrides, } ); if (error) throw error; return result; } // Reset for key rotation static reset(env?: string) { if (env) { this.clients.delete(env); } else { this.clients.clear(); } } } ``` ### Step 3: Environment Variables Template ```bash # .env.development DEEPGRAM_API_KEY_DEV=dev-key-here DEEPGRAM_PROJECT_ID_DEV=dev-project-id # .env.staging DEEPGRAM_API_KEY_STAGING=staging-key-here DEEPGRAM_PROJECT_ID_STAGING=staging-project-id # .env.production (use secret manager, not file) # DEEPGRAM_API_KEY_PRODUCTION=production-key-here # DEEPGRAM_PROJECT_ID_PRODUCTION=production-project-id ``` ### Step 4: Docker Compose Multi-Profile ```yaml # docker-compose.yml x-common: &common build: . restart: unle
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
4f83675ca38afull audit observations/trust-audit/skill/jeremylongshore__deepgram-multi-env-setup.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 4f83675ca38a | SAFE | B | 89 | first audit |
Questions
What does the Deepgram Multi Env Setup skill do?
Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com.
Is Deepgram Multi Env Setup safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Deepgram Multi Env Setup access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
Which assistants does Deepgram Multi Env Setup work with?
Its documentation mentions claude-code. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (4f83675ca38a), read on 2026-10-08. The repository is watched, and a new audit runs when it changes — this is the first audit.