What Is Unleash Portal (Admin UI)?
Unleash Portal is the web-based admin dashboard that ships with the Unleash server. It is the control plane — the place where your team creates, manages, targets, and monitors feature flags. It is NOT a separate product; it runs alongside the Unleash backend server. All SDKs (Node, Python, Java, Go, etc.) connect to the Unleash server API, and the Portal is the UI on top of that same server.
Open Source (OSS)
Self-hosted, free. Full source code on GitHub. Core feature flagging + basic RBAC. Great for small-to-mid teams.
Enterprise
Self-hosted or cloud. Paid. Adds approval workflows, unlimited environments, SSO/SCIM, advanced RBAC, signals, and compliance features.
Unleash Cloud (Pro)
Hosted version. Pro plan = most Enterprise features without self-hosting overhead. Managed by Unleash team.
Unleash Edge
Separate Rust binary. Acts as high-performance proxy/cache between your SDKs and the server. Works with both OSS and Enterprise.
OSS vs Enterprise — Quick Summary
🟢 Open Source — Included
- ✓ All 5 feature flag types
- ✓ 5 built-in activation strategies
- ✓ Custom activation strategies
- ✓ Variants (A/B testing)
- ✓ Constraints (advanced targeting)
- ✓ 2 environments (dev + prod)
- ✓ Multiple projects
- ✓ Basic RBAC (3 global roles)
- ✓ Client / Admin / Frontend tokens
- ✓ Project-level segments
- ✓ Webhooks & integrations (Slack, Teams, Datadog)
- ✓ Basic metrics & impressions
- ✓ Playground (flag evaluation test)
- ✓ Import / Export
- ✓ OIDC login (Google, GitHub, Azure AD)
- ✓ Basic event log
- ✓ Tags & tagging
- ✓ Personal access tokens (PAT)
- ✓ REST Admin API
- ✓ All official SDKs (18+ languages)
💜 Enterprise — Additional
- ★ Change Requests (approval workflows)
- ★ Advanced RBAC (custom roles)
- ★ Project-level role assignment
- ★ Unlimited environments
- ★ Environment cloning
- ★ Feature Dependencies
- ★ Global / cross-project segments
- ★ SAML 2.0 SSO
- ★ SCIM user provisioning
- ★ Service accounts (for CI/CD)
- ★ Signals & Actions (auto kill-switch)
- ★ Network View (SDK topology)
- ★ Insights & Analytics dashboard
- ★ Feature Lifecycle management
- ★ Feature Naming Patterns
- ★ Extended Audit Logs (compliance)
- ★ Banner / Announcement system
- ★ Jira & ServiceNow integration
- ★ SLA-backed support
Priority Implementation Guide — What to Build First
If you are on OSS and want to self-implement or workaround enterprise features, here is the ranked order by value. Score is 1–10.
| # | Enterprise Feature | Value Score | Why You Need It | OSS Workaround |
|---|---|---|---|---|
1 |
Change Requests | 10/10 CRITICAL | Any team member can change production flags without review. Zero governance by default in OSS. | Use separate staging env + discipline, or build a PR-like approval using GitHub/GitLab webhooks. |
2 |
Unlimited Environments | 9/10 CRITICAL | OSS gives you only dev + prod. No staging, QA, UAT. Teams with any CI/CD pipeline hit this immediately. | Hack: use projects as fake environments, or run multiple Unleash servers per env (expensive). |
3 |
Advanced RBAC (custom roles) | 8/10 HIGH | OSS has 3 global roles only (Admin / Editor / Viewer). No per-project roles. No read-only access per env. | Use separate Unleash server instances per team, or restrict via API token scoping. |
4 |
Feature Dependencies | 7/10 HIGH | When flag B should only be on if flag A is on. Complex rollout sequences break without this. | Implement logic in application code: manually check parent flag before evaluating child. |
5 |
Signals & Actions | 7/10 HIGH | Auto-disable flags when error rate spikes. Critical for safe feature rollouts at scale. | Build your own: Datadog/Grafana alert → webhook → Unleash Admin API to disable flag. |
6 |
Extended Audit Logs | 7/10 HIGH | Compliance (SOC2, ISO27001) requires audit trail of who changed what and when. OSS log is basic. | Subscribe to Unleash events via webhook, store in your own logging system (CloudWatch, ELK). |
7 |
Global Segments | 6/10 MEDIUM | OSS segments are per-project only. Can't reuse "beta users" segment across all projects. | Duplicate segment definition in each project manually. Painful but workable for small scale. |
8 |
SAML 2.0 SSO | 6/10 MEDIUM | Enterprises use Okta/Azure with SAML. OSS only has OIDC (works with Google, GitHub, Azure OIDC). | Configure Azure AD / Okta in OIDC mode (they support both). Works fine in most cases. |
9 |
Feature Lifecycle | 5/10 MEDIUM | Track stale flags (flags that have been on or off for too long without cleanup). Prevents flag debt. | Use tags manually to mark flag status. Build a cron job to report on old flags via Admin API. |
10 |
SCIM Provisioning | 5/10 MEDIUM | Auto-sync users/groups from Okta/Azure AD. Without it, you manually create Unleash users. | Use Unleash Admin API to script user creation from your IdP. Run it nightly. |
11 |
Network View | 4/10 LOW | Visual map of all connected SDKs, their token usage, health. Nice for ops visibility. | Query Unleash metrics API, build a Grafana dashboard showing connected clients. |
12 |
Insights & Analytics | 4/10 LOW | Flag lifecycle analytics, time-to-production, team productivity metrics. | Export metrics via Admin API → BigQuery / Redshift for custom reporting. |
13 |
Naming Patterns | 3/10 LOW | Enforce flag name conventions (e.g., must start with team prefix). Prevents chaos at scale. | Lint flag names via webhook + CI validation script before flags are created. |
14 |
Service Accounts | 3/10 LOW | Non-human CI/CD accounts with scoped permissions. OSS PATs are tied to human users. | Create a dedicated "bot" user in Unleash and use its PAT for CI/CD pipelines. |
1. Feature Flags — Core
The Foundation — Fully Available in OSS
All flag types, evaluation logic, and SDK integration are open source. This is the core of Unleash.
Release Toggle
The most common flag type. Controls whether a feature is released to users. Simple on/off per environment. Used for trunk-based development — merge your code behind a flag, release when ready without a new deployment.
- Use case: "Show the new checkout page only to users in production gradually."
- Default off → turn on when ready to release → remove flag once stable.
- Supports all activation strategies (gradual rollout, user IDs, etc.)
Experiment Toggle (A/B Test)
Used for A/B testing and multivariate experiments. Uses the Variants system to assign users to different groups and track metrics per variant. Designed to be short-lived.
- Use case: "Show button color A to 50% of users, color B to 50%."
- Variant weights determine distribution (must sum to 100%).
- Returns variant name + optional payload to your SDK. You track metrics externally.
Operational Toggle
Controls operational behavior of the system, not user-facing features. Long-lived. Used for circuit breakers, maintenance modes, and system configuration.
- Use case: "Switch from old payment provider to new one without deployment."
- "Enable maintenance mode for database migration window."
- Often permanent — lives in the codebase for months or years.
Kill Switch
A safety valve — normally enabled, disabled only in emergency. Inverts the mental model: default is ON, you disable it when something goes wrong. Critical for production safety.
- Use case: "If the recommendations engine fails, disable it — show fallback UI instantly."
- Zero-downtime incident response: disable a broken feature without deploying.
- Combined with Signals & Actions (Enterprise), this becomes automatic.
Permission Toggle
Controls access to features based on user roles, plan tiers, or entitlements. Long-lived. The flag IS the permission check.
- Use case: "Only show the export CSV button to users on the Pro plan."
- Avoids hardcoding plan checks in application code.
- Change entitlements without deployment — update the strategy in Unleash Portal.
2. Activation Strategies
Determines WHO sees the flag as enabled
Strategies are conditions evaluated per request. Multiple strategies = OR logic (any strategy matching = enabled).
Default (Standard) Strategy
Simplest strategy — flag is on for everyone or off for everyone. No targeting. The toggle itself is the switch.
Gradual Rollout Strategy
Roll out to a percentage of users. Uses consistent hashing (MurmurHash) so the same user always gets the same result. Set 0%→10%→50%→100% gradually. Configure which field is used as the stickiness key.
- Stickiness options: default (userId, sessionId, or random), userId, sessionId, or any custom context field.
- Grouping: Multiple flags sharing the same groupId get consistent bucketing — if user sees flag A, they see flag B too.
User ID List Strategy
Enable the flag only for specific user IDs. Perfect for beta testers, internal team testing, canary users. Add/remove IDs without deployment.
Remote Address (IP) Strategy
Enable for specific IP addresses. Useful for office IP allowlisting, data center ranges, or development machines.
Application Hostname Strategy
Enable only on specific server hostnames. Useful for canary server deployments or enabling a feature on specific pods in Kubernetes.
Custom Strategies
Define your own strategy with custom parameters. The Unleash Portal stores the strategy definition; your SDK implements the evaluation logic. You register the custom strategy with the SDK client.
- Example: "AccountPlan" strategy — takes a "plan" parameter, enables if user's plan matches.
- Strategy definition (schema) stored in Unleash. Evaluation logic in your SDK.
Constraints (Advanced Targeting)
Constraints are AND conditions added on top of any strategy. They filter further. Example: gradual rollout to 50% AND only if user is in "premium" segment AND app version >= "2.0.0".
- Operators: IN, NOT_IN, STR_STARTS_WITH, STR_ENDS_WITH, STR_CONTAINS, NUM_EQ, NUM_GT, NUM_LT, DATE_AFTER, DATE_BEFORE, SEMVER_EQ, SEMVER_GT, SEMVER_LT
- Can constrain on any context field: userId, sessionId, remoteAddress, properties.*, appVersion, environment, etc.
- Inverted constraints also supported (NOT logic)
3. Variants & A/B Testing
Variants System
Variants extend a flag beyond on/off. Each enabled user gets assigned one variant based on weighted distribution. You use this for A/B/C/D testing. Each variant can carry a payload (JSON, string, CSV, number) passed to the application.
- Weight: Each variant gets a weight (total must = 1000 = 100%). E.g., variant A = 500, variant B = 500 = 50/50 split.
- Payload: Optional data sent with the variant. E.g.,
{"color": "blue", "size": "large"}for a button test. - Stickiness: Same user always gets the same variant. Uses same hashing as gradual rollout.
- Override: Force specific users into a specific variant (for QA testing).
- Disabled variant: What users get when the flag is off — you define this to avoid null checks in code.
4. Environments
Biggest OSS Limitation — Only 2 Environments
Environments let the same flag have different states in different deployment stages. Critical for real-world CI/CD pipelines.
Per-Environment Flag State
Each flag has independent on/off state and strategy configuration per environment. Turning on a flag in staging does NOT affect production. Environments also control which tokens can read which flags.
- A flag can be ON in development but OFF in production.
- Strategies can differ per environment (100% rollout in dev, 5% in prod).
- Client API tokens are scoped to one environment.
Maximum 2 Environments
Open Source Unleash ships with development and production environments and does not allow creating additional environments. You cannot add staging, QA, UAT, or pre-prod environments.
Unlimited Environments + Environment Cloning
Create as many environments as you need: development, staging, QA, UAT, canary, production-EU, production-US, etc. Each is fully independent for flag states and strategies.
- Environment cloning: Clone all flag configurations from staging to production in one click. No manual copying.
- Environment ordering: Define the promotion order (dev → staging → prod) for visual guidance.
- Environment type: Tag environments as "development" or "production" type — affects SDK behavior and metrics aggregation.
Without multiple environments, your team is doing manual coordination ("don't turn on flag X, QA is testing it"). This doesn't scale. Environments are the most common reason OSS teams upgrade.
5. Projects & Organization
Projects
Projects group related feature flags together. Each project has its own flags, members (in Enterprise), and segments. Typical grouping: one project per product team or microservice.
- Default project is "Default" — flags live here unless you create projects.
- Flags are scoped to a project — cannot be shared across projects (by design).
- Members assigned per project in Enterprise. In OSS, access is global only.
Project-level Role Assignment
In Enterprise, you assign users different roles per project. User A can be "Editor" in Project Alpha but "Viewer" in Project Beta. In OSS, roles are global — if you are Editor, you can edit ALL projects.
Multi-team orgs need isolation. You do not want the payments team editing the recommendations team's flags. Project-level RBAC is mandatory for any org with 3+ teams.
Project Owner
Designate an owner for each project — a named person responsible for the flags in that project. Shows up in UI and in health/lifecycle reports. Helps flag hygiene ownership.
6. Access Control (RBAC)
Role-Based Access Control
OSS has 3 fixed global roles. Enterprise adds custom roles with granular permissions at project level.
Built-in Roles (OSS)
Three fixed roles available in OSS:
| Role | Permissions | Use For |
|---|---|---|
| Admin | Full access — manage users, API tokens, all flags, all projects, settings | Platform admins, DevOps |
| Editor | Create/edit/delete flags in all projects. Cannot manage users. | Developers, product managers |
| Viewer | Read-only access to all flags in all projects. Cannot make changes. | External stakeholders, data teams |
Custom Roles
Create custom roles with any combination of permissions. Each permission is a specific action on a specific resource type.
- Example role "Flag Approver": Can review Change Requests + approve/reject, but cannot create or delete flags.
- Example role "Flag Creator": Can create flags but cannot enable/disable them in production.
- Example role "Production Gate": Can toggle flags in production only, no other write permissions.
- Root roles (global) vs Project roles — assigned at different scopes.
- Permission categories: flags, strategies, variants, segments, metrics, API tokens, projects, users.
Separation of duties. Developers create flags; senior engineers or product managers approve them going to production. Custom roles enforce this workflow at the system level, not just by convention.
7. Change Requests — #1 Most Valuable Enterprise Feature
Approval Workflows for Flag Changes
Any change to a flag in a protected environment must be approved before it takes effect. Think: GitHub Pull Requests, but for feature flags.
Change Request Workflow
When Change Requests are enabled for an environment, no direct changes can be made. Every modification is bundled into a Change Request that must go through approval before it's applied.
- Batch changes: Multiple flag changes can be grouped into a single Change Request. Apply atomically.
- Minimum approvals: Configure how many approvers are required (e.g., require 2 approvals).
- Approver roles: Only users with the "Approve Change Requests" permission can approve.
- Self-approval: By default, the creator cannot approve their own Change Request.
- Conflict detection: If a flag changes in the base after a Change Request is created, the system flags the conflict.
- Scheduled apply: Approve now, apply at a scheduled time (e.g., apply at 2:00 AM during maintenance window).
- Comments & discussion: Reviewers can leave comments before approving or rejecting.
- Change history: Full trail of who created, reviewed, approved, and applied each Change Request.
Without Change Requests, any Editor can flip a flag in production at any time with no oversight. For teams with compliance requirements (SOX, ISO 27001, SOC2) or any regulated industry, this is a hard requirement. Change Requests also prevent "oops" moments — someone toggling the wrong flag in prod during Friday afternoon.
Create a webhook integration: when any flag change event fires, post to a Slack channel "#flag-changes-prod" for manual review. But this is notification-only — there is no enforcement. Anyone can still make changes without approval. Also build a Slack bot that uses the Admin API to revert changes if not approved within N minutes. Complex, fragile, and not auditable.
8. SSO & Authentication
Username / Password Login
Default authentication. Users have Unleash accounts with email and password. Suitable for small teams or self-hosted setups where SSO is not needed.
OIDC (OpenID Connect) SSO
Connect Unleash to any OIDC-compatible Identity Provider. Users log in through your IdP. Available in OSS.
- Providers supported: Google Workspace, GitHub, Azure Active Directory (OIDC mode), Okta (OIDC mode), Auth0, Keycloak, AWS Cognito, and any OIDC-compliant IdP.
- Config: Issuer URL, Client ID, Client Secret — standard OIDC discovery.
- Auto-create users: Option to auto-create users in Unleash on first OIDC login.
- Role mapping: In Enterprise, map IdP groups to Unleash roles automatically.
SAML 2.0 SSO
SAML 2.0 (Security Assertion Markup Language) for enterprise IdPs that do not support OIDC, or organizations that require SAML for compliance reasons.
- Use when: Your org uses Okta, Azure AD, or ADFS in SAML-only mode (some legacy enterprise policies).
- Metadata exchange: Upload IdP SAML metadata XML, or provide individual fields (entityId, SSO URL, certificate).
- Attribute mapping: Map SAML attributes (email, name, groups) to Unleash user properties.
Most modern IdPs (Okta, Azure AD) support both SAML and OIDC. Configure your IdP in OIDC mode and use Unleash's built-in OIDC support. This works for ~90% of enterprise cases.
9. SCIM User Provisioning
SCIM 2.0 Automated User Sync
SCIM (System for Cross-domain Identity Management) automates user lifecycle management. When you add/remove users in Okta or Azure AD, Unleash syncs automatically. No manual user management.
- Provision: New user in IdP → auto-created in Unleash with correct roles.
- Deprovision: User removed from IdP (e.g., employee left company) → auto-deactivated in Unleash. Critical for security.
- Group sync: IdP groups map to Unleash roles. User added to "Feature Flag Editors" group → gets Editor role automatically.
- Supported IdPs: Okta, Azure AD / Entra ID (primary); others via SCIM 2.0 protocol.
Without SCIM, when an employee leaves your company you must manually remove them from Unleash. A single forgotten account = security risk. SCIM ensures offboarding happens automatically and immediately.
Write a script that runs nightly: query your IdP's user list, compare with Unleash user list via Admin API, deactivate users not in IdP. Not real-time but covers 95% of the risk if automated.
10. Segments & Targeting
Reusable Groups of Constraints
Segments let you define a user group once and reuse it across many flags. Like saved filter presets.
Project Segments (OSS)
Define segments at the project level. A segment is a named set of constraints that can be attached to any strategy within that project. Changes to the segment automatically apply to all flags using it.
- Example segment "Beta Users": userId IN [123, 456, 789] AND properties.betaEnrolled = "true"
- Attach this segment to 20 flags — update one segment, all 20 flags update.
- OSS limit: Segments are scoped to a single project. Cannot be shared with other projects.
Global Segments (Cross-Project)
Global segments are defined at the organization level and can be used by any project. If you have "Internal Employees" or "VIP Customers" as a targeting group, you define it once and reuse everywhere.
With OSS, if you have 10 projects and need to update your "beta users" list, you update 10 separate project segments. With global segments, update once.
11. Feature Dependencies
Parent-Child Flag Dependencies
Define that Flag B depends on Flag A. Flag B evaluates as disabled if Flag A is disabled, regardless of B's own strategy. Used for complex rollout orchestration and feature composition.
- Parent required ON: "new-checkout" depends on "new-payment-api" — if payment API is off, checkout is automatically off.
- Parent required to have variant: "premium-dashboard" depends on "billing-v2" having variant "enabled" — ensures premium features only show when new billing is fully active.
- Chain dependencies: C depends on B which depends on A. The entire chain must be enabled for C to be enabled.
- Circular detection: Unleash detects and prevents circular dependencies at creation time.
- Visual graph: The Portal shows the dependency graph visually so you can see the chain.
Without dependencies, developers implement the dependency logic manually in application code (check flag A before checking flag B). This logic is scattered, hard to audit, and creates silent bugs when someone turns off flag A without realizing flag B depends on it.
Implement dependency checks in your application: if (isEnabled('flag-a') && isEnabled('flag-b')). Document the dependency in flag description. Relies on human discipline — no system enforcement.
12. Feature Flag Lifecycle
Lifecycle Stages & Health Tracking
Tracks every flag through its lifecycle stages automatically, based on metrics and configuration. Alerts when flags become stale (enabled too long, or disabled too long without cleanup).
Lifecycle Stages:
| Stage | Meaning | Auto-detected? |
|---|---|---|
| Initial | Flag created, not yet receiving traffic | Yes — on creation |
| Pre-Live | Flag is receiving traffic in non-production environments | Yes — on first evaluation in dev/staging |
| Live | Flag is receiving traffic in production | Yes — on first evaluation in prod |
| Completed | Flag has reached 100% rollout or been fully disabled | Partially manual |
| Archived | Flag is removed from active use, pending code cleanup | Manual |
- Health indicators: Flags stuck in "Live" for too long (flag debt) are marked unhealthy. Portal shows a health score per project.
- Staleness alerts: Configurable thresholds — alert if a flag has been fully enabled for more than 30 days (time to remove from code).
- Project health dashboard: See all flags with their current lifecycle stage in one view. Red/yellow/green health status.
Build a cron job using the Admin API: find all flags where createdAt > 90 days ago and the flag is enabled in production. Post to Slack "#flag-hygiene" channel weekly with a list of stale flags.
13. Signals & Actions — Automatic Kill Switches
Signals & Actions
Connect external metric systems (Datadog, Grafana, PagerDuty) to Unleash so that when an alert fires, Unleash automatically disables a specific flag. This turns Kill Switch flags into true automatic circuit breakers.
Signals:
- Define a signal endpoint — Unleash exposes a URL that external systems POST to.
- Signals carry a name and optional metadata (severity, value).
- Sources: Datadog webhooks, Grafana alerts, PagerDuty webhooks, custom HTTP POST from any system.
Actions:
- Define rules: "IF signal 'high-error-rate' fires THEN disable flag 'new-checkout' in production".
- Actions can also send notifications or trigger other webhooks.
- Action log: track every automatic action taken, when, and why.
Without Signals & Actions, when your new feature causes production errors, an on-call engineer must: wake up, log in to Unleash, find the flag, disable it. This takes 5–30 minutes. Signals make this happen in seconds, automatically, while the engineer is still reading the alert.
Build your own: Datadog alert → webhook → Lambda/Cloud Function → Unleash Admin API to call PATCH /api/admin/projects/:id/features/:name/environments/:env/off. Requires custom infrastructure but is doable in ~2 hours.
14. Metrics & Analytics
Basic Metrics (OSS)
Every SDK call to evaluate a flag sends back impression data. OSS aggregates and displays this in the Portal. You see per-flag request counts (yes count = flag was enabled, no count = flag was disabled) per environment.
- Last 1 hour and last 24 hours of flag evaluation counts.
- Per-application breakdown (which app is calling which flag).
- Charts in the flag detail page.
- Metrics reset every hour (rolling window, not historical).
Insights & Analytics Dashboard
A dedicated analytics section showing flag health, team productivity, and lifecycle metrics across the entire organization.
- Flag health overview: How many flags are stale, live, or completed.
- Time-to-production: How long it takes flags to move from creation to production. Team/flag trend over time.
- Flags per project/team: Which teams have the most flag debt.
- User activity: Who is making the most changes. Change frequency per environment.
15. Network View
Connected SDK Topology
Visual dashboard showing all SDK instances currently connected to your Unleash server. See which applications are polling for flags, which tokens they're using, and their connection health.
- Live connections: See every connected SDK client, app name, SDK version, last seen timestamp.
- Token attribution: Know which client token is being used by which application.
- SDK versions: Identify applications running outdated SDKs that need upgrading.
- Orphan token detection: Find API tokens that are configured but no SDK is using them.
The /api/admin/metrics/applications endpoint exists in OSS. Build a Grafana dashboard querying it to display connected apps, SDK versions, and last-seen timestamps.
16. Integrations & Addons
Webhook Addon
Fire an HTTP POST to any URL when Unleash events occur. Use for custom automation, audit pipelines, or integration with any system.
- Events: feature-created, feature-updated, feature-enabled, feature-archived, strategy-created, etc.
- Custom headers and payload templates supported.
Slack, Microsoft Teams, Datadog
Built-in addon integrations. Post flag change notifications to Slack channels or Teams rooms. Send feature flag events to Datadog as events for correlation with metrics.
Jira Integration
Link Unleash feature flags to Jira issues. See which flag is associated with which ticket. Track flag lifecycle from Jira. When a Jira issue is closed, optionally trigger archiving of the related flag.
ServiceNow Integration
Connect Change Requests in Unleash to ServiceNow change management tickets. Required for ITSM-governed environments where all production changes need a ServiceNow change ticket.
17. API Tokens & Access
Client Tokens
Used by server-side SDKs to poll the Unleash server for flag configurations. Scoped to a specific project and environment. Read-only — cannot make changes via Admin API.
Frontend (Browser) Tokens
Safe for use in browser-side / mobile applications. Unlike client tokens, frontend tokens do not expose all flag configurations — they return evaluated flag results only for a given context. Works with Unleash Proxy and Unleash Edge.
Admin Tokens
Full access Admin API tokens. Can read and write everything. Used for CI/CD scripts, admin automation. Should never be used in application SDKs. Treat like root credentials.
Personal Access Tokens (PAT)
User-specific tokens for Admin API access. Have the same permissions as the user who created them. Users can create and revoke their own PATs. Useful for personal scripts and developer tooling.
Service Accounts
Non-human accounts for CI/CD pipelines and automation. Unlike PATs (tied to a human user who might leave the company), service accounts are organization-owned and have their own role assignments.
Create a dedicated human user account (e.g., "ci-bot@yourcompany.com"), assign it the minimum required role, and use its PAT. Works identically — just a naming/ownership convention difference.
18. Playground
Flag Evaluation Playground
The Playground lets you test flag evaluation without writing any code. You provide a context (userId, sessionId, remoteAddress, properties) and the Playground shows you which flags would be enabled for that context and why.
- Select any environment to test against.
- See results for all flags at once, or filter to a specific flag.
- Explanation view: For each flag, shows which strategy matched, which constraints passed/failed, and what variant was assigned.
- Critical for debugging "why is this flag on/off for this user?" without looking at code.
19. Audit Log
Event Log (OSS)
Unleash logs all admin actions as events. You can view the event history in the Portal. OSS keeps a functional event log accessible via the UI and Admin API.
- Events: feature created, enabled, disabled, strategy changed, archived, user added, token created, etc.
- Shows who made the change, when, and what changed.
- OSS limit: UI shows recent events (limited history). No filtering, export, or compliance-grade retention policies.
Extended Audit Log (Compliance-Grade)
Enterprise audit logs are designed for compliance. Immutable, long-term, searchable, and exportable. Required for SOC2, ISO 27001, HIPAA, SOX audits.
- Long retention: Full history (not just recent), configurable retention period.
- Advanced filtering: Filter by user, event type, project, flag, date range.
- Export: Download audit logs as CSV/JSON for external compliance reporting.
- Tamper-evident: Logs cannot be deleted or modified by admin users.
- Change Request audit: Full trail of approval workflow — who submitted, who reviewed, who approved, when applied.
Subscribe to all Unleash events via Webhook → push to an external append-only logging system (AWS CloudTrail, ELK, Splunk, CloudWatch Logs). Set log retention to 1 year. Query externally. This is fully functional for compliance with some engineering effort (~1 day to set up).
20. Feature Naming Patterns
Enforced Naming Conventions
Define regex patterns that flag names must match. When a developer creates a new flag, Unleash validates the name against the pattern and rejects names that don't conform.
- Example patterns:
[team]-[jira-ticket]-[description]→ e.g.,payments-PAY-1234-new-stripe-checkout(feat|exp|kill|ops|perm)\.[a-z-]+→ enforces type prefix- Pattern is set per project — different teams can have different conventions.
- Shows a hint in the UI explaining the expected format when the user is creating a flag.
Build a webhook: on feature-created event, validate the flag name via regex. If invalid, call Admin API to immediately archive/delete the flag and post a Slack message explaining the naming convention. Works but the UX is poor (flag is created then deleted).
Final Decision Guide — For OSS Users
If your team has 2–5 people
The OSS feature set is sufficient. You probably do not need Change Requests yet — trust and communication handle governance at this scale.
- Use 2 environments (dev + prod). Run a separate Unleash instance for staging if needed.
- Use OIDC for SSO (OSS covers this).
- Build first: Webhook → Slack audit notification for production flag changes.
If your team has 5–20 people
You are hitting OSS limits. Prioritize in order:
- 1️⃣ Extra environments — Run a 2nd Unleash OSS instance as "staging" server. Simple but operational overhead.
- 2️⃣ Change Request workaround — Webhook + Slack approval bot for production changes.
- 3️⃣ Audit log pipeline — Webhook → CloudWatch/ELK. Set it up now, before you need it.
- 4️⃣ Feature dependencies — Implement in application code with documented conventions.
If your team has 20+ people OR has compliance needs
Strongly consider upgrading to Enterprise or Unleash Cloud Pro. The features you need are expensive to replicate:
- Change Requests — A week of engineering to build a proper approval bot with enforcement. Enterprise has this built-in, audit-grade.
- Multiple environments — Running 3+ separate Unleash servers multiplies your operational overhead. Not worth it.
- Advanced RBAC — Cannot be replicated in OSS. Project-level role isolation requires Enterprise.
- SCIM — Security requirement for organizations with rapid team changes.
Flag types ✓ · Strategies ✓ · Variants ✓ · Constraints ✓ · 2 environments ✓ · Basic RBAC ✓ · OIDC SSO ✓ · Webhooks ✓ · Playground ✓ · Basic metrics ✓ · Basic audit log ✓
Enterprise adds: Change Requests · Unlimited environments · Custom RBAC · Project roles · Feature Dependencies · Global segments · SAML · SCIM · Signals & Actions · Network View · Lifecycle · Insights · Naming patterns · Service accounts · Jira/ServiceNow