Open WebUI upgrade past v0.6.5: why the license changes the plan
If your team runs Open WebUI v0.6.5 or earlier and wants the newer releases, the license is now part of the upgrade decision, not an afterthought. Upgrading past v0.6.5 moves the code under the Open WebUI License. Code through v0.6.5 remains BSD-3-Clause, but from v0.6.6 onward the Open WebUI License applies, and it adds a branding protection clause. That clause forbids altering or removing Open WebUI branding in any deployment that exceeds 50 users in a rolling 30-day period, unless the operator holds an enterprise license or written contributor permission. The 50-user threshold is counted over any rolling 30 days, so a pilot that grows during a rollout can cross it without anyone noticing.
Before choosing a target, have legal or procurement read the Open WebUI License text directly and record which users count toward the threshold, including contractors, service accounts and users reached through shared or API access. Then decide one of three paths: stay on v0.6.5 and accept that you will not receive later features or fixes, keep branding unchanged and stay within the limit, or plan for an enterprise license. Open WebUI describes enterprise licenses as allowing white-labeling and custom branding with dedicated support options. Pricing is not published, so ask enterprise sales for a quote based on your expected seat count, and confirm in writing what the license covers and for how long.
The supported path is incremental. Do not jump straight from an old release to the newest one. Move through tested versions in order, pin the exact target tag in your deployment manifests, and rehearse each step against a copy of production data. Database migrations run when the new version starts, so take a verified backup before each step and confirm that a restore works. Note that the latest release cited for this topic is v0.12.3, published on the project's GitHub releases page on October 16, 2026, following v0.12.0 on October 10 and v0.11.0 in July. Confirm the current release list yourself before you plan, since newer tags may exist when you read this.
Release notes for every intermediate version must be reviewed before you choose a path. Look for breaking configuration changes, removed environment variables, changed authentication behavior, database schema changes and any dependency on a vector database or Redis version. Record which versions you tested, which migrations ran, and which issues you found, so the upgrade has an evidence trail for your change board and for any later audit of your change management.
Plan the upgrade as one project with three owners: the platform team for the deployment and backups, the security team for authentication and access settings after each step, and the business owner for the user count and branding decision. Ask any implementation partner to quote against a written list of target versions, test environments and rollback steps, so the scope and the license position are settled before work starts.
What changes between v0.6.5 and later Open WebUI releases
This table compares what changed at the v0.6.6 license boundary with what stays the same for code through v0.6.5, and what each change means for an upgrade. Read the license and branding rows first to decide whether an enterprise license is needed, then check the database and Redis rows to see whether your architecture can run more than one replica. The main takeaway is that licensing and infrastructure both need sign-off before you move past v0.6.5.
| Change | Impact | Action needed |
|---|---|---|
| License change at v0.6.6 | From April 19, 2025, Open WebUI code is distributed under the Open WebUI License, which adds a branding protection clause. | Have legal counsel review the Open WebUI License text before upgrading past v0.6.5. |
| Code through v0.6.5 | Remains under BSD-3-Clause, so builds you already run keep those terms. | Record the exact version in production and confirm the license that applies to each build you hold. |
| Branding protection clause | In deployments above 50 users in any rolling 30-day period, branding cannot be altered or removed without an enterprise license or written contributor permission. | Count active users over rolling 30-day windows and decide on branding before the upgrade goes live. |
| Enterprise license option | Allows white-labeling, custom branding and dedicated support. Pricing is not published and is quoted from an expected seat count. | Contact Open WebUI enterprise sales with your expected seat count and request the license terms in writing. |
| Database for multiple replicas | PostgreSQL is required for multi-instance deployments because SQLite handles concurrent writes from multiple processes poorly. | Plan a PostgreSQL migration and rehearse it on a copy of your data before the version change. |
| Redis and shared storage | Redis holds sessions, websocket connections and application state. Shared file storage keeps uploads and knowledge reachable from every replica. | Provision Redis and shared storage, then confirm in staging that sign-out revokes tokens. |
| Vector database for multiple workers | The default ChromaDB can crash in multi-process setups, so an external vector database is required for several workers or replicas. | Select an external vector database and test retrieval under concurrent load before go-live. |
| Breaking changes and deprecations | These vary by release, and this page does not list them for each version. | Read the GitHub release notes for every version between your current release and your target version. |
When the 50-user branding clause applies to your deployment
The branding clause matters only if you upgrade to v0.6.6 or later. Since v0.6.6, released on April 19, 2025, Open WebUI code is distributed under the Open WebUI License, which forbids altering or removing Open WebUI branding in deployments that exceed 50 users in any rolling 30-day period. Unless you hold an enterprise license or written contributor permission, that restriction applies to you once you cross the threshold. Code through v0.6.5 remains under BSD-3-Clause, so the upgrade is the point where this clause enters your deployment. Confirm the current license text with your legal team before you schedule the upgrade, because the test depends on the wording of the license, not on how the interface looks.
A rolling 30-day window means any 30 consecutive days, not a calendar month, so you need a daily count that looks back a full month at every point. Start by confirming how the license docs define a user. Ask whether accounts that exist but have never signed in count, whether service accounts and API key users count, and whether SCIM-provisioned accounts that are deactivated still count during the window. Then pull the same measure from your identity provider and from Open WebUI's own records for the trailing 30 days, and record the peak. Growth can cross the threshold without anyone noticing, so schedule a recurring check and keep the results with your change records.
Before you upgrade, make one of three decisions for each deployment. You can keep the Open WebUI branding unchanged, which avoids the clause entirely. You can request written contributor permission, but confirm with the project who grants it, what it covers and whether it lasts through future releases. Or you can buy an enterprise license. Because the upgrade changes the terms you run under, record the decision in the change request before the upgrade window opens. If the decision is to stay on v0.6.5 for now, document that as a deliberate choice with a review date, not as a default.
Enterprise licenses allow white-labeling and custom branding, and they include dedicated support options. Pricing is not published. You request a quote by contacting Open WebUI enterprise sales with an expected seat count, so state the number you can defend from the peak rolling 30-day count, not total headcount. Ask the vendor what the license covers, how seats are measured and billed, the term and renewal conditions, which support levels are included, and whether the license applies to future upgrades. Those answers determine whether the cost is one-time or recurring, and they belong in the written scope your team approves before the upgrade begins.
Backups and inventory to complete before the upgrade starts
These four items decide whether the upgrade can be rolled back and whether it changes who can sign in or what they can see. Each one needs a named owner and a written sign-off before the image or package is changed. They connect because the database, files, vector index and identity settings must all match the same point in time.
Full database backup
Take a full backup of the Open WebUI database before any image or package changes. If the deployment uses PostgreSQL, capture a backup and record its checksum. If it runs on SQLite, stop the service and copy the database file from its locally attached SSD or NVMe volume. Restore the backup to a scratch host and confirm that chats, users and settings load. Signed off by the database owner and the platform lead.
Shared files and vector data
Snapshot the shared file storage that holds uploads and knowledge documents, because every replica must reach the same files. Identify the external vector database in use. The scaling guide warns that the default ChromaDB will crash in multi-process setups, so confirm that indexes are backed up or can be rebuilt from source documents. Record storage paths, bucket names and retention settings. Signed off by the storage owner and the application owner.
Configuration, SSO, SCIM and branding
Export a written inventory of environment variables, configuration settings, OIDC or LDAP SSO settings, SCIM 2.0 provisioning and group mappings, RBAC groups and MFA policy. Record Redis and session settings, since sign-out revocation depends on Redis in multi-replica deployments. Document any logo, name or interface changes, and count peak users in any rolling 30-day period to confirm whether the branding clause applies. Signed off by the identity lead and the license owner.
Test environment from production copy
Build a test environment from a recent copy of production data, using the same database engine, Redis and shared storage layout. Pin the target version, run the database migrations, then check sign-in, SCIM sync, group permissions, retrieval against the vector store and branding. Mask personal data wherever the copy leaves the production boundary. Signed off by the application owner after reviewing the test results, and by the data protection lead for the data copy.
How PostgreSQL, Redis and shared storage change the upgrade
Moving past v0.6.5 is also a moment to decide where Open WebUI keeps its state. The scaling guide requires PostgreSQL instead of SQLite for multi-instance deployments, because SQLite does not handle concurrent writes from multiple processes well. If your current installation uses the default SQLite file and you plan to run more than one replica or worker, the database move is a prerequisite, not an optimization. Plan the data migration from SQLite to PostgreSQL as its own step with a rehearsal against a copy of production data, and confirm with your database team who will own backups, failover and connection limits for the new instance.
Multiple replicas also need Redis as a shared state store for sessions, websocket connections and application state. Shared file storage is required as well, so uploads and knowledge documents stay reachable from every replica. Ask your platform team which storage option they will provide for that shared path, and confirm how it behaves under concurrent reads and writes before you point Open WebUI at it. Network file systems vary widely in locking and latency, so test uploads and knowledge ingestion from two replicas at once instead of assuming the volume works because a single replica does.
The default ChromaDB will crash in multi-process setups, according to the scaling guide, so an external vector database is required when you run several workers or replicas. Open WebUI's retrieval features support a range of vector databases, and the choice should be made before the upgrade so that the knowledge base can be re-indexed once. Confirm the engine you select with your knowledge owners, and plan how existing collections will be rebuilt, since embeddings are tied to the vector store that produced them.
Redis has a security consequence that is easy to miss. Without Redis, signing out of Open WebUI does not revoke tokens, which stay valid until they expire, by default after 4 weeks according to the scaling guide. For a company deployment with SSO, a departing employee's session could remain usable for that window after sign-out. Treat Redis as part of your access control design, and test sign-out and session revocation on every replica before go-live.
SQLite is still acceptable in narrower cases. The scaling guide allows it for single-replica deployments, evaluation and small teams, but only when the database file sits on locally attached SSD or NVMe storage rather than network storage. If you keep SQLite for a small internal team after the upgrade, document that decision, confirm the disk type with your infrastructure group, and record when you will revisit it if user numbers or replica counts grow.
Open WebUI upgrade sequence with checks and rollback points
This sequence moves a running Open WebUI instance from v0.6.5 or earlier to a later release with a check and a rollback point at every stage. Confirm your install method and database engine before you start, because the restore path depends on them.
Freeze and record the current version
Stop scheduled changes to the instance and record the exact running version, the install method (Docker, Helm or pip), the image or package source, the database engine, and the settings for the vector database and identity provider. The platform owner signs off on the freeze, and the record is stored with the change ticket. The step is done when someone outside the upgrade team can read the record and confirm the current release from it. If the instance is on v0.6.5 or earlier, note that those releases are BSD-3-Clause, and confirm with your legal team which license terms apply to the target release before you proceed.
Back up the database and file storage
Take a consistent backup of the database and the shared file storage that holds uploads and knowledge collections. Copy the environment configuration and secret references separately, and store everything outside the upgrade host. For PostgreSQL, confirm that the dump or snapshot restores into a scratch database. The check is a test restore that opens the user list and a known knowledge collection. Record the backup identifier in the change record, because it is the restore point for every later step.
Stage the target release in a test environment
Build a staging copy from the production backup, using the same install method and database engine as production. Point the identity provider, vector database and model connections at test endpoints, then install the target release in staging only. Check that the instance starts, that the logs show no startup errors, and that the version shown in the admin panel matches the release you planned. Staging is disposable, so if anything goes wrong you can rebuild it from the backup without affecting users.
Pin the image, chart or package version
Replace floating references such as latest with an exact Docker image tag, Helm chart version or pip package version, and commit the pin to your deployment repository. Record where the artifact came from, whether a public registry or an internal mirror. Keep the previous pin in version control so that reverting is a single change. The check is a fresh deployment from the repository that reproduces the same release with no manual edits. Confirm the pinned value against the running version in staging.
Run and verify the database migration in staging
Run the migration that the target release applies to the staging database, and save the full output, including any warnings or skipped statements. Confirm the schema version reported after the migration and that the application starts cleanly. Check the release notes and project documentation to see whether the migration can be reversed, because many schema changes cannot be undone by rolling back the application alone. Rehearse the restore path: stop the new release, redeploy the pinned previous version, and restore the database from the step 2 backup. The step is done when the migration completes without errors and the rehearsal returns a working instance on the previous release.
Verify SSO, RBAC, API keys and MFA
Test each access path with accounts for every role in use. Sign in through the configured OIDC or LDAP provider, confirm that group membership maps to the expected role and per-resource permissions, and confirm that SCIM-provisioned users and groups still appear. Check that an existing API key authenticates, and that MFA enrolment and sign-in still work. Sign out and confirm the session ends. In multi-replica deployments, confirm that Redis is reachable, because without it sign-out does not revoke tokens. Write down a pass or fail result for each path, and treat any failure as a block on promotion.
Check retrieval and vector database connections
Confirm that the staged instance connects to the same external vector database that production uses. The scaling guide warns that the default ChromaDB crashes in multi-process setups, so confirm that every worker or replica uses the external store. Verify a test knowledge collection, then run a query with the hybrid search and reranking settings you use in production. Confirm that the embedding model matches the one used to build the existing index. The check passes when a known question returns the expected source documents. Leave the production index untouched until the release is accepted.
Promote to production during an agreed window
Agree the change window, the people who can approve a rollback, and the conditions for stopping the change, in writing before the window opens. Take a new backup immediately before the migration, then deploy the pinned release to production and run the checks from the access and retrieval steps with test accounts. If any check fails, stop, redeploy the recorded previous pin, and restore the database from the pre-migration backup. The step is done when the release, check results and rollback record are filed with the change ticket.
How to test database migrations and roll back a failed upgrade
Test the upgrade on a copy of production data before you touch production. Open WebUI runs its database migrations when the new image starts, so the schema change happens against your actual users, groups, chats, knowledge base records and model settings, not against a fresh install. Restore a recent backup of your production PostgreSQL database (or the SQLite file, if you run a single-replica evaluation or small-team deployment on locally attached SSD or NVMe storage) into a separate environment. Pair it with a copy of the file storage and the vector database that your knowledge bases use, so retrieval is tested against matching data. Start the target image against that copy, record how long the migration takes and whether it completes, and keep the logs. Repeat the test at least once with a second, fresh copy so you know the result is repeatable.
Once the migration completes, verify the functions your users and administrators depend on. Sign in through each login path you run: local accounts, OIDC or LDAP single sign-on, and authenticator-app MFA where it is enabled. Check that group membership and per-resource permissions still map to the same access, especially for groups provisioned through SCIM 2.0. Run searches against each knowledge base and confirm the results are relevant, since retrieval depends on the vector database and reranking settings. Open a chat against every model connection you use, whether Ollama, OpenAI, Anthropic or an OpenAI-compatible provider, and send a short test prompt to each. Finally, confirm each scheduled job that your version runs, such as cleanup or sync tasks, executes once and produces the expected result. Write these checks down as a sign-off list before the test begins.
When a production upgrade fails, the first decision is whether to roll back the image or restore the database. If the migration did not finish, or the old image cannot start against the new schema, an image rollback alone will not recover the service, and you need the database backup taken before the upgrade. If the migration finished and the old image starts, you may be able to keep the new data and run the previous version, but only if you confirm that the older release reads the new schema. The decision also depends on writes. Any chats, uploads, permission changes or knowledge base edits made after the upgrade may be lost on restore, so record the time of the upgrade and the time of the failure, and tell users which window of changes could be affected. Back up the database, file storage and vector store together, so a restore brings back a consistent set.
Before you plan a rollback, confirm the supported downgrade behavior for your target version with the Open WebUI project. Migrations are not always reversible, and the project's documentation or release notes for your version should state whether a downgrade is supported and which schema changes block it. Check the GitHub releases page for the versions you are moving between, and ask the project or your enterprise support contact directly if the notes are unclear. Also confirm which license terms apply to each release you pin, since the move past v0.6.5 changes the branding clause and the user threshold. Keep the previous image digest and the pre-upgrade backup until the new version has run in production for a period your change board accepts. A DeployOpen scope for this work would normally cover the test environment, the test plan, the rollback runbook and the restore drill, and the quote should list who runs each step and who reviews the results.
What makes an Open WebUI upgrade take longer
This table lists the deployment factors that most change the effort of moving Open WebUI past v0.6.5 and into the license change. Read each row against your current setup to see which items add testing, migration or licensing steps, and confirm the answers before you set a schedule.
| Driver | Effect on the upgrade | What to confirm |
|---|---|---|
| Replicas, Redis and PostgreSQL | Multi-replica deployments need Redis for shared sessions, websocket connections and application state, along with PostgreSQL. If either is missing, it must be built and tested during the upgrade window. | Whether Redis and PostgreSQL already run, are backed up and are monitored, and whether every replica can reach shared file storage. |
| SQLite to PostgreSQL migration | Moving from SQLite to PostgreSQL adds a data migration step with its own validation and rollback plan for users, chats and settings. | Which database engine is in use today, how large the data set is, and whether a restore point has been tested. |
| Vector database choice | The default ChromaDB is not suited to multi-process or multi-replica setups. Moving to an external store such as PGVector, Qdrant, Milvus or Elasticsearch can require reindexing of existing knowledge. | Which vector store is in use, whether knowledge collections must be rebuilt, and whether your team already operates the target store. |
| Volume of uploads and knowledge | Large file stores and knowledge bases lengthen backup, copy to shared storage, reindexing and post-upgrade checks. | Total size of uploads and knowledge collections, and how long a full backup and restore takes in your environment. |
| SSO and SCIM integrations | Identity settings must be retested against the target release, including group mapping and provisioning, since changes there can alter who has access after the upgrade. | Which of OIDC, LDAP and SCIM 2.0 are in use, and whether group and role mappings are documented. |
| Custom branding and license decision | From v0.6.6 onward, altering or removing branding in deployments above 50 users in a rolling 30-day period requires an enterprise license or written contributor permission. The decision adds review steps before go-live. | Active user count in any rolling 30-day period, whether branding is changed, and who approves the license decision and any written permission. |
| Intermediate versions | Each release between your current and target version may carry its own database migrations and configuration changes, so the path has more checkpoints to test. | Current version, target version, and the release notes for every version in between. |
| Model providers and tool servers | Each connected provider and tool server needs a compatibility check, and their settings can change across releases. | Inventory of connected providers such as Ollama, OpenAI, Anthropic or OpenAI-compatible endpoints, the tool servers in use, and the owner of each. |
What buyers ask before hiring outside help for an upgrade
Can our own team upgrade Open WebUI past v0.6.5 without outside help?
Yes, if your team already runs the platform and can test and roll back. The version change is the smaller part of the work. The risk sits around it: pinning the current version, taking and testing backups, reviewing database migrations on a copy of production data, and deciding how the branding clause applies to your user count. Teams that already run Docker, Helm or pip installs in production often handle the version change internally. Outside help makes more sense when the deployment uses multiple replicas, a move from SQLite to PostgreSQL, Redis, SSO and SCIM, or when nobody has time to own the test cycle. Check your skills against your install method and the upgrade notes for every release between your current version and the target.
What drives the cost of an Open WebUI upgrade engagement?
The size and shape of your deployment, and how much of it must be verified, drive the cost most. Relevant factors include the install method, the number of replicas and workers, whether the database moves to PostgreSQL, the presence of Redis and shared file storage, your external vector database, SSO and provisioning integrations, custom connections, the number of environments to test, and how many releases lie between your current version and the target. Most engagements are fixed-scope: scope, deliverables and timelines are agreed in writing before work starts, and a quote follows from that written scope. Ask the quote to separate the one-time upgrade and testing work from any recurring support you choose.
What do we need to provide before an Open WebUI upgrade starts?
The work needs access, a staging environment, a backup window and three decisions. Access means accounts for the hosts, container platform or Kubernetes cluster, database, file storage and identity provider, along with your change approval path. The staging environment should mirror production, including the same database engine and storage layout. The backup window is an agreed time to take and verify full backups of the database and uploaded files, with a documented rollback plan. The decisions are whether your deployment exceeds 50 users in any rolling 30-day period, which branding option you will keep, and who approves scope, cutover and sign-off by name.
How long does an Open WebUI upgrade take?
Duration depends on the drivers described in the cost question, and no reliable figure exists without a reviewed environment and a written scope. A single-instance deployment with clean backups and no custom integrations moves faster than a multi-replica setup that needs a database migration, Redis, shared storage and SSO testing. Your change windows and approval cycles also set the pace. Ask for a schedule in the written scope that lists each phase, the dependencies on your team, and the approval points before the next phase starts. Treat any timeline offered before the environment has been reviewed as provisional.
Do we need an Open WebUI enterprise license after v0.6.6?
Not always. From v0.6.6 onward, the Open WebUI License forbids altering or removing branding in deployments above 50 users in any rolling 30-day period, unless you hold an enterprise license or written contributor permission. Below that threshold, or if you keep the branding intact, the clause does not require an enterprise license. If you exceed the threshold and want to white-label or customize branding, an enterprise license is the route Open WebUI describes. Open WebUI's enterprise sales team quotes it after you give an expected seat count. DeployOpen does not issue or price these licenses, and its quote covers the upgrade work only. Confirm your position with your legal counsel.
Does DeployOpen offer ongoing support for Open WebUI after an upgrade?
Yes. DeployOpen offers ongoing support, upgrades and continuous testing as retainers. A retainer covers work after the upgrade project closes, such as planning and testing later releases, checking database migrations and maintaining the environment. Whether it fits depends on how often you plan to upgrade, how many environments you run and how much work your team can absorb. The retainer's scope, responsibilities and recurring fees are set in writing and quoted separately from the one-time upgrade. Compare the retainer with the internal effort needed to cover the same tasks, including on-call coverage for failed rollouts.
What breaks most often during an Open WebUI upgrade?
Four problems come up most often. Database migrations run without a tested rollback, so a failed step leaves the data in an unclear state. Without Redis, signing out does not revoke tokens, which stay valid until they expire, by default after 4 weeks. Multi-replica setups fail when uploads or knowledge are not on shared storage, and the default ChromaDB crashes when several workers run. SQLite on network storage causes trouble under concurrent use. Before cutover, run migrations on a restored copy, verify every replica after rollout, confirm token behavior, test SSO and provisioning, and check the vector database and file storage paths against your scaling design.
How DeployOpen scopes, delivers and supports an Open WebUI upgrade
DeployOpen starts an Open WebUI upgrade with a written scope that names the release path, the user count and the database and vector store in use. Work runs in your own infrastructure, with versions pinned and migrations rehearsed before any production change. The license question is decided with your team and documented so the branding clause and any enterprise license decision are on record.
How we scope
- The written scope names your current version, target release and whether you exceed 50 users in any rolling 30-day period.
- It records the license position for each deployment, including the branding clause and whether an enterprise license is needed.
- Engagements are fixed-scope, with deliverables and timelines agreed in writing before any upgrade work starts.
How we build
- Build a staging copy of your database, identity setup and vector store, then run the target release against it first.
- Pin image tags or package versions, and rehearse the database migrations from your current release to the target release.
- Test sign-in through your SSO provider, role and group access, model connections, and uploaded knowledge before cutover.
How we hand over
- A runbook records the pinned versions, the migration order, rollback steps and the license decision with its supporting evidence.
- Your team walks through a rollback rehearsal and receives configuration documentation for every component the upgrade touched.
- Handover covers who approves future version pins, so later releases are reviewed before they reach production.
How we support
- Ongoing support, upgrades and testing can run as a retainer after the upgrade, covering later Open WebUI releases.
- Retainer work can include reviewing each new release against the license terms and planning its migration window.
- Enterprise license pricing is unpublished, so request a quote from Open WebUI sales using your expected seat count.

