| name | miro-multi-env-setup |
| description | Configure Miro REST API v2 across development, staging, and production
with separate OAuth apps, isolated test boards, and secret management.
Trigger with phrases like "miro environments", "miro staging",
"miro dev prod", "miro environment setup", "miro multi env".
|
| allowed-tools | Read, Write, Edit, Bash(gcloud:*), Bash(aws:*), Bash(vault:*) |
| version | 1.7.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","miro","environments","configuration"] |
| compatibility | Designed for Claude Code |
Miro Multi-Environment Setup
Overview
Configure separate Miro app credentials, OAuth scopes, and board access for development, staging, and production. Miro does not provide a sandbox API; all environments use https://api.miro.com/v2/ — isolation is achieved through separate apps and dedicated boards.
Prerequisites
Before applying this guide, confirm you have a Miro app or workspace appropriate to the task, a dedicated non-production board where changes can be tested safely, and only the OAuth scopes or administrative access the procedure requires.
Environment Strategy
| Environment | Miro App | Boards | Scopes | Token Storage |
|---|
| Development | MyApp (Dev) | 1 dedicated test board | boards:read, boards:write | .env.local |
| Staging | MyApp (Staging) | Staging workspace boards | All required scopes | Secret Manager |
| Production | MyApp (Production) | Production boards | Minimum required scopes | Secret Manager + rotation |
Key insight: Create a separate Miro app at https://developers.miro.com for each environment. This gives you independent client IDs, secrets, and OAuth redirect URIs.
Configuration Structure
config/
├── miro.base.ts # Shared settings (timeouts, retry policy)
├── miro.development.ts # Dev overrides
├── miro.staging.ts # Staging overrides
└── miro.production.ts # Prod overrides
Base Configuration
export const miroBaseConfig = {
apiBase: 'https://api.miro.com/v2',
tokenEndpoint: 'https://api.miro.com/v1/oauth/token',
timeout: 30000,
retries: 3,
backoff: { : , : , : },
: { : },
: { : , : },
};