Configure Gamma across development, staging, and production environments.
Use when setting up multi-environment deployments, configuring per-environment secrets,
or implementing environment-specific Gamma configurations.
Trigger with phrases like "gamma environments", "gamma staging",
"gamma dev prod", "gamma environment setup", "gamma config by env".
Configure Gamma API access across development, staging, and production environments. Since Gamma is a SaaS API with no self-hosted option, environment separation is achieved through separate workspaces (API keys), mock servers for development, and environment-aware client configuration.
Prerequisites
Separate Gamma workspaces (or at minimum separate API keys) per environment
// src/config/secrets.ts
// For production, fetch API key from secret manager at startup
import { SecretsManager } from "@aws-sdk/client-secrets-manager";
let cachedKey: string | null = null;
let cacheExpiry = 0;
async function getProductionApiKey(): Promise<string> {
if (cachedKey && Date.now() < cacheExpiry) return cachedKey;
const sm = new SecretsManager({ region: "us-east-1" });
const secret = await sm.getSecretValue({ SecretId: "gamma/api-key" });
cachedKey = JSON.parse(secret.SecretString!).apiKey;
cacheExpiry = Date.now() + 300000; // Cache for 5 minutes
return cachedKey!;
}
Step 5: Environment Guards
// src/guards.ts
function blockProduction(operation: string) {
if (process.env.NODE_ENV === "production") {
throw new Error(`${operation} is blocked in production`);
}
}
// Block destructive operations in production
async function deleteAllGenerations() {
blockProduction("deleteAllGenerations");
// ... cleanup logic for dev/staging
}
// Warn about credit-consuming operations in non-production
function warnCredits(env: string) {
if (env !== "production" && !gammaConfig.useMock) {
console.warn("WARNING: Using live Gamma API — credits will be consumed");
}
}
Step 6: CI/CD Environment Configuration
# .github/workflows/gamma.yml
jobs:
test:
runs-on: ubuntu-latest
env:
GAMMA_MOCK: 'true'
NODE_ENV: test
steps:
- uses: actions/checkout@v4
- run: npm ci && npm test
# Uses mock server — no API key needed, no credits consumed
staging:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/develop'
env:
GAMMA_API_KEY: ${{ secrets.GAMMA_STAGING_API_KEY }}
NODE_ENV: staging
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run test:integration
production:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
env:
GAMMA_API_KEY: ${{ secrets.GAMMA_PRODUCTION_API_KEY }}
NODE_ENV: production
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run deploy