The vivere CLI
Wrap any command so its start, exit code, duration and output tail are reported.
vivere run wraps a command. It sends /start, runs the command with its output passed through, then sends /<exit-code> with the last 16 KB of stdout and stderr as the log. It exits with the command's own exit code, so cron and CI still see failures.
Install
Single static binaries, no dependencies. Download the one for your platform from https://vivere.dev/static/dl/:
# Linux x86-64
curl -fsSL -o /usr/local/bin/vivere https://vivere.dev/static/dl/vivere-linux-amd64 && chmod +x /usr/local/bin/vivere
# Linux arm64 (Raspberry Pi, Graviton)
curl -fsSL -o /usr/local/bin/vivere https://vivere.dev/static/dl/vivere-linux-arm64 && chmod +x /usr/local/bin/vivere
# macOS (Apple silicon / Intel)
curl -fsSL -o /usr/local/bin/vivere https://vivere.dev/static/dl/vivere-darwin-arm64 && chmod +x /usr/local/bin/vivere
curl -fsSL -o /usr/local/bin/vivere https://vivere.dev/static/dl/vivere-darwin-amd64 && chmod +x /usr/local/bin/vivere
# Windows (PowerShell)
Invoke-WebRequest https://vivere.dev/static/dl/vivere-windows-amd64.exe -OutFile vivere.exe
Use
vivere run --url https://vivere.dev/p/<monitor-id> -- ./backup.sh --full
# the URL can come from the environment instead
export VIVERE_PING_URL=https://vivere.dev/p/<monitor-id>
vivere run -- python etl.py
# kill runaway jobs and report them as failed
vivere run --timeout 30m -- ./slow-job.sh
| Flag | Effect |
|---|---|
--url | Ping URL; defaults to $VIVERE_PING_URL. |
--timeout | Kill the command after this long; it is reported as failed with a note in the log. |
--no-start | Skip the start ping (no duration will be recorded). |
--quiet | Do not print vivere's own status lines to stderr. |
Network problems never break your job: pings are retried three times and then given up on, and the command's exit code is still returned.