Your agent: containerized with its own browser for agentic testing.
Your terminal: pair live or share recordings with teammates.
Your sessions: run multiple in parallel, each on its own git worktree.
Works with Claude, Codex, OpenCode, Gemini, Aider, Goose, and Pi. Not listed? Let us know!
- Containerized agent + browser: each session runs in its own container with a browser for agentic testing (Playwright MCP plus a live Agent View).
- Parallel sessions on git worktrees: run several agents at once, each isolated on its own worktree.
- Live pairing and recordings: pair on a live terminal, or share session recordings with teammates.
- Remote access via tunnel mode: reach a container over the public internet with no open ports and no TLS to manage -- the container dials out. See Tunnel mode explained, plus the runbooks for laptop, Fly.io, and PaaS.
- One-container deploy: ship to Fly.io / Railway / Render / Cloud Run.
- SSH commit signing: sign commits with a per-session key that never touches disk.
- Skills from any git repo:
swe-swe init --with-skills <alias>@<url>clones external skill repos and surfaces them to the agent. - Built-in panes: live preview, a read-only Files browser, VS Code (code-server), and agent chat.
- Multi-service apps without Docker: declare your services in a
Procfileandswe-runsupervises them, each reachable in App Preview. See Multi-service apps. - Dockerless mode:
swe-swe init --runtime=hostruns everything host-native from prebuilt binaries -- no Docker required. See dockerless.
-
Install swe-swe
Option A: run via npx (requires Node.js)
alias swe-swe='npx -y swe-swe'
Option B: install via curl
curl -fsSL https://raw.githubusercontent.com/choonkeat/swe-swe/main/install.sh | sh -
Go to your project
cd /path/to/your/project -
Start
swe-swe up
- Docker & Docker Compose installed -- or none at all, if you use dockerless mode
- Terminal access (works on macOS, Linux, Windows with WSL)
On a Linux host you can skip containers entirely: swe-swe init --runtime=host
writes the embedded server and helper binaries into .swe-swe/, and swe-swe up
runs them directly on the host in the foreground.
macOS is supported experimentally -- the per-session credential broker and PTY session recording are not ported yet. The proven Mac setup is a Linux VM: see dockerless on a Mac.
For the full command reference -- all flags, examples, environment variables, and architecture details -- see docs/cli-commands-and-binary-management.md. For configuration options, see docs/configuration.md.
Quick reference:
# Native commands
swe-swe init [options] # Initialize a project (advanced; `up` does this interactively)
swe-swe list # List initialized projects
swe-swe proxy <command> # Bridge host commands into containers
# Docker Compose pass-through (all other commands)
swe-swe up # Start the environment (runs interactive setup on first use)
swe-swe down # Stop the environment
swe-swe build # Rebuild Docker images
swe-swe ps / logs / exec ... # Any docker compose commandUse --project-directory to specify which project (defaults to current directory). The port defaults to 1977 and can be customized via SWE_PORT.
In a project initialized with --runtime=host there is no compose file: swe-swe up runs the server on the host in the foreground (Ctrl-C to stop), and the compose-only commands do not apply.
- Configuration Reference - all init flags, environment variables, and config files
- CLI Commands and Build Architecture - full command reference, troubleshooting, build system
- Dockerless - run host-native with no Docker, plus the Mac + Linux VM runbook
- Multi-service apps - Procfile +
swe-run+ App Preview - Browser Automation - Chrome CDP and MCP Playwright
- WebSocket Protocol - terminal communication protocol
- Tunnel mode - reach a container from the public internet: explained, laptop, Fly.io, PaaS
make build # Build CLI binaries for all platforms
make test # Run testsSee docs/cli-commands-and-binary-management.md for build architecture and troubleshooting.
See LICENSE file for details.
