An open API service indexing awesome lists of open source software.

https://github.com/darksworm/traefiktop

CLI tool to view the status of traefik routers and services
https://github.com/darksworm/traefiktop

Last synced: 9 months ago
JSON representation

CLI tool to view the status of traefik routers and services

Awesome Lists containing this project

README

          



traefiktop


[![GitHub Downloads](https://img.shields.io/github/downloads/darksworm/traefiktop/total?style=flat-square&label=github+downloads)](https://github.com/darksworm/traefiktop/releases/latest)
[![Latest Release](https://img.shields.io/github/v/release/darksworm/traefiktop?style=flat-square)](https://github.com/darksworm/traefiktop/releases/latest)
[![License](https://img.shields.io/github/license/darksworm/traefiktop?style=flat-square)](./LICENSE)
[![codecov](https://img.shields.io/codecov/c/github/darksworm/traefiktop?style=flat-square)](https://codecov.io/github/darksworm/traefiktop)

A fast, keyboard‑friendly terminal UI for exploring Traefik routers and services. Rewritten in Rust using Ratatui for improved performance and resource efficiency.

## 🚀 **Major Update: Now Written in Rust!**

**v2.0 Migration**: This version represents a complete rewrite from TypeScript/Node.js to Rust. The CLI interface remains identical, but you'll benefit from:

- **🔥 Faster startup** and lower memory usage
- **⚡ Better performance** for large Traefik deployments
- **📦 Single binary** - no Node.js runtime required
- **🎯 Same familiar interface** and keyboard shortcuts

> **Migration Note**: The npm package is deprecated as of v2.0. Please use the native binaries instead.

## 🚀 Installation methods

Install Script (Linux/macOS)

```bash
curl -sSL https://raw.githubusercontent.com/darksworm/traefiktop/main/install.sh | sh
```

The install script automatically detects your system (including musl vs glibc on Linux) and downloads the appropriate binary from the latest release.

You can also install a specific version:
```bash
curl -sSL https://raw.githubusercontent.com/darksworm/traefiktop/main/install.sh | sh -s -- v0.1.0
```

Docker (Linux/macOS)

Pull and run the prebuilt image from GHCR:

```bash
docker run --rm -it ghcr.io/darksworm/traefiktop:latest \
--host https://traefik.example.org
```

For self-signed endpoints, add `--insecure`. To reach a Traefik container, attach to its network:

```bash
docker run --rm -it --network ghcr.io/darksworm/traefiktop:latest \
--host http://traefik:8080
```

Build locally instead of pulling:

```bash
bun run docker:build
bun run docker:run -- --host https://traefik.example.org
```

npm (DEPRECATED as of v2.0)

> ⚠️ **Deprecated**: The npm package is no longer maintained as of v2.0. Please use the native binaries instead for better performance.

```bash
# Last TypeScript version (v1.x)
npm i --global traefiktop@1
```

Homebrew (Linux/macOS)

```bash
brew tap darksworm/homebrew-tap
brew install --cask traefiktop
```

AUR (Arch User Repository)

```bash
yay -S traefiktop-bin
```

Download a binary

Grab binaries and packages from the latest release:
https://github.com/darksworm/traefiktop/releases/latest

## Screenshot

![traefiktop screenshot](assets/screenshot.png)

## What it shows
- Routers, their rules, and the services they target
- Which router is effectively down (no healthy services)
- The active service path (failover aware)
- Quick, readable status with a minimal set of emojis and colors

## Usage
`--host` is required. Optionally hide routers by name with `--ignore` patterns (case‑insensitive). Use `*` at the start/end for “starts with” / “ends with”. Use `--insecure` to disable TLS verification for development against self‑signed endpoints.

```bash
traefiktop --host https://traefik.example.org \
--ignore staging-* \
--ignore *-tmp,*-old
```

Development only (self-signed endpoints):

```
traefiktop --host https://selfsigned.local --insecure
```

## Keys
- Navigation: `j/k` or arrows
- Page: `PgDn/PgUp`, `Ctrl+f/Ctrl+b`
- Jump: `gg` (top), `G` (bottom), `Home/End`
- Search: `/` to filter, `Esc` to clear
- Sort: `s` toggles (dead first/name); `d` dead first; `n` name
- Quit: `q` or `Ctrl+C`

## Build from source
Prereqs: Rust ≥ 1.70

```bash
# Build release binary
cargo build --release

# The binary will be available at target/release/traefiktop
./target/release/traefiktop --help
```

## Docker
- Prebuilt images are published for releases to `ghcr.io/darksworm/traefiktop`.
- Local builds work cross‑platform via a multi‑stage Dockerfile.

Pull and run (interactive TTY):

```bash
docker run --rm -it ghcr.io/darksworm/traefiktop:latest \
--host https://traefik.example.org
```

Build locally and run:

```bash
# Build multi-arch image
docker buildx build --platform linux/amd64,linux/arm64 -t traefiktop:dev .

# Run (pass CLI flags after image name)
docker run --rm -it traefiktop:dev --host https://traefik.example.org
```

Single-arch build:

```bash
docker build -t traefiktop:dev .
```

## Notes
- API URL is mandatory. The app won’t start without `--host`.
- Ignore patterns support: `foo*` (starts with), `*bar` (ends with), `*mid*` (contains). Pass multiple `--ignore` flags or comma‑separate values.
- When selected, dead routers use a bright red background for better contrast. Active services are colored; inactive/down are grey.