Configure Ideogram across development, staging, and production environments. Use when setting up multi-environment deployments, configuring per-environment secrets, or implementing environment-specific Ideogram configurations. Trigger with phrases like "ideogram environments", "ideogram staging", "ideogram dev prod", "ideogram environment setup", "ideogram config by env".
Configure Ideogram across development, staging, and production environments with isolated API keys, environment-specific settings, and proper secret management. Each environment gets its own credentials and configuration to prevent cross-environment data leakage.
| Environment | Purpose | API Key Source | Settings |
|---|---|---|---|
| Development | Local development | .env.local | Debug enabled, relaxed limits |
| Staging | Pre-production testing | CI/CD secrets | Production-like settings |
| Production | Live traffic | Secret manager | Optimized, hardened |
config/
ideogram/
base.ts # Shared defaults
development.ts # Dev overrides
staging.ts # Staging overrides
production.ts # Prod overrides
index.ts # Environment resolver
// config/ideogram/base.ts
export const baseConfig = {
timeout: 30000, # 30000: 30 seconds in ms
maxRetries: 3,
cache: {
enabled: true,
ttlSeconds: 300, # 300: timeout: 5 minutes
},
};
// config/ideogram/development.ts
import { baseConfig } from "./base";
export const developmentConfig = {
...baseConfig,
apiKey: process.env.IDEOGRAM_API_KEY_DEV,
debug: true,
cache: { enabled: false, ttlSeconds: 60 },
};
// config/ideogram/staging.ts
import { baseConfig } from "./base";
export const stagingConfig = {
...baseConfig,
apiKey: process.env.IDEOGRAM_API_KEY_STAGING,
debug: false,
};
// config/ideogram/production.ts
import { baseConfig } from "./base";
export const productionConfig = {
...baseConfig,
apiKey: process.env.IDEOGRAM_API_KEY_PROD,
debug: false,
timeout: 60000, # 60000: 1 minute in ms
maxRetries: 5,
cache: { enabled: true, ttlSeconds: 600 }, # 600: timeout: 10 minutes
};
// config/ideogram/index.ts
import { developmentConfig } from "./development";
import { stagingConfig } from "./staging";
import { productionConfig } from "./production";
type Environment = "development" | "staging" | "production";
const configs = {
development: developmentConfig,
staging: stagingConfig,
production: productionConfig,
};
export function detectEnvironment(): Environment {
const env = process.env.NODE_ENV || "development";
if (env === "production") return "production";
if (env === "staging" || process.env.VERCEL_ENV === "preview") return "staging";
return "development";
}
export function getIdeogramConfig() {
const env = detectEnvironment();
const config = configs[env];
if (!config.apiKey) {
throw new Error(`IDEOGRAM_API_KEY not set for environment: ${env}`);
}
return { ...config, environment: env };
}
# Local development (.env.local - git-ignored)
IDEOGRAM_API_KEY_DEV=your-dev-key
# GitHub Actions
# Settings > Environments > staging/production > Secrets
# Add IDEOGRAM_API_KEY_STAGING and IDEOGRAM_API_KEY_PROD
# AWS Secrets Manager
aws secretsmanager create-secret \
--name ideogram/production/api-key \
--secret-string "your-prod-key"
# GCP Secret Manager
echo -n "your-prod-key" | gcloud secrets create ideogram-api-key-prod --data-file=-
# .github/workflows/deploy.yml