Web application to view lines from file on local system or on remote server built with Svelte.
Download executable for your platform from latest release.
Docker image is also available here.
Configuaration is done with web-tail.config.toml file. Following keys are available:
port- port that Web tail will run on. Default value is4444allowedOrigins- list of allowed origins for WebSocket connections. Default value is["*"]servers- reusable servers configurationname- name of server to use insourcesconfigshost- host of remote server. Mandatory field for source typesssh:*port- port of remote server. Mandatory field for source typesssh:*username- username for ssh connection to remote server. Mandatory for source typesssh:*password- password to authenticate on remote server. Either this orprivateKeyPathis mandatory for source typesssh:*privateKeyPath- path to file with private key to authenticate on remote server. Either this orpasswordis mandatory for source typesssh:*
sources- list of sources to tail lines fromname- name of source. Mandatory fieldtype- type of source. Possible values:local:file,local:docker,local:openclaw,ssh:file,ssh:docker,ssh:openclaw. Mandatory fieldpath- path to file. Mandatory field for source types*:fileserverName- name of a server fromserverslistcontainerId- Docker container ID. Mandatory field for source types*:dockerhost- host of remote server. Mandatory field for source typesssh:*port- port of remote server. Mandatory field for source typesssh:*username- username for ssh connection to remote server. Mandatory for source typesssh:*password- password to authenticate on remote server. Either this orprivateKeyPathis mandatory for source typesssh:*privateKeyPath- path to file with private key to authenticate on remote server. Either this orpasswordis mandatory for source typesssh:*
String fields support environment placeholders in the exact form ${VAR_NAME}.
If a placeholder is used and the environment variable is not set, web-tail fails to start with a config error.
Only exact placeholders are expanded, so values like prefix-${VAR_NAME} stay unchanged.
Example:
[[servers]]
name = "production"
host = "${SSH_HOST}"
port = 22
username = "${SSH_USER}"
password = "${SSH_PASSWORD}"
privateKeyPath = "${SSH_PRIVATE_KEY_PATH}"
[[sources]]
name = "app-log"
type = "ssh:file"
path = "/var/log/app.log"
serverName = "production"Options from left to right:
- Dropdown to select one of sources from
web-tail.config.toml - Search field. Matching results will be selected. Search is case insensitive by default
Filtertoggle. If enabled only lines with matching results are shown.*toggle. If enabled treats text in search field as regular expressionAatoggle. If enabled makes search case sensitiveReversetoggle. If enabled latest lines shown on top- Max lines field. How much lines will be shown
- Theme selector:
System(default),Light, orDark. System follows your device's appearance and updates when it changes. Your choice is saved in this browser alongside the other preferences. Use Tab to focus the selector and arrow keys to choose a theme.
Use Go 1.27 and Bun 1.4.4. The frontend app lives in /client and uses Vite.
- Install frontend dependencies:
cd client && bun install --frozen-lockfile
- Check frontend types:
cd client && bun run check
- Build frontend assets for Go embed:
cd client && bun run build
- Run backend:
go run ./server
Type checks use TypeScript 7 through the @typescript/native alias. TypeScript 6
is also installed because Svelte Check requires its JavaScript API. CI, releases,
and Docker run the same type checks before building.
The frontend overrides glob and minimatch to their patched versions while
Workbox and the asset generator still request older major versions.
For frontend HMR in development, run both services:
go run ./servercd client && bun run dev
Vite dev server proxies /sources and /logstream to http://localhost:4444.
To check the frontend, run cd client && bun run check. Browser tests use a
production build with sample sources and log streams, so no backend is needed:
cd client
bunx playwright install chromium
bun run test:e2e
