Niklas Ye e04cfcf433
Release / build (amd64, darwin) (push) Failing after 10s
Release / build (amd64, linux) (push) Failing after 9s
Release / build (arm64, darwin) (push) Failing after 11s
Release / build (arm64, linux) (push) Failing after 9s
Release / release (push) Has been skipped
feat: Last Seen column tracking Alertmanager re-send heartbeat
The alert list showed only Started, which comes from Prometheus and
never changes for the lifetime of an alert instance. A firing alert
that started 12 days ago looked identical whether Alertmanager
refreshed it 30 seconds ago or went silent a week ago.

terdut-server already tracks this: the webhook upsert sets
received_at on every accepted payload, including the periodic
re-sends issued at repeat_interval, and its archiver treats the
field as a liveness heartbeat. The field was already decoded into
api.Alert.ReceivedAt and simply never rendered.

Add a Last Seen column to the alert tables, rendered with the
existing humanAgo helper. The Alerts and Archived tabs share
alertColumns/alertRows, so both pick it up. The width budget is
re-derived for five columns; the slack constant now accounts for
all of bubbles' per-cell padding, so the table lands exactly on
the terminal width instead of overflowing by two columns as it
did with four.

The detail view gains a matching Last Seen line, with the timeline
labels widened to keep values aligned. Since received_at stops
advancing once an alert resolves, also pull through the server's
resolution_source and show it in the status header
(RESOLVED · alertmanager vs RESOLVED · expiry) so a frozen
timestamp is explained.
2026-07-30 08:48:53 +02:00

terdut-tui

A terminal user interface for terdut-server. Communicates with the server over its REST API.

Written in Go using Bubbletea.

Features

  • Alert dashboard — live view of firing and resolved alerts with auto-refresh
  • Alert actions — acknowledge, comment, and view per-alert statistics
  • On-call schedule — visual calendar of who is on duty, assign and remove entries
  • User management — add and remove users, manage API keys

Installation

Download the latest release binary for your platform from the releases page, or build from source:

go install github.com/yeniklas/terdut-tui@latest

Configuration

Create ~/.config/terdut-tui/config.yaml:

server_url: https://terdut.example.com
api_key: <your-api-key>
refresh_interval: 30  # seconds, optional

The API key is generated in terdut-server. See the server documentation for how to bootstrap a user and issue an API key.

Usage

terdut-tui                 start the TUI
terdut-tui --version       print version
terdut-tui --self-update   update to the latest release

Keybindings

Key Action
j / ↓ Move down
k / ↑ Move up
tab Switch section (Alerts / Schedule / Users)
enter Select / open detail
esc Go back
r Refresh
f Filter / cycle filter
q Quit
S
Description
Terminal user interface for terdut-server
Readme 653 KiB
v0.13.0 Latest
2026-09-27 16:32:44 +00:00
Languages
Go 99.1%
Makefile 0.9%