webterm serves terminal sessions over HTTP/WebSocket, with a dashboard mode for multiple sessions and live-updating terminal tiles.
This repository is the Go port of the original Python implementation, which is preserved in the python branch.
- Typeahead find for quickly finding and launching sessions with minimal friction
- Web terminal with reconnect support
- Ghostty WebAssembly terminal engine for fast rendering
- Session dashboard with live SVG screenshots
- Docker watch mode (
webterm-command/webterm-themelabels) - Docker compose manifest ingestion
- CPU sparkline tiles for compose services
- SSE activity updates for fast dashboard refresh
- Mobile/touch support with virtual keyboard + draggable keybar
- Theme/font controls for terminal rendering
git clone https://github.com/rcarmo/webterm.git
cd webterm
mkdir -p bin
go build -o ./bin/webterm ./cmd/webtermThe command above produces bin/webterm; you can also build it from repo root with make build-go.
Run a default shell session:
go run ./cmd/webtermRun a specific command:
go run ./cmd/webterm -- htopThen open http://localhost:8080.
- name: Logs
slug: logs
command: docker logs -f my-service
theme: nordgo run ./cmd/webterm -- --landing-manifest ./landing.yamlgo run ./cmd/webterm -- --docker-watchContainers with these labels become tiles:
webterm-command: command string, orautofor Docker execwebterm-theme: theme name (fallback isxtermpalette)
go run ./cmd/webterm -- --compose-manifest ./docker-compose.yamlWEBTERM_STATIC_PATH: override static asset directoryWEBTERM_DOCKER_USERNAME: user for Docker exec sessionsWEBTERM_DOCKER_AUTO_COMMAND: override auto command (/bin/bashdefault)WEBTERM_SCREENSHOT_FORCE_REDRAW: force redraw before screenshots (true/1/yes/on)DOCKER_HOST: Docker daemon endpoint override
make install-dev
make check
make race
make test
make bump-patchFrontend bundle tasks:
make build
make build-fast
make bundle-watchdocker build -t webterm .
docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 webterm --docker-watchWeb assets are embedded in the Go binary by default (you can still override with WEBTERM_STATIC_PATH).
The Dockerfile uses a minimal Alpine runtime stage and only installs ca-certificates plus docker-cli.
