Skip to main content

Overview

Environments let you run multiple isolated copies of your solution. Create as many as you need — for features, experiments, testing, production, whatever makes sense for your workflow.
Cerebrum manages environments. Just say “create a staging environment” or “delete the feature-auth environment” — Cerebrum will handle it. The details below explain how environments work.
Our recommendation: Create an environment for each feature or task you’re working on. When you’re done — delete it. This keeps things clean and saves resources.
SetupEnvironmentsWhen to use
Per featurefeature-auth, bugfix-123Working on specific tasks, delete after merge
Classic pipelinedevstagingprodTraditional promotion flow
Per developeralice-dev, bob-devEach dev has their own sandbox

Why Use Environments

Safe experimentation

Test new features, try risky changes, debug issues — without affecting production.

Team workflows

Developers work in dev, QA tests in staging, users see production. No conflicts.

Different configurations

Each environment can have its own resources, variables, and secrets.

Feature branches

Spin up temporary environments to test feature branches before merging.

How Environments Work

Each environment belongs to a solution and is completely independent: What’s independent per environment:
  • Services and their code
  • Internal URLs (each service gets a unique URL per environment)
  • Public URLs
  • Environment variables and secrets
  • Resource allocation (CPU, RAM, storage)
  • Deployment history
Changes in one environment never affect another. You can delete your entire development environment and production keeps running.

Creating Environments

Just ask Cerebrum to create an environment for you:
“Create a new environment called feature-auth
“Set up a production environment”
Cerebrum will create the environment and set up any services you need. Once created, you can switch between environments using the dropdown in the UI.
Environment names are flexible — use whatever makes sense for your workflow. feature-auth, staging, alice-dev, experiment-v2 — whatever helps you stay organized.

Environment Isolation

Environments are fully isolated:
WhatIsolated?Notes
Services✅ YesEach env has its own instances
Internal URLs✅ YesDifferent UUID per environment
Public URLs✅ YesDifferent UUID per environment
Variables & Secrets✅ YesConfigure independently
Code⚠️ Git-basedIsolated by branches — use different branches per environment
Data✅ YesDatabases are separate
Logs✅ YesEach env has its own logs
Code isolation is branch-based. If you connect the same Git branch to multiple environments, they’ll deploy the same code. Use separate branches (e.g., main for production, develop for staging) to keep environments truly independent.

Managing Services Across Environments

Each environment has its own set of services. When you create a new environment, you start fresh — no services are copied automatically. Typical workflow:
  1. Build your solution in development
  2. When ready, recreate services in staging with the same configuration
  3. Test in staging
  4. Recreate in production for launch
Coming soon: Service inheritance between environments — create a service once and deploy it to multiple environments with different configs. Tell us if you need this now!

Variables Per Environment

Each environment has its own variables and secrets. This is how you configure environment-specific settings:
VariableDevelopmentStagingProduction
DEBUGtruetruefalse
LOG_LEVELdebuginfowarn
DATABASE_HOSTservice-abc...:5432service-def...:5432service-ghi...:5432
API_KEYtest_key_xxxtest_key_yyylive_key_zzz
Keep variable names consistent across environments — only the values should differ. This makes your code environment-agnostic.
Coming soon: Variable presets — define a set of variables once and apply them to multiple environments. Let us know if you need this!

Deployment Strategies

Promote Through Environments

A common pattern is to promote code through environments:
  1. Develop and test in development
  2. Deploy to staging for final validation
  3. Deploy to production for users

Feature Branch Environments

Create temporary environments for feature branches:
  1. Create environment feature-auth
  2. Develop and test the feature
  3. Merge to main, deploy to production
  4. Delete the feature environment

Resources Per Environment

Each environment can have different resource allocations:
EnvironmentTypical ResourcesWhy
DevelopmentMinimal (0.1 CPU, 256MB)Cost savings, quick iteration
StagingProduction-likeRealistic testing
ProductionBased on loadPerformance for users
Start with minimal resources in development — you can always scale up. Save the bigger resources for production where performance matters.

Best Practices

Always have at least a development environment. Production is for stable, tested code only.
Staging should mirror production as closely as possible — same services, similar resources. This catches issues before they hit users.
Same variable names across all environments. Only values differ. This keeps your code clean.
Delete feature branch environments after merging. They cost resources and add clutter.
Make it clear what each environment is for. Who uses it? What’s deployed there?

Troubleshooting

Double-check which environment is selected before deploying. The environment name is shown in the UI.
Check environment-specific variables. A missing or wrong variable is the most common cause.
Environments are isolated — you can’t use dev’s internal URL from staging. Each environment has its own URLs.

What’s Coming

We’re working on features to make environments even more powerful:
  • Service inheritance — Create a service once, deploy to multiple environments
  • Variable presets — Define variable sets and apply them across environments
  • Environment renaming — Rename environments without breaking things
  • Environment cloning — Duplicate an entire environment with one click

Request Features

Need any of these features now? Let us know in the community — we prioritize based on feedback!

What’s Next