Skip to main content

Core Concepts

Understanding these core concepts will help you use Replane effectively.

Projects

A project is a container for related configurations. Each project has its own:

  • Set of configs
  • Team members with roles
  • API keys
  • Audit log

Projects provide isolation between different applications or environments.

Configs

A config is a named JSON value that your application can fetch. Examples:

feature-flags
{
"new-onboarding": true,
"dark-mode": false,
"billing-enabled": true
}
rate-limits
{
"api-requests-per-minute": 100,
"max-concurrent-connections": 50
}

Config Names

  • Must be 1-100 characters long
  • Can contain letters, digits, underscores, and hyphens
  • Are unique within a project

Override Rules

Configs can have override rules that return different values based on context:

// Same config returns different values for different users
const limit = await client.getConfigValue('api-limit', {
context: { tier: 'premium' }
});
// Returns higher limit for premium users

Overrides enable:

  • User-specific configurations
  • Tier-based limits
  • Regional settings
  • A/B testing variants
  • Feature flags with targeting

Learn more in the Override Rules Guide.

Versions & Snapshots

Every time you update a config, Replane creates a new snapshot with:

  • The new JSON value
  • Who made the change
  • When it was changed
  • A unique version number

Snapshots are append-only — previous versions are never deleted. This enables:

  • Full audit trail of all changes
  • Instant rollback to any previous version
  • Time-travel debugging

Realtime Updates (SSE)

When you use the SDK's watchConfigValue method, your application receives updates via Server-Sent Events (SSE):

const flags = await client.watchConfigValue('feature-flags');

// Later, when someone changes the config in the UI:
flags.get(); // Returns the new value automatically

No polling required. Changes propagate instantly.

JSON Schema Validation

Attach a JSON Schema to a config to enforce structure and prevent invalid values:

Example Schema
{
"type": "object",
"properties": {
"new-onboarding": { "type": "boolean" },
"dark-mode": { "type": "boolean" }
},
"required": ["new-onboarding", "dark-mode"],
"additionalProperties": false
}

When a schema is attached, Replane validates all changes before saving. Invalid configs are rejected.

Roles & Permissions

Replane uses a unified three-tier role system across projects and configs:

Project Roles

RolePermissions
AdminFull project control: manage members, delete project, manage all configs and API keys
MaintainerManage configs and API keys, edit project details (cannot manage members or delete project)

Config Roles

Config-level roles provide granular access control for individual configs:

RolePermissions
MaintainerFull config access: edit value, schema, description, and manage config maintainers
EditorEdit config value and description (cannot modify schema or maintainers)

Note: Project admins and maintainers automatically have config maintainer permissions for all configs in their project.

API Keys

API keys provide programmatic access to configs. Each key:

  • Belongs to a specific project
  • Can only access configs in that project
  • Is shown once when created (store it securely)
  • Can be revoked at any time

Use API keys in your SDKs:

const client = createReplaneClient({
apiKey: process.env.REPLANE_API_KEY,
baseUrl: 'https://your-replane-host.com',
});

Audit Log

The audit log tracks all activity:

  • Config changes (who, when, what)
  • Rollbacks
  • Member invitations
  • API key creation/revocation

The audit log is append-only and cannot be modified.

Next Steps