Open WebUI Computer (cptr)
See more at cptr.sh
Open WebUI Computer (cptr) runs on your machine and serves your whole computer (files, terminal, editor, git) to any browser. It literally is your computer.
Use it from your phone, tablet, laptop, another computer, or the machine it's running on. Designed to feel native on every screen. Connect your own AI via API key, or plug in a coding agent you already subscribe to and skip the key entirely. Terminal multiplexer, parallel AI agents, full workstation, one tool, your computer, any device.
Install
pip install cptr
cptr run
MCP tool servers require the optional MCP dependencies: pip install 'cptr[mcp]'.
To install every optional feature group, use pip install 'cptr[all]'.
The Docker image includes all optional feature groups.
Or with uv: uvx cptr@latest run
On Windows, if opening a terminal reports a missing VCRUNTIME140.dll or Universal CRT DLL, install Microsoft's Visual C++ Redistributable and restart cptr.
Opens in your browser at http://localhost:8000.
Access from your phone
Same Wi-Fi? Bind to all interfaces:
cptr run --host 0.0.0.0
Open http://<your-computer-ip>:8000 on your phone.
Not on the same network? Use a tunnel to reach your machine remotely:
- Tailscale creates a private mesh network between your devices. Recommended.
- Cloudflare Tunnel gives you a permanent URL through Cloudflare's edge.
- ngrok gives you a public URL in one command.
Most tunnels forward to localhost, so the default cptr run works. If your tunnel connects to a specific interface, bind accordingly with --host.
Or skip networking entirely and connect a messaging bot instead.
What you get
| 📁 File browser | Navigate, create, rename, upload, drag and drop. Icons by type, sizes at a glance. |
| ⌨️ Terminal | Full shell in the browser. Run your tools, your scripts, or your favourite coding agent. |
| 🔀 Git | Stage, commit, diff, branch, push. Visual changes view. No command line required. |
| ✏️ Editor | Syntax-highlighted editing with tabs. Open multiple files side by side. |
| 🗂️ Tabs | Open terminals, files, chats, and tools in separate tabs. Rearrange or split your layout. |
| 📂 Workspaces | Multiple projects, one instance. Switch without losing your place. |
| 🔍 Search | Find files by name, search across file contents and chat history. ⌘K to find anything. |
| 📱 Mobile-first | Not a desktop UI made smaller. Built for the screen in your pocket. |
| 🔄 Sessions persist | Terminal keeps running when you close the tab. Come back on any device. |
AI agent
Bring your own API key (OpenAI, Anthropic, Ollama, or any OpenAI-compatible endpoint), or connect a coding agent you already subscribe to.
| 💬 Chat | Built-in AI with streaming responses and tool calling. Not just conversation: it can act. |
| 🎙️ Voice mode | Talk to your computer hands-free. It listens, responds, and reads the answer back to you. The mic re-arms so you can have a real conversation. |
| 🔊 Text-to-speech | AI responses read aloud, sentence by sentence. Works with any OpenAI-compatible TTS API. |
| 💭 Reasoning | See what the AI is thinking. Models like o3 and Claude show their chain of thought as expandable sections. |
| 🔧 File tools | AI reads, writes, edits, and searches your codebase directly. |
| ▶️ Run commands | AI executes shell commands and reads the output. Foreground or background. |
| 🌐 Web browsing | Navigate pages, click elements, fill forms, take screenshots. |
| 🔍 Web search | Brave, DuckDuckGo, Exa, Tavily, Perplexity, or any chat completions endpoint. |
| 🖼️ Image understanding | AI reads and describes images and screenshots from your workspace. |
| 📋 Plan mode | Request an implementation plan before the AI writes a single line. |
| ✏️ Output editing | Review and edit AI-generated changes before applying. |
| 📎 File mentions | Type @ to give the AI context about specific files. |
| 🧩 Skills | Reusable instruction sets (SKILL.md files). Type $ to mention one. |
| ⏱️ Automations | Schedule recurring AI tasks. "Run tests every morning." "Deploy every Friday." |
| 🤖 Sub-agents | AI spins up parallel workers for complex tasks. Each gets full tool access. |
| 🔌 Tool servers | Connect external tools via MCP or OpenAPI. |
| 🧠 Context compaction | Long conversations are automatically summarised to stay fast. |
Coding agents
Connect a coding agent as a native backend and use the subscription you already pay for. No separate API key needed.
Codex · Claude Code · Cursor · Grok · OpenCode · Cline
Add an agent profile from Settings, pick your models, and it shows up in the model selector like any other provider. Conversations run inside your workspace with full tool access and resume where you left off.
Prefer to run agents yourself? Any terminal agent (Gemini CLI, Kilo Code, Pi, and others) works in the terminal tab the way it always has.
Messaging bots
Connect the AI to your chat apps. Full tool access, streaming responses, conversations synced back to the web UI.
Telegram · Discord · Slack · WhatsApp · Signal
Message your computer from wherever you are. Ask it to check a build, push a fix, or explain a file. Switch workspaces with /workspace, start fresh with /new.
Gateway API
Open WebUI Computer exposes an OpenAI-compatible API (/v1/chat/completions). Any client that speaks OpenAI, including Open WebUI, can use each Open WebUI Computer workspace as a model with full agent capabilities: file access, terminal, web search, tools.
More
| 🎙️ Voice memos | Record audio, auto-transcribe to markdown. |
| 💬 Message queue | Queue follow-up messages while the AI is responding. |
| 🔔 Notifications | Browser notifications plus named webhook or bot targets for chat events. |
| 📊 Usage | Token counts and timing on every response. |
| 📄 System prompts | Per-model, per-workspace, or global. Template variables included. |
| 📋 Audit logging | Structured audit trail of all API mutations with automatic redaction of sensitive data. |
| 🪵 Diagnostic logging | Configurable structured logs (text or JSON) with optional upstream request capture. |
| ⌨️ Keyboard shortcuts | Customisable keybindings with a settings panel. |
| 🌍 10 languages | EN, DE, ES, FR, JA, KO, PT-BR, RU, ZH-CN, ZH-TW. |
| 🔐 Auth | Username/password with JWT sessions. Signup toggle for admins. |
Design principles
Mobile is first-class. The interface is built for the phone. Touch-native, portrait-native, designed for the screen people carry. Sessions survive disconnects because on a phone, they will. If a feature only works at a desk, it's not done.
Your machine. Open WebUI Computer serves the machine it runs on. The local filesystem, the local shell, local state. Where that machine lives is up to you.
Computer, not chat. The core is the filesystem, the terminal, and git. Files over apps. Plain files on your machine, not content trapped inside another product. AI conversations are files too: searchable, editable, movable, commit-able. Open WebUI Computer is a window into the real system, not a container on top of it.
Open WebUI Computer runs on your machine and puts the whole thing in a browser tab. Pull out your phone and you're in. Files, editor, terminal, git, running on the computer you already own.
Push a hotfix from the train. Check on a deploy from bed. Ship a side project from the park. Stage and commit without touching the command line, or open the terminal and do it the old way. Search across files. Preview markdown. Drag things around. Switch between projects without losing your place.
Close the tab. Come back tomorrow on any device. Everything is where you left it. Sessions survive disconnects. Your work doesn't care which screen you're on.
Life is short. Touch grass. Read our Manifesto.
Help us build open, empowering tools that put AI in people's hands. We're hiring.
Docker
Run Open WebUI Computer with Docker:
docker run --rm -it \
-p 8000:8000 \
-v cptr-data:/data \
-v "$PWD:/workspace" \
-w /workspace \
ghcr.io/open-webui/computer:latest
Then open the URL printed in the logs, usually http://localhost:8000/?token=....
Open WebUI Computer stores its state in /data. Mount your project into the container, like -v "$PWD:/workspace", so Open WebUI Computer can access it.
If you bind-mount a host directory to /data, make sure that directory is writable by the container user. SQLite needs to create and update /data/app.db, and host directory permissions take precedence over the image's built-in /data ownership.
The :dev image is also available and tracks the main branch.
Air-gapped installation
Open WebUI Computer does not need internet access after it is installed. The Python wheel includes the built frontend assets, and the Docker image is self-contained.
On a connected machine:
pip download --dest wheelhouse 'cptr[all]'
docker pull ghcr.io/open-webui/computer:latest
docker save ghcr.io/open-webui/computer:latest -o cptr-image.tar
Transfer the artifacts, then install or run offline:
python -m venv .venv
. .venv/bin/activate
pip install --no-index --find-links ./wheelhouse 'cptr[all]'
cptr run --host 0.0.0.0
docker load -i cptr-image.tar
docker run --rm -it \
--network=none \
-p 8000:8000 \
-v cptr-data:/data \
-v "$PWD:/workspace" \
-w /workspace \
ghcr.io/open-webui/computer:latest
Core local features run from local assets. External services such as hosted model APIs, web search providers, messaging adapters, Git remotes, and MCP/OpenAPI servers still require reachable endpoints.
Security model
Open WebUI Computer is designed as your computer, served to you. Once authenticated, a user has full access to the host filesystem and shell, equivalent to an SSH session. There is no path sandboxing and no per-user isolation.
This is safe when you are the only user and you control the network. It is not safe if untrusted users share the instance, it is exposed to the public internet, or a reverse proxy forwards spoofable auth headers. Treat a shared Open WebUI Computer like an open SSH port.
License
Open Use License. Source available. All rights reserved. See LICENSE. Enterprise licenses available.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cptr-0.7.6-py3-none-any.whl.
File metadata
- Download URL: cptr-0.7.6-py3-none-any.whl
- Upload date:
- Size: 4.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47e196d77f2f13b9cdb00cd47c7d98dcb460d00b64d4f24585dac4fa902b1b74
|
|
| MD5 |
7c8f465b403b4ff676acb6ac6b25a5cb
|
|
| BLAKE2b-256 |
963a2b1168c7a79f1f0eeae6ac6fd855c77516029e56b60f2b509293a6a6dd48
|
Provenance
The following attestation bundles were made for cptr-0.7.6-py3-none-any.whl:
Publisher:
pypi.yml on open-webui/computer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cptr-0.7.6-py3-none-any.whl -
Subject digest:
47e196d77f2f13b9cdb00cd47c7d98dcb460d00b64d4f24585dac4fa902b1b74 - Sigstore transparency entry: 2089627320
- Sigstore integration time:
-
Permalink:
open-webui/computer@e471f03ed21fdf37a87d8869cc7b6dca02d44043 -
Branch / Tag:
refs/heads/release - Owner: https://github.com/open-webui
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yml@e471f03ed21fdf37a87d8869cc7b6dca02d44043 -
Trigger Event:
push
-
Statement type: