98e000e3bee3be6624a10a3eaefddc0058faf2b0
Resolve GitHub issue #2 by aligning the Go module identity with the repository path so works. Changes made: - Updated go.mod module path from github.com/rcarmo/webterm-go-port to github.com/rcarmo/webterm. - Updated all internal import references to the new module path. - Updated version ldflags in Makefile and Dockerfile to use github.com/rcarmo/webterm/webterm.Version. - Added README quick-install section documenting the command. Validation: - Ran make check successfully after the rename/import updates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
webterm
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.
Features
- Typeahead find for quickly finding and launching sessions with minimal friction
- Web terminal with reconnect support
- Ghostty WebAssembly terminal engine for fast rendering from
ghostty-web - Session dashboard with live SVG screenshots from
go-te - 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
- Vendored Nerd Font assets with full glyph/icon support (no external font fetch required)
Install
Quick install
go install github.com/rcarmo/webterm/cmd/webterm@latest
Build from source
git clone https://github.com/rcarmo/webterm.git
cd webterm
mkdir -p bin
go build -o ./bin/webterm ./cmd/webterm
The command above produces bin/webterm; you can also build it from repo root with make build-go.
Quick start
Run a default shell session:
go run ./cmd/webterm
Run a specific command:
go run ./cmd/webterm -- htop
Then open http://localhost:8080.
Dashboard modes
Landing manifest
- name: Logs
slug: logs
command: docker logs -f my-service
theme: nord
go run ./cmd/webterm -- --landing-manifest ./landing.yaml
Docker watch
go run ./cmd/webterm -- --docker-watch
Containers with these labels become tiles:
webterm-command: command string, orautofor Docker execwebterm-theme: theme name (fallback isxtermpalette)
Compose manifest
go run ./cmd/webterm -- --compose-manifest ./docker-compose.yaml
Environment variables
WEBTERM_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
Development (Makefile-first)
make install-dev
make check
make race
make test
make bump-patch
Frontend bundle tasks:
make build
make build-fast
make bundle-watch
Docker
docker build -t webterm .
docker run -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 webterm --docker-watch
Web 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.
Description
Languages
Go
51.5%
TypeScript
31%
JavaScript
14.8%
Shell
1.2%
Makefile
0.8%
Other
0.7%
