Files
webterm/README.md
T
GitHub Copilot 98e000e3be Fix module path mismatch for go install
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>
2026-02-15 16:19:46 +00:00

3.0 KiB

webterm

Icon

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.

Screenshot

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-theme labels)
  • 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, or auto for Docker exec
  • webterm-theme: theme name (fallback is xterm palette)

Compose manifest

go run ./cmd/webterm -- --compose-manifest ./docker-compose.yaml

Environment variables

  • WEBTERM_STATIC_PATH: override static asset directory
  • WEBTERM_DOCKER_USERNAME: user for Docker exec sessions
  • WEBTERM_DOCKER_AUTO_COMMAND: override auto command (/bin/bash default)
  • 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.