What if your AI could do everything you do on a computer?
Not just write code β but open a browser, click buttons, fill forms, run servers, test in real browsers, install anything, and see the screen?
taw-computer is an open-source MCP server that gives AI agents a full Ubuntu desktop inside Docker. Your AI connects, gets a real computer, and works like a human would.
No internal LLM. No chat UI. Your AI is the brain. This is the body.
Demo
Why taw-computer?
Other tools let AI write code. taw-computer lets AI use a computer.
Quick start
Get running in under 5 minutes:
# 1. Clone & build
git clone https://github.com/the-agents-work/taw-computer.git
cd taw-computer
docker build -f images/Dockerfile.taw -t taw-computer-base .
# 2. Install & start
npm install && npm start
Then add to your AI client:
{
"mcpServers": {
"taw-computer": {
"command": "npx",
"args": ["tsx", "/path/to/taw-computer/mcp/index.ts"]
}
}
}
Add to Cursor MCP settings (Settings β MCP Servers) β same JSON format as above.
Add to claude_desktop_config.json β same JSON format as above.
taw-computer speaks standard MCP over stdio. Any client that supports MCP can connect.
Got a powerful server / Mac Mini / VPS? Run taw-computer there and connect from anywhere:
{
"mcpServers": {
"taw-computer": {
"command": "ssh",
"args": ["user@your-server", "cd /path/to/taw-computer && npx tsx mcp/index.ts"]
}
}
}
Your laptop (Claude Code)
β SSH (stdin/stdout piped over network)
Remote server (taw-computer + Docker)
β Docker
Ubuntu sandbox
Setup:
- On the server: install Docker, clone repo, build image,
npm install - On the server: enable SSH (
sudo systemctl enable ssh) - On your laptop:
ssh-copy-id user@your-server(passwordless login) - Add the MCP config above β done!
Watch via VNC: open http://your-server:6080 in your browser.
That's it. Now tell your AI: "Create a VM and build me a website" β and watch it work.
What can it do?
π₯οΈ "Build me a landing page"
AI creates a VM β scaffolds Next.js β writes components β starts dev server β opens browser to check β iterates until it looks right
π "Go to Amazon and find the best laptop under $1000"
AI opens Chromium β navigates to Amazon β searches β scrolls β extracts prices β compares β reports back
π§ͺ "Run E2E tests on my deployed app"
AI launches Playwright β navigates to your URL β fills forms β clicks buttons β asserts results β reports failures
π§ "Set up a PostgreSQL database with sample data"
AI runs apt install postgresql β creates database β writes seed script β runs it β verifies with queries
πΈ "What does my app look like on mobile?"
AI takes desktop screenshot β resizes viewport β screenshots again β compares β suggests CSS fixes
How it works
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Your AI Client β
β Claude Code Β· Cursor Β· Claude Desktop Β· any MCP β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ
β MCP protocol (stdio)
βββββββββββββββββββββββββΌββββββββββββββββββββββββββββββ
β taw-computer MCP server 30+ tools β
β vm Β· shell Β· files Β· browser Β· desktop Β· search β
βββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββ
β Docker API
βββββββββββββββββββββββββΌββββββββββββββββββββββββββββββ
β Ubuntu 22.04 Sandbox isolated containerβ
β β
β bash Chromium + CDP xfce4 Desktop + VNC β
β git npm pip curl Playwright β
β python node xdotool scrot β
β β
β /workspace β your project files live here β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
30+ tools
Set-of-Mark: how browser automation actually works
Most "computer use" tools guess pixel coordinates. We use Set-of-Mark prompting β the AI sees numbered badges on every interactive element:
Step 1: browser_snapshot
β AI sees screenshot with [1] Login [2] Search [3] Cart ...
Step 2: browser_click_ref(ref=2)
β clicks the Search box precisely
Step 3: browser_type_ref(ref=2, text="laptop", submit=true)
β types and presses Enter
Step 4: browser_snapshot
β sees new page with results [4] [5] [6] ...
No coordinate guessing. No CSS selector fragility. The AI sees what it's clicking.
VNC β watch your AI work in real time
Every sandbox comes with a noVNC web viewer. Open the URL in your browser and watch:
- π±οΈ AI navigating websites and clicking buttons
- β¨οΈ AI writing code in the terminal
- ποΈ AI building and testing applications
- π AI debugging by inspecting the screen
Perfect for demos, debugging, and building trust in AI agents.
What's inside each sandbox
Configuration
Requirements
Project structure
taw-computer/
βββ mcp/
β βββ index.ts # MCP server β stdio, 30+ tool handlers
β βββ browser.ts # Playwright CDP + Set-of-Mark engine
βββ sandbox/
β βββ SandboxManager.ts # Abstract interface
β βββ DockerSandbox.ts # Docker implementation
β βββ FirecrackerSandbox.ts # Firecracker microVM (optional)
β βββ NetworkManager.ts # Network isolation
β βββ config.ts # Env-based config
β βββ index.ts # Auto-detect backend
βββ images/
β βββ Dockerfile.taw # Ubuntu sandbox image
βββ .github/
β βββ workflows/ci.yml # CI: typecheck + Docker build
β βββ ISSUE_TEMPLATE/ # Bug report + feature request
βββ package.json
βββ CONTRIBUTING.md
βββ LICENSE (MIT)
Contributing
We'd love your help! See CONTRIBUTING.md.
Ideas for first contributions:
- π¨ Record a demo GIF for this README
- π Write a tutorial ("Build X with taw-computer")
- π§ Add a new MCP tool (audio? clipboard? multi-tab?)
- π³ Build a slimmer Docker image
- π§ͺ Add automated tests
- π¦ Support Podman / containerd
Hosted version
Don't want to self-host? shipkit.cc β managed taw-computer with:
- Chat UI (just type what you want)
- Auth & team collaboration
- One-click app sharing
- No Docker setup needed
FAQ
Those are closed-source, hosted-only products that generate code. taw-computer gives AI a real computer β it can run servers, browse the web, install anything, and interact with any desktop app. It's also open source and self-hostable.
OpenInterpreter runs code on your local machine (risky). Open Hands uses its own LLM orchestration. taw-computer is just the computer β no built-in LLM, no opinions about orchestration. Your existing AI client (Claude Code, Cursor, etc.) is the brain. taw-computer is a pure MCP server.
Each sandbox is an isolated Docker container with its own filesystem, network, and process space. Nothing inside can touch your host system. Containers have memory/CPU/PID limits. When you're done, destroy the VM.
Yes β any AI client that supports MCP can connect. The server doesn't care which LLM is behind the client.
Yes. Anywhere Docker runs, taw-computer runs. The sandbox image supports both arm64 (Apple Silicon) and amd64 (Intel/AMD).
Star History
Related
- Model Context Protocol β the protocol taw-computer speaks
- Claude Code β AI coding CLI that supports MCP
- Playwright β browser automation powering CDP tools
License
MIT β do whatever you want with it.