From Feature Flagging to Feature Management: Migrating from GitLab to Unleash
If GitLab feature flags look suspiciously similar to what you are seeing in Unleash, feel free to pause and read What is the difference between GitLab and Unleash feature flags for the full explanation and history behind that.
We have to start with a genuine key difference in naming worth highlighting before we talk about mechanics: GitLab’s feature flags are a tactical feature flagging tool. Unleash is a strategic step into feature management discipline and practices.
A tactical tool is just one capability inside a DevOps platform, there to help you decouple deploy from release. That’s a real and useful job, it’s been a great on-ramp for a lot of engineers, many of whom were running on Unleash under the hood without knowing it.
Yet, it leaves opportunities on the table, as it is shallow in its business and technical impacts. Moving to Unleash isn’t swapping one flag store for a bigger one. It’s a strategic decision to deeply evolve your software development and delivery practices. Feature management is about safely building the right thing, exposed to the right users, at the right time. It is about regaining runtime control of your software, as a practice backed by a mature platform. In our language: it’s about elevating your DevOps into FeatureOps.
The good news: this particular crossing is unusually short, because GitLab’s feature flags are built on Unleash. GitLab runs a custom backend that is compatible with Unleash clients, and your app already talks to it using standard Unleash SDKs. So this isn’t a rip-and-replace. It’s more like upgrading the engine your car was already using and gaining a whole dashboard you didn’t have before.
Let’s walk through what carries over untouched, what genuinely changes, and what you step into on the other side.
What stays the same
The Unleash SDKs. You’re already using Unleash client libraries – like unleash-client-go, the Ruby gem, the Python client, the Node clients. Those same SDK families connect to Unleash. The evaluation model you rely on today: fetch flag definitions on an interval, cache them in memory, evaluate isEnabled() locally with no per-request network call and graceful fallback to cached rules. That’s the exact Unleash SDK model. It doesn’t change when you move off GitLab. It’s native to where you’re going.
The core concepts. A flag is still a flag. A gradual rollout is still a gradual rollout with the same stickiness idea (consistent behavior per user or session). Targeting a list of users is still targeting a list of users. Environments still scope behavior. You are not relearning feature flags. You’re getting more surface area under concepts you already understand and new valuable ideas to use along the way.
Local, privacy-friendly evaluation. As with GitLab, feature flag evaluations happen locally inside your application via the SDK, so no end-user data has to leave your environment to make a decision. And if you need special hardening, you can have it by adding Enterprise Edge.
What changes (for the better)
The GitLab implementation modeled an early generation of Unleash. Unleash open source has since shipped 8.0, several years and a couple of major versions further on. Migrating means three practical shifts:
- The connection details change. Today you point the SDKs at https://gitlab.com/api/v4/feature_flags/unleash/<project-id> with a GitLab instance ID. After migrating, you point it at your Unleash instance URL with an Unleash API token. That’s a configuration change (URL and credentials) and not a code rewrite. In most codebases it’s a handful of lines in your client initialization, or just switching configuration values.
- The strategy model gets richer. GitLab gives you the classic strategies: default, flexibleRollout, gradualRolloutUserId, and userWithId. Unleash keeps those working in a backward-compatible way, while adding much more flexibility. You can add advanced targeting constraints (target on any attribute you define via custom context fields: geography, plan, tenant, arbitrary telemetry, etc.), reusable segments (define a user group once, apply it across every project), and variants for true A/B/n testing with weighted payloads (plain-text, JSON, or CSV). Your existing flags map over cleanly, and the new capabilities are additive.
- SDK and proxy versions. Because GitLab implements an older Unleash protocol generation, their docs pin you to the SDKs and Proxy with specific configurations. During the migration, you can keep those versions, as our server is backward-compatible. But once you’re on Unleash, that constraint disappears – and to fully benefit new features, we would recommend upgrading to the current SDK and Enterprise Edge versions. Even without the need for new features, it is worth auditing your pinned versions as part of the move. It will be a relief, not a chore – especially from the security perspective.
What you step into
In the previous post in that series, we have listed a number of new features that may alone be reason to make the trip. But the strategic impact of moving to Unleash is more than just a list of functionalities.
In GitLab, a flag is a switch you flip as one step in a pipeline. In Unleash, feature management becomes a practice the platform actively supports, helping you control how software behaves in production. Guided by real signals, with governance and technical debt management built in.
That strategic shift is called FeatureOps and it builds on the solid foundations of DevOps culture and practices. DevOps is about moving your code fast and safely to production, but it stops right after deployment. It won’t save you when stuff breaks or misbehaves at runtime.
FeatureOps addresses that gap. It is the discipline of combining feature flags and engineering practices to make every release controlled, measurable, and reversible at runtime. DevOps got your code to production, FeatureOps keeps you in control once it is there.
On top of that, if you have ever needed an insight about your feature’s lifecycle, need a capability to execute very surgical exposure or experiment based on the runtime-level values (think application, tenants, or end-user-level attributes), were tired of hand-cranking releases every single time, missed governance, or you felt limited by the fact you can target your users just by their userId, you are in the right place. Those are solved problems with Unleash.
Three ways to land
GitLab’s implementation is based on a shared open-source heritage, so you are more than welcome to keep the open-source path if you want it.
Self-hosted Unleash
Self-host it. You own the deployment; evaluations stay entirely within your infrastructure. If “we control it, we can read every line” is what drew you to GitLab’s flags in the first place, this preserves exactly that instinct. One licensing note worth having up front: as of 8.0, the Unleash server source moved from Apache 2.0 to AGPLv3.
In practice this changes nothing for the overwhelming majority of users, as running the pre-built Docker image is unaffected (the official images stay Apache 2.0), and the SDKs your application uses keep their permissive licenses, so your own code is untouched. AGPLv3 only comes into play if you modify the Unleash source and redistribute it over a network as a competing SaaS, in which case you’d share your changes under the same license or talk to us about a commercial one. Self-hosting Unleash to run your own flags is exactly the use case this license is honoring without any additional consequences.
Cloud-hosted Unleash Enterprise
If you’d rather not run the control plane yourself, the managed Enterprise offering gets you started without provisioning anything, and scales with you. Same platform, more features, someone else’s on-call rotation.
Self-hosted Unleash Enterprise
If any of the enterprise features looks interesting, or you are considering a migration due to compliance, privacy, or governance related reasons, consider self-hosting Unleash Enterprise. We are happy to help you plan the transition (talk to us).
Either way, you’re not locked in. The foundation is open and the migration path runs both directions.
Let AI do the boring part
Any 2026 blog post wouldn’t be complete without an AI twist. Bear with me for a minute, as we have something useful here. Any such migration is mostly mechanical: updating client initialization, remapping strategies, and adjusting flag references across the codebase. It doesn’t sound like much, but it’s honest work. Although it can be error-prone and hard to get started. Luckily, with the proper guidance and context – that’s exactly the kind of well-scoped, repetitive work AI coding assistants are good at.
First things first, Unleash provides an MCP server (hosted locally or remotely) that plugs your AI assistant straight into the feature management platform. Then a well-executed migration also needs guidance – and we have your back here as well. We have created an AI agent skill for Claude Code to help you assess, plan, and then migrate – including the actual flag migration (via import/export API, direct API calls, or Unleash MCP tools). This skill allows you to run a steered, deliberate migration during which you can clean up stale flags and remove technical debt. With such help, the actual migration stops feeling like a project and starts feeling like a manageable task.
Then, migration is just the first step – as later, your AI agent of choice can help you implement FeatureOps practices into your default workflows. The MCP server helps AI agents create flags with correct naming and metadata, wrap code in framework-specific runtime controls, detect duplication during flag creation, and clean up code from flags that are ready to be removed.
This makes following your governance policies the happy path, rather than relying on manual discipline and best intent. It’s exactly the same pattern we talk about for autonomous feature management: the AI does the mechanical work while respecting your guardrails.
Come talk to us
The reason this migration is a short trip is the same reason GitLab’s flags existed in the first place: it’s all built on open Unleash foundations. Your SDKs carry over, your concepts carry over, your instincts and knowledge carry over. What changes isn’t the plumbing, but the ambition. You stop treating feature flags as a tactical step in your deployment process and start treating feature management as a built-in capability.
If you’re running GitLab feature flags at scale – bumping into rate limits, wanting safeguards, needing audit trails an auditor will accept, or just tired of hand-driving every rollout – we would genuinely like to help you make the move.
We have helped teams migrate off homegrown and first-generation systems plenty of times, and the GitLab-to-Unleash path is one of the smoother ones precisely because of the shared heritage. Reach out, bring your flag list, and we’ll help you make the move!
If you are new here, start with the backstory: What is the difference between GitLab and Unleash feature flags?
