Repository navigation
feat: Support fully air-gapped installation and first run #95
Description
Feature request: Support fully air-gapped installation and first run
Summary
Please add first-class support for running Open WebUI Computer (cptr) in fully air-gapped environments.
Currently, cptr can be used offline only after it has already been installed, built, or started once in an internet-connected environment. For secure, regulated, enterprise, government, lab, and isolated development environments, this is a major deployment blocker.
The expected behavior is that an operator can download release artifacts in a connected environment, transfer them into an offline environment, and install/start cptr without any network access, dependency resolution, package-manager downloads, registry access, or update checks.
Why this matters
Air-gapped users cannot rely on:
- PyPI being reachable during installation
- npm registry access during frontend build
- apt repositories during image build
uvxresolving packages on first run- npm/pip/uv caches already existing
- optional dependencies being installed interactively later
- remote update checks or provider/model discovery during startup
For these environments, the base product must be installable and startable with zero outbound network access.
Current situation
The documented install paths currently rely on online package resolution:
pip install cptr
cptr runOptional features require additional installs:
pip install 'cptr[mcp]'
pip install 'cptr[all]'The README also documents:
uvx cptr@latest runThis is convenient for normal users, but it is not suitable for air-gapped deployments because the first invocation may resolve/download packages.
The Docker build path also depends on external package sources during build:
npm cifor frontend dependenciesuv buildapt-get installuv pip install "$wheel[all]"
This makes the image build itself unsuitable inside an offline environment unless all upstream package sources have already been mirrored or cached.
Requested behavior
Please provide an officially supported air-gapped deployment path.
At minimum, users should be able to do the following:
-
In an internet-connected environment:
- Download a versioned
cptrrelease bundle. - Download all required Python wheels.
- Download the prebuilt frontend assets.
- Download or export a prebuilt OCI/Docker image.
- Verify checksums/signatures.
- Download a versioned
-
Transfer the artifacts into an offline environment.
-
In the offline environment:
- Install
cptrwithout contacting PyPI. - Start
cptrwithout contacting PyPI, npm, apt, GitHub, or any other public endpoint. - Run the web UI, file browser, editor, terminal, git integration, workspaces, local config, and local model/provider endpoints.
- Use local providers such as Ollama or OpenAI-compatible local endpoints.
- Disable or gracefully fail optional online-only features.
- Install
Proposed artifacts
It would be very helpful if each release included:
1. Offline Python bundle
A platform-specific wheelhouse, for example:
cptr-<version>-wheelhouse-linux-amd64.tar.gz
cptr-<version>-wheelhouse-linux-arm64.tar.gz
cptr-<version>-wheelhouse-macos-arm64.tar.gz
cptr-<version>-wheelhouse-windows-amd64.zip
The offline installation should work with something like:
python -m venv .venv
. .venv/bin/activate
pip install --no-index --find-links ./wheelhouse 'cptr[all]'
cptr run --host 0.0.0.0No package should be downloaded during that process.
2. Offline OCI image artifact
Publish or attach a prebuilt image archive that can be transferred directly:
docker load < cptr-<version>-linux-amd64.oci.tar
docker run --rm -it \
--network=none \
-p 8000:8000 \
-v cptr-data:/data \
-v "$PWD:/workspace" \
-w /workspace \
ghcr.io/open-webui/computer:<version>This should start successfully without any outbound network access.
3. Checksums and SBOM
Please provide:
SHA256SUMS
SHA256SUMS.sig
SBOM
This is important for controlled environments where artifacts need to be reviewed before import.
Offline mode
A dedicated offline mode would make this much safer and more predictable:
CPTR_OFFLINE=1 cptr runor:
cptr run --offlineIn offline mode, cptr should not attempt:
- GitHub release/update checks
- remote web search fallback
- DuckDuckGo fallback
- remote OpenAPI discovery unless explicitly configured for an internal endpoint
- external provider model discovery unless explicitly triggered
- remote agent/model probes that require internet
- any automatic package-manager install
- any npm/pip/uv/apt invocation
Optional online features should remain available when explicitly configured, but the default air-gapped startup path should be quiet and deterministic.
Optional dependencies
For true air-gapped usage, optional features need a clear policy:
- Either include all dependencies advertised by
cptr[all]. - Or document which features are intentionally excluded from the offline bundle.
- Avoid runtime messages that simply say
pip install ...without also explaining the offline installation path.
For example, document extraction currently has lazy optional imports for additional file types. In an air-gapped environment, users cannot resolve those interactively after startup. Those dependencies should either be included in the full offline bundle or clearly documented as unavailable unless pre-bundled.
Acceptance criteria
- A fresh offline environment can install
cptrfrom release artifacts usingpip --no-index. - A fresh offline environment can run the official Docker/OCI artifact with
--network=none. - First startup succeeds without PyPI, npm, apt, GitHub, or registry access.
- The frontend loads completely from local/static assets.
/api/healthworks offline.- Initial setup/auth works offline.
- File browser, editor, terminal, git UI, and workspaces work offline.
- Local model providers such as Ollama or local OpenAI-compatible endpoints can be configured offline.
- Online-only features fail gracefully or are disabled in offline mode.
- CI includes at least one network-disabled smoke test.
- Documentation includes a complete “Air-gapped installation” section.
Suggested CI test
Add a release smoke test similar to:
docker run --rm --network=none \
-p 8000:8000 \
-v cptr-data:/data \
-v "$PWD:/workspace" \
-w /workspace \
ghcr.io/open-webui/computer:<version>Then verify:
curl http://localhost:8000/api/health
curl http://localhost:8000/For Python artifacts, test:
python -m venv .venv
. .venv/bin/activate
pip install --no-index --find-links ./wheelhouse 'cptr[all]'
CPTR_OFFLINE=1 cptr run --headlessNo network access should be required at any step after artifacts have been transferred.
Expected result
Open WebUI Computer should be deployable in a fully disconnected environment as a self-contained workstation UI. Internet-dependent features can remain optional, but installation, startup, core UI, local filesystem access, terminal, editor, git, workspaces, and local model/provider usage should not require an internet-connected first run.
Activity
owui-terminator commentedon Jul 2, 2026
🔍 Related Issues Found
I found some existing issues that might be related. Please check if any of these are duplicates or contain helpful solutions:
This issue is about the Docker image not including the
mcpoptional dependency, which is directly relevant to the new request’s concern about fully bundled offline/air-gapped deployments including optional extras. It shows the project already has packaging gaps around self-contained installation artifacts.by root-hal9000
💡 If your issue is a duplicate, please close it and add any additional details to the existing issue instead.
This comment was generated automatically. React with 👍 if helpful, 👎 if not.
tjbck commentedon Jul 6, 2026
Should be addressed with the latest!