Skip to main content

Documentation Index

Fetch the complete documentation index at: https://archie.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Almost everything in your backend is per-environment. When you switch environments using the switcher at the top of the project chrome, the entire Backend Console reloads in that environment’s context — different data, different roles, different secrets, different integration credentials. This page is the index of what’s scoped per-environment with cross-links to each setting.

The full per-environment scope

Every block below is independent across environments. Editing it in staging does not affect master.
ResourceWhere to configureCopied at branch time?
Data Model schemaBackend → Data ModelAlways (Full or System mode)
Authentication providersApp Services → Authentication ProvidersProvider records yes; secrets never
Role-based accessApp Services → Role-Based AccessAlways (lives in the cloned database)
File storage providersApp Services → File ManagerOptional, per checkbox
Custom APIs (gateway routes)App Services → Custom APIsOptional, per checkbox
Network policy (CORS, rate limits)Backend → Settings → NetworkOptional, per checkbox
API keysBackend → Settings → API KeysNever (issued per environment)
Environment variablesBackend → Settings → Environment VariablesOptional, per checkbox
IntegrationsBackend → IntegrationsProvider records yes; credentials never
Migration historyEnvironments → HistoryNever (audit trail per-environment)
BackupsEnvironments → BackupsNever (snapshots per-environment)
For the branch-time copy mechanics — which checkboxes copy what — see Creating environments.

Why secrets aren’t copied

Authentication provider secrets, OAuth credentials, and integration API keys (Stripe, SendGrid, etc.) are deliberately excluded from branch-time copying:
  • A dev secret leak shouldn’t compromise production.
  • Different environments often use different vendor accounts (test mode vs. live mode for Stripe; sandbox vs. production for OAuth providers).
  • Re-entering credentials per environment makes the security boundary explicit and reviewable.
When you branch a new environment, the auth provider configuration appears with the same fields but the secret values blank — you re-enter them in the new environment before activating the provider.

Per-environment context propagation

When you switch environments, the platform reloads the entire console in the new context. Behind the scenes:
  • API requests gain an environment header that routes to the right database.
  • The GraphQL and REST API endpoints are per-environment URLs.
  • Generated API tokens are scoped to a single environment and rejected by others.
  • Custom function deployments are per-environment.
There’s no path by which a request to dev accidentally touches production data — the routing happens server-side based on the environment header.

Common patterns

PatternHow to configure it
Test Stripe keys in dev, live keys in prodConfigure the Stripe integration with test keys in dev, live keys in master. The Stripe SDK in your code is the same; the credentials it uses are per-environment.
Looser CORS in dev, stricter in prodSet permissive origins in dev’s Network settings, specific origins in master. Branch-time copying lets you start matching, then diverge.
A staging email senderConfigure SendGrid with a staging-only sender address in staging so test emails don’t appear to come from your production domain.
Feature flag for a betaSet a BETA_FEATURE_ENABLED environment variable to true in staging and false in master. Promote when ready.
Restricted access to stagingUse a dedicated API key per environment. Revoking the staging key doesn’t affect production.

What’s not per-environment

A small number of things live at the project level — they’re shared across every environment:
  • The project itself (name, owner, billing).
  • Workspace memberships and team-level roles.
  • Project-level settings on the Frontend (UI, branding) that apply across environments.
If you need different values for those across environments, model them as per-environment configuration — for example, store frontend variants behind environment variables rather than at the project level.

FAQ

API keys are environment-scoped — issued for a single environment and rejected by others. Generate a new key in production and use that. Same applies to integration credentials and OAuth secrets.
No. Roles live in each environment’s database, so changes don’t propagate. To bring a role change from staging to master, merge — RBAC schema travels with the merge.
The copy flags only fire at branch time. After branching, edit each environment individually. For values you want to keep in sync, use a workspace-level secret store and reference it from each environment.
The dashboard scopes to the active environment. To inspect another environment’s configuration, switch to it. For programmatic access, the GraphQL API accepts an environment header — you can query any environment’s state without switching the dashboard.
Treat environment variables as the source-controlled boundary. Commit a .env.example listing every key without values, and use the Environment Variables UI to set per-environment values. Avoids checking secrets into git while keeping the variable surface explicit.