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 API access across development, staging, and production with isolated API keys, environment-specific model/speed settings, and proper secret management. Each environment gets its own key and configuration to prevent cross-environment issues.
| Environment | API Key Source | Model | Speed | Cache | Billing |
|-------------|---------------|-------|-------|-------|---------|
| Development | .env.local | V_2_TURBO | TURBO | Disabled | Minimal top-up |
| Staging | CI/CD secrets | V_2 | DEFAULT | 5 min TTL | Moderate |
| Production | Secret manager | V_2 or V3 | DEFAULT | 10 min TTL | Full auto top-up |
// config/ideogram.ts
type Environment = "development" | "staging" | "production";
interface IdeogramConfig {
apiKey: string;
defaultModel: string;
renderingSpeed: string;
timeout: number;
maxRetries: number;
concurrency: number;
cache: { enabled: boolean; ttlSeconds: number };
debug: boolean;
}
const configs: Record<Environment, Omit<IdeogramConfig, "apiKey">> = {
development: {
defaultModel: "V_2_TURBO",
renderingSpeed: "TURBO",
timeout: 30000,
maxRetries: 1,
concurrency: 2,
cache: { enabled: false, ttlSeconds: 60 },
debug: true,
},
staging: {
defaultModel: "V_2",
renderingSpeed: "DEFAULT",
timeout: 60000,
maxRetries: 3,
concurrency: 5,
cache: { enabled: true, ttlSeconds: 300 },
debug: false,
},
production: {
defaultModel: "V_2",
renderingSpeed: "DEFAULT",
timeout: 60000,
maxRetries: 5,
concurrency: 8,
cache: { enabled: true, ttlSeconds: 600 },
debug: false,
},
};
export function getIdeogramConfig(): IdeogramConfig {
const env = detectEnvironment();
const apiKey = getApiKeyForEnv(env);
if (!apiKey) {
throw new Error(`IDEOGRAM_API_KEY not set for environment: ${env}`);
}
return { ...configs[env], apiKey };
}
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";
}
function getApiKeyForEnv(env: Environment): string {
const envVar = {
development: "IDEOGRAM_API_KEY_DEV",
staging: "IDEOGRAM_API_KEY_STAGING",
production: "IDEOGRAM_API_KEY",
}[env];
return process.env[envVar] || process.env.IDEOGRAM_API_KEY || "";
}
# .env.local (development -- git-ignored)
IDEOGRAM_API_KEY_DEV=your-dev-key
NODE_ENV=development
# .env.staging (CI only)
IDEOGRAM_API_KEY_STAGING=your-staging-key
NODE_ENV=staging
# Production: use secret manager, never .env files
set -euo pipefail
# --- GitHub Actions ---
gh secret set IDEOGRAM_API_KEY_STAGING --env staging
gh secret set IDEOGRAM_API_KEY --env production
# --- AWS Secrets Manager ---
aws secretsmanager create-secret \
--name ideogram/staging/api-key \
--secret-string "your-staging-key"
aws secretsmanager create-secret \
--name ideogram/production/api-key \
--secret-string "your-production-key"
# --- GCP Secret Manager ---
echo -n "your-staging-key" | gcloud secrets create ideogram-api-key-staging --data-file=-
echo -n "your-production-key" | gcloud secrets create ideogram-api-key-prod --data-file=-
# .github/workflows/deploy.yml
jobs:
deploy-staging:
runs-on: ubuntu-latest
environment: staging
env:
IDEOGRAM_API_KEY_STAGING: ${{ secrets.IDEOGRAM_API_KEY_STAGING }}
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- run: npm run deploy:staging
deploy-production:
runs-on: ubuntu-latest
environment: production
needs: deploy-staging
env:
IDEOGRAM_API_KEY: ${{ secrets.IDEOGRAM_API_KEY }}
steps:
- uses: actions/checkout@v4
- run: npm ci && npm run build
- run: npm run deploy:production
import { z } from "zod";
const configSchema = z.object({
apiKey: z.string().min(10, "API key too short"),
defaultModel: z.enum(["V_1", "V_1_TURBO", "V_2", "V_2_TURBO", "V_2A", "V_2A_TURBO"]),
timeout: z.number().min(5000).max(120000),
concurrency: z.number().min(1).max(10),
});
// Validate at application startup
try {
const config = configSchema.parse(getIdeogramConfig());
console.log(`Ideogram configured for ${detectEnvironment()} (model: ${config.defaultModel})`);
} catch (err: any) {
console.error("Ideogram config invalid:", err.message);
process.exit(1);
}
| Issue | Cause | Solution |
|-------|-------|----------|
| Wrong environment detected | Missing NODE_ENV | Set in deployment platform |
| Secret not found | Wrong variable name | Check env-specific key name |
| Cross-env data leak | Shared API key | Create separate keys per env |
| Staging using prod key | No env isolation | Validate key identity at startup |
env=staging; config=r22; fixture=prompt-v4; rights=test-owned; destination=approved; output_retention=none; rollback=r21 is evidence for controlled promotion.
For deployment patterns, see ideogram-deploy-integration.
下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer