Open WebUI single instance vs scaled deployment

A single Open WebUI container on SQLite suits small teams and evaluation, while multiple replicas need PostgreSQL, Redis, a shared secret key, shared file storage and a client-server vector database.

On this page

When one Open WebUI instance is enough and when to scale

One Open WebUI container on SQLite is enough for a single replica serving personal use, evaluation, a home lab or a small team, provided the database file sits on a local SSD or NVMe drive. Move to a multi-replica deployment once you need more than one instance, which the Open WebUI scaling guide ties to PostgreSQL, because SQLite does not handle concurrent writes from multiple processes well. The deciding inputs are your user count, the availability target you have agreed with the business, and how much chat history and knowledge data you expect to hold, so confirm all three before choosing a path.

The guide is explicit that Open WebUI does not migrate data between databases, so the switch to PostgreSQL should be planned before production data exists. Set DATABASE_URL to a PostgreSQL connection string from day one if there is any chance the instance will serve more than a handful of people or a second replica. If you already run SQLite with real conversations, budget time for a migration project rather than assuming a configuration change will carry the data over. Ask your platform team who will own the PostgreSQL service, its backups and its major version upgrades, since those become recurring work once the database is shared.

Scaling is not only a database decision. Replicas need Redis through REDIS_URL, with WEBSOCKET_MANAGER=redis and ENABLE_WEBSOCKET_SUPPORT=true, and all replicas need the same WEBUI_SECRET_KEY. Shared file storage, such as a shared filesystem or S3, GCS or Azure Blob, keeps uploads reachable from every replica, and the default ChromaDB is unsuitable for multi-process setups. Confirm your availability target against these pieces before you commit: a single container is a single point of failure, so any outage stops chat for everyone, while a multi-replica design still depends on the shared PostgreSQL and Redis services staying up.

Single instance versus scaled deployment, factor by factor

This table compares one Open WebUI container on SQLite with a multi-replica deployment across the database, session state, secret keys, files, vector storage, upgrades and staffing. Read each row as the extra piece a scaled deployment needs, and treat a missing piece as a source of login loops, WebSocket failures or lost data.

FactorSingle instance (SQLite, local storage)Scaled deployment (multiple replicas)
DatabaseSQLite is fine for single-replica use when the database file sits on a local SSD or NVMe drive; suits personal use, evaluation, home labs and small teamsPostgreSQL set through DATABASE_URL is required, because SQLite does not handle concurrent writes from multiple processes well
Session and WebSocket stateNo shared state store is needed; sessions and connections live in the one containerRedis set through REDIS_URL, with WEBSOCKET_MANAGER=redis and ENABLE_WEBSOCKET_SUPPORT=true; without these expect WebSocket 403 errors and intermittent authentication failures
Secret key handlingOne WEBUI_SECRET_KEY for the single containerEvery replica must share the same WEBUI_SECRET_KEY, or users see login loops and 401 errors
File storageUploads stay on the local disk of the containerShared filesystem or object storage such as S3, GCS or Azure Blob so uploads and knowledge are reachable from every replica
Vector databaseDefault ChromaDB is workable for one instanceDefault ChromaDB will crash in multi-process setups; use PGVector, Milvus, Qdrant, Pinecone or ChromaDB in HTTP mode
Replica layoutOne container; using multiple workers inside it is not a scaling methodMultiple containers behind a load balancer, each with UVICORN_WORKERS=1; the scaling guide calls multiple workers in one container the weakest way to scale
Upgrade pathNo data migration needed for the database layer today, but Open WebUI does not migrate data between databases, so the switch to PostgreSQL should be planned before production data existsShared PostgreSQL, Redis and storage must be upgraded in step with the application; confirm the upgrade order with your own environment and test restores first
Operating skillsBasic container operations, local disk backups and monitoring of a single servicePostgreSQL administration (backups, replication choices, failover tooling), Redis, load balancing, shared storage and vector database operations

What each piece of a multi-replica stack does

Each piece of a multi-replica Open WebUI stack exists to remove a single point of shared state, and the first is the database. The scaling guide says SQLite does not handle concurrent writes from multiple processes well, so more than one instance needs PostgreSQL, connected through DATABASE_URL. Open WebUI does not migrate data between databases, so the switch should be planned before any production data lands in SQLite. Ask your team to decide the PostgreSQL version and hosting model (managed or self-run) first, then confirm the upgrade path that your chosen PostgreSQL version supports.

Redis holds the state that would otherwise live inside one container. The guide names it as the shared store for sessions, WebSocket connections and application state, configured through REDIS_URL, WEBSOCKET_MANAGER=redis and ENABLE_WEBSOCKET_SUPPORT=true. Without these, the guide warns of WebSocket 403 errors, configuration sync problems and intermittent authentication failures, which are hard to diagnose because they appear only under load-balanced traffic. Every replica also needs the same WEBUI_SECRET_KEY, or users will hit login loops and 401 errors as requests move between containers. Store that key in your secrets manager and confirm that every replica reads the identical value before the first test.

Uploaded files and knowledge must be reachable from every replica, so you need either a shared filesystem or object storage such as S3, GCS or Azure Blob. The same reasoning applies to the vector store: the default ChromaDB can crash in multi-process setups, so the guide points to PGVector, Milvus, Qdrant, Pinecone or ChromaDB in HTTP mode. For process layout, the guide recommends several containers behind a load balancer, each with UVICORN_WORKERS=1, and calls multiple workers inside one container the weakest way to scale. Test replica failover by stopping one container during an upload and a chat session, and confirm that both continue on another replica.

What breaks when Redis, the secret key or shared storage is missing

What happens to WebSocket connections when Open WebUI runs without Redis?

Users see WebSocket 403 errors, configuration sync breaks between replicas, and authentication can fail intermittently. The scaling guide attributes these symptoms to missing shared state: each replica keeps its own websocket connections and application state, so a request can reach a replica that does not know about the session. The fix the guide describes is to set REDIS_URL, WEBSOCKET_MANAGER=redis and ENABLE_WEBSOCKET_SUPPORT=true on every replica so they share sessions, websocket connections and application state through one Redis instance. Confirm the exact Redis topology (single node, managed service or cluster) with your platform team, since the guide describes the variables but not a sizing for Redis itself.

Why do users get login loops or 401 errors behind a load balancer?

Login loops and 401 errors usually mean the replicas do not share the same WEBUI_SECRET_KEY. Each replica signs and verifies session tokens with its own key, so a token issued by one container is rejected by another, and the browser keeps sending users back to the login page. The fix is to set an identical WEBUI_SECRET_KEY on every replica and to generate it once and store it in your secrets manager. Changing the key later invalidates existing sessions, so plan the rotation as a maintenance event. A simple test is to log in, then refresh several times: repeated redirects point to a key mismatch rather than to the identity provider.

What do users see when uploads and knowledge are stored on one replica only?

Files uploaded through one replica can be missing or unreadable on another, so chats that reference a document or a knowledge base fail for some users and succeed for others. The scaling guide says replicas need shared access to uploaded files through a shared filesystem or object storage such as S3, GCS or Azure Blob. The fix is to place the upload directory on storage that every container mounts, or to use an object store, and to confirm that knowledge base content is reachable from every replica. Ask your team to test an upload, then query it from several sessions routed to different containers before go-live.

Why does the default ChromaDB crash in a multi-process Open WebUI setup?

The default ChromaDB is not suited to multi-process use, and the scaling guide warns that it will crash when Open WebUI runs in multi-process setups. The cause is that the embedded store is opened by the application process rather than served to many workers. The fix the guide describes is to move vector storage to a client-server database: PGVector, Milvus, Qdrant, Pinecone or ChromaDB running in HTTP mode. If you already run PostgreSQL for Open WebUI, PGVector is the option with the fewest new services, though you should check its indexing and performance against your document volume before choosing it.

Can Open WebUI move from SQLite to PostgreSQL after the team has started using it?

Open WebUI does not migrate data between databases, so a switch from SQLite to PostgreSQL after production use leaves users, chats, settings and configuration behind unless you move them yourself. The scaling guide advises planning the switch before there is production data, because SQLite does not handle concurrent writes from multiple processes well and a multi-instance deployment needs PostgreSQL through DATABASE_URL. If data already exists, ask your implementation partner to scope a data migration as a separate, written task with a rehearsal, rollback plan and a verification step. Its cost and duration depend on data volume, custom configuration and how many systems reference Open WebUI, so get them in writing before work starts.

Who pays for fixing these problems, and what should a quote include?

The cost of these fixes falls on whoever builds and runs the multi-replica stack: your staff, a partner, or both. The one-time work covers the Redis, PostgreSQL, shared storage and vector database setup, secret handling, testing across replicas and the data migration if one is needed. The recurring work covers operating those services, patching them and rotating the secret key under change control. Costs rise with the number of replicas, the amount of existing data and how many integrations depend on the chat platform. Ask any quote to list each component separately, state what is tested and in which environment, and say whether backups and failover tests are included. DeployOpen does not publish prices; a fixed-scope quote follows from the written scope.

Running PostgreSQL under Open WebUI: versions, upgrades and failover

Once you move Open WebUI off SQLite, PostgreSQL becomes the database that holds users, chats and configuration for every replica, so its version and upgrade path belong in the deployment plan from day one. PostgreSQL is released under the PostgreSQL License, a permissive license similar to BSD and MIT, so the database itself adds no license obligation for an internal deployment. The support window is the operational question. Per the PostgreSQL versioning policy, version 18 is supported until November 14, 2030, 17 until November 8, 2029, 16 until November 9, 2028, 15 until November 11, 2027 and 14 until November 12, 2026. Versions 13 and earlier are unsupported. Confirm the version you choose against that policy before deployment, and write the end-of-support date into your upgrade calendar.

Minor and major upgrades follow different paths. The PostgreSQL upgrading documentation states that minor releases never change the internal storage format, so a minor update means replacing executables and restarting the server. Major upgrades need a deliberate method: a dump and restore with pg_dumpall, pg_upgrade, or logical replication. Logical replication works across major versions and can limit downtime to several seconds, which matters when Open WebUI replicas share one database and users are mid-session. Ask your DBA or managed-service provider which method they will use, rehearse it against a copy of production data, and confirm that the Open WebUI version you run supports the PostgreSQL version you are moving to.

PostgreSQL does not include automatic failover. Its high availability documentation covers hot standby servers and synchronous or asynchronous replication, but the PostgreSQL failover documentation states that the server does not detect a primary failure and notify the standby. Detection and promotion need external tooling, and that tooling is one more component to install, patch and test. Until a failover path is proven, a primary outage stops every Open WebUI replica from writing. Decide whether you need automatic or manual promotion, who is paged, and how Open WebUI reconnects after promotion, then test the sequence before users depend on it. Connection pooling with PgBouncer is a separate design choice to evaluate alongside this.

Upgrades, backups, monitoring and skills for each model

This table compares what a single Open WebUI container and a multi-replica deployment ask of your team after go-live: upgrades, backups, monitoring and skills. Read each row as a question to put to your own staff and to any implementation partner, since the effort grows with each component you add.

AreaSingle instance (SQLite)Scaled deployment (PostgreSQL, Redis, shared storage, client-server vector database)
Upgrade sequencingStop the container, pull the new image, start it. Plan a short maintenance window and take a database file copy first.Roll replicas one at a time behind the load balancer, keeping the same WEBUI_SECRET_KEY across all of them. Check the release notes for v0.12.3 (October 16, 2026) and later for any schema or configuration changes before rolling.
Backup scopeThe SQLite database file, the uploads directory and environment settings including the secret key.PostgreSQL (with point-in-time recovery if required), Redis state where it holds data you need, shared file storage or object storage, the vector database, and the secret key stored outside the containers.
Database upgradesNot a separate task, since SQLite ships with the application.Plan PostgreSQL major upgrades separately. PostgreSQL 14 is listed as supported only until November 12, 2026 (PostgreSQL versioning policy), so confirm the version in your environment before scheduling.
MonitoringContainer health, disk space on the SSD or NVMe drive holding the database, and application logs.Per-replica health and WebSocket connection errors, PostgreSQL connections and replication status, Redis availability, shared storage capacity and vector database health.
Failover ownershipRestarting one container is the recovery path.PostgreSQL does not detect a primary failure on its own, so automatic failover needs external tooling that someone must select, configure and test.
Team skillsBasic Docker operation and file backup.Container orchestration, PostgreSQL administration, Redis operation, load balancer configuration, object storage and vector database administration, plus OIDC or LDAP troubleshooting.
Cost driversMostly staff time for occasional upgrades and backups, with low infrastructure and storage cost.Staff time across more components, infrastructure for replicas and databases, storage growth, and the support scope you contract for. Ask any partner to quote each component separately.
What to request in a quoteUpgrade and backup runbook, restore test scope and handover of the secret key.Written scope covering each component, a tested restore procedure, monitoring and alerting setup, upgrade rehearsal in a non-production copy, and who holds on-call responsibility after handover.

Decision points that change the answer

Six questions decide whether one Open WebUI container is enough or whether you need a multi-replica design. Answer them with the team before choosing a database, a cache or a vector store, because several of the answers are expensive to change later.

User count and concurrency

Count named users and, more importantly, how many send chats or uploads at the same time during a busy hour. The scaling guide treats SQLite as fine for personal use, evaluation, home labs and small teams, but says more than one instance needs PostgreSQL because SQLite does not handle concurrent writes well. Ask who will use the system in a normal hour and at peak, and whether that load is steady or bursty. Small, steady use points toward a single instance; sustained concurrent writes point toward PostgreSQL and replicas.

Availability requirement

Decide whether a restart or a failed container can be tolerated for hours, or whether staff need the assistant during working hours without interruption. One container means one point of failure and a restart window for upgrades. Multiple replicas behind a load balancer only help if every replica shares state, so confirm who owns the load balancer, health checks and on-call response before you commit. Write down the outage you accept and the owner of the recovery steps.

Data volume and retention

Estimate how many chats, uploads and knowledge documents the platform will hold, and how long each must be kept. Open WebUI does not migrate data between databases, so the scaling guide advises planning the move to PostgreSQL before production data exists. If retention rules apply, confirm them with legal and compliance first, then decide the database and backup design. Moving a populated SQLite database later is a project in its own right, so settle this at the start.

Files and knowledge must survive replica loss

If uploads and knowledge bases must stay reachable when one replica fails, every replica needs shared access to the same files through a shared filesystem or object storage such as S3, GCS or Azure Blob. Local disk on one container is acceptable only when losing those files is tolerable and backups cover them. Ask who owns the storage, how it is backed up and whether the storage itself is highly available. Test a replica restart with a sample upload before go-live.

Identity integration and shared state

SSO through OIDC or LDAP and SCIM 2.0 provisioning change what replicas must agree on. Sessions, websocket connections and application state need Redis, and all replicas need the same WEBUI_SECRET_KEY, or users see login loops and 401 errors. Confirm with the identity team which provider they run, how group changes should propagate, and who rotates the secret key. Identity work often arrives late, so raise it in the first design review.

Planned vector database

The scaling guide warns that the default ChromaDB will crash in multi-process setups and recommends PGVector, Milvus, Qdrant, Pinecone or ChromaDB in HTTP mode. Decide early which store the knowledge base will use, because a client-server database adds another service to run, back up and upgrade. If the team already operates PostgreSQL, PGVector may reduce the number of new components. Confirm the expected document count and retrieval load with the team before choosing.

Moving from SQLite to a scaled setup without losing data

This sequence moves an Open WebUI installation from one SQLite-backed container to a multi-replica deployment while the database is still empty or disposable, so no production data has to be migrated. The scaling guide does not move data between databases, so the order of these steps is what protects the data.

  1. Fix the target topology before any production data

    Decide how many replicas you need, where they will run, which load balancer will front them and which storage backends will hold the database, uploads and vectors. Write this down as a short architecture note that the platform and security teams sign off on. The scaling guide advises planning the PostgreSQL switch before production data exists because Open WebUI does not migrate data between databases. You know this step is done when the topology note names every backing service and an owner for each.

  2. Provision PostgreSQL and point DATABASE_URL at it

    Stand up a PostgreSQL instance inside your infrastructure, choose a supported major version from the PostgreSQL versioning policy, and set DATABASE_URL in the Open WebUI environment to point at it. Confirm the database is reachable from every container host and that backups run from the start. Start a fresh instance with no user accounts or chats so nothing needs to be carried over. You know this step is done when a test container starts against PostgreSQL and creates its tables without touching the old SQLite file.

  3. Add Redis and WebSocket settings

    Provision Redis and set REDIS_URL, WEBSOCKET_MANAGER=redis and ENABLE_WEBSOCKET_SUPPORT=true on every replica. Redis holds sessions, WebSocket connection state and shared application state, so each replica sees the same picture. Without these settings the scaling guide warns of WebSocket 403 errors, configuration sync problems and intermittent authentication failures. You know this step is done when a user session started on one replica keeps working after the load balancer routes the next request to another replica.

  4. Set one shared WEBUI_SECRET_KEY

    Generate a single WEBUI_SECRET_KEY, store it in your secrets manager and inject the same value into every replica. Mismatched keys cause login loops and 401 errors, which can look like a load balancer fault. Record who can rotate the key and how a rotation will be coordinated across replicas, since a rotation affects all active sessions. You know this step is done when logging in through the load balancer succeeds repeatedly and every replica returns the same authenticated response.

  5. Move uploads to shared storage

    Place uploaded files and knowledge content on a shared filesystem or an object store such as S3, GCS or Azure Blob, so any replica can read a file uploaded through another. Mount or configure the same location on each container and set one replica per container with UVICORN_WORKERS=1, as the scaling guide recommends, rather than adding workers inside a single container. You know this step is done when a file uploaded through one replica opens correctly through each of the others.

  6. Select a client-server vector database

    Choose a vector store that runs as a separate service, such as PGVector, Milvus, Qdrant, Pinecone or ChromaDB in HTTP mode, and point every replica at it. The scaling guide warns that the default ChromaDB will crash in multi-process setups. If you choose PGVector, it runs inside the PostgreSQL instance you already provisioned, which reduces the number of services to operate. Confirm the choice with your retrieval team and check that the vector store is reachable from all replicas. You know this step is done when a document added to a knowledge base on one replica is retrievable from another.

  7. Test failover and upgrades in non-production

    Build a staging copy of the topology with the same services and settings, then test the failure cases: stop one replica, restart Redis, fail over the database and apply an Open WebUI version upgrade. PostgreSQL does not detect a primary failure on its own, so confirm which external tool handles automatic failover and who responds to it. Test the PostgreSQL upgrade path too, since major upgrades need a dump and restore, pg_upgrade or logical replication. You know this step is done when each test has a written result, a rollback step and a named owner, and the team agrees the production cutover can proceed.

What do buyers ask before scaling Open WebUI?

How much effort and cost does a multi-replica Open WebUI setup add?

Moving from one container to several adds components you must run, not just more containers. The main cost drivers are the infrastructure for PostgreSQL, Redis, shared file storage and a client-server vector database, the staff who build and operate them, and the support scope you agree on. Infrastructure and staff time recur every month, while design, configuration and cutover work is largely one-time. Ask any quote to itemize the build, the environments covered, whether PostgreSQL and Redis are self-run or managed, how storage and backups are handled, and what ongoing support or upgrade work is included. DeployOpen does not publish a price list; a quote follows from the written scope.

How long does it take to scale Open WebUI from SQLite to a multi-replica setup?

The duration depends on the scope, so it is set during scoping rather than assumed in advance. The factors that move the timeline are the size of your existing data, how many replicas and environments you need, whether your file storage and vector database are already in place, and how much testing your authentication and session behavior requires. DeployOpen plans and implements most engagements as fixed-scope work, with scope, deliverables and timelines agreed in writing before work starts. Ask for the timeline as a set of milestones tied to those deliverables.

Can our team scale Open WebUI ourselves, or do we need outside help?

A capable platform team can do it alone if it has working experience with PostgreSQL administration, Redis, a reverse proxy or load balancer that supports WebSockets, and a shared storage backend. The Open WebUI scaling guide names the required settings, such as DATABASE_URL, REDIS_URL, WEBSOCKET_MANAGER=redis, ENABLE_WEBSOCKET_SUPPORT=true and one shared WEBUI_SECRET_KEY across all replicas. The harder parts are backups, failover, upgrades and testing failure modes such as login loops and intermittent 401 errors. Assess those skills honestly before deciding, and consider a fixed-scope engagement for the build with your team owning day-to-day operations.

Can we migrate from SQLite to PostgreSQL later without losing data?

Open WebUI does not migrate data between databases, so an in-place switch from SQLite to PostgreSQL should not be assumed to carry your history over. The scaling guide advises planning the switch before there is production data. If you already run production use, ask for the migration approach in writing, test it against a copy of your data, and confirm which records, such as users, chats, knowledge bases and settings, must survive the move and how they will be verified afterward.

Does the Open WebUI license change when we scale to more users?

Yes, the branding rule is tied to user count. Since v0.6.6, the Open WebUI License forbids altering or removing Open WebUI branding unless the deployment has no more than 50 end users in a rolling 30-day period, the copyright holder gives written permission, or the licensee holds an enterprise license. Scaling out for performance does not by itself change the license, but a larger user base does. Confirm your user count method and your options with Open WebUI directly, and check the Open WebUI License documentation and LICENSE file before you commit to a rollout plan.

What goes wrong if we add replicas without Redis, a shared secret key or shared storage?

Missing shared state causes symptoms that look like unrelated bugs. According to the scaling guide, a multi-instance deployment without Redis can show WebSocket 403 errors, configuration sync problems and intermittent authentication failures. Replicas with different WEBUI_SECRET_KEY values can cause login loops and 401 errors. Uploads and knowledge that live on one replica's local disk will be missing when a request lands on another. The ChromaDB default can also crash in multi-process setups, so use a client-server vector database. Test each of these before cutover, including a replica restart during an active chat session.

Who is responsible for PostgreSQL high availability once we scale?

Running several Open WebUI replicas does not make the database highly available. PostgreSQL supports hot standby servers and both synchronous and asynchronous replication, but it does not detect a primary failure or notify the standby on its own, so automatic failover needs external tools. Decide who owns that tooling, how backups and point-in-time recovery are set up, and how upgrades are scheduled, since minor releases and major upgrades follow different procedures. Ask any implementation partner to state which of these it builds, which it documents, and which remain with your team.

How DeployOpen scopes a single or scaled Open WebUI deployment

The first scoping decision is whether the deployment stays on one container with SQLite or moves to several replicas, and DeployOpen treats that choice as a written scope item rather than a default. DeployOpen plans, implements, hardens, backs up, upgrades, documents and supports self-hosted platforms inside the client's own infrastructure, whether that is a cloud account, a data center or an air-gapped network. For Open WebUI, the scope usually records the replica count, the database, the Redis and WebSocket settings, the shared secret key handling, the file storage location and the vector database, because each of these changes what must be built, tested and backed up. Most engagements are fixed-scope, so deliverables, timelines and responsibilities are agreed in writing before any work starts.

A useful scoping conversation starts with facts the client can confirm now: expected user count, whether production data already exists, and which team will operate the platform after handover. If the answer points toward more than one instance, the written scope should include the PostgreSQL migration before production data accumulates, because Open WebUI does not migrate data between databases. Ask for the deliverables to be listed explicitly: configuration for DATABASE_URL, REDIS_URL and WEBSOCKET_MANAGER, a documented plan for WEBUI_SECRET_KEY distribution, a tested backup and restore path, and runbooks for upgrades. DeployOpen does not publish a price list, so the quote follows from that scope. Ask any provider to state which items are one-time build work and which are recurring support, upgrades or testing retainers, and to confirm who holds the credentials and backups at handover.

How DeployOpen delivers and supports Open WebUI deployments

DeployOpen plans, implements, hardens, backs up, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For Open WebUI, that means deciding whether a single instance is enough today and, if it is not, building the PostgreSQL, Redis, shared secret, shared storage and vector database layers a multi-replica deployment needs.

How we scope

  • Start by confirming user counts, growth expectations and whether production data already sits on SQLite.
  • Document the target architecture, including replicas, load balancer, database, Redis, file storage and vector store.
  • Agree scope, deliverables and timelines in writing before any work starts, since most engagements are fixed-scope.

How we build

  • Configure PostgreSQL through DATABASE_URL and plan the data switch before production content exists.
  • Set Redis, WEBSOCKET_MANAGER and ENABLE_WEBSOCKET_SUPPORT, and load-test sessions across replicas behind the balancer.
  • Test shared WEBUI_SECRET_KEY, shared upload storage and a client-server vector database such as Qdrant or Milvus.

How we hand over

  • Deliver configuration, architecture and runbooks documenting each replica, dependency and failure mode in your environment.
  • Document backup and restore procedures for PostgreSQL, file storage and the vector database, tested before handover.
  • Walk your operations team through upgrade steps, including PostgreSQL minor and major version planning.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers, scoped in writing.
  • Upgrades to new Open WebUI releases are planned, tested in a non-production copy and then applied.
  • Ask any quote to state which components are one-time work and which recur under a retainer.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.