| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
Β | Β | |||
A multi-source structured log viewer for the terminal. Tail files, pipe from Docker/kubectl, mix JSON and logfmt and plain text β all in one interactive TUI.
# View a log file
logpilot app.log
# Tail with live follow
logpilot -f /var/log/app/*.log
# Pipe from Docker
docker logs -f my-container 2>&1 | logpilot -
# Pipe from kubectl
kubectl logs -f deploy/api-server | logpilot -
# Mix multiple sources with glob
logpilot services/*.log /var/log/sysloggo install github.com/clarabennettdev/logpilot@latestGrab a prebuilt binary from Releases:
# Linux (amd64)
curl -LO https://github.com/clarabennettdev/logpilot/releases/download/v0.3.0/logpilot_linux_amd64.tar.gz
tar xzf logpilot_linux_amd64.tar.gz
sudo mv logpilot /usr/local/bin/
# macOS (Apple Silicon)
curl -LO https://github.com/clarabennettdev/logpilot/releases/download/v0.3.0/logpilot_darwin_arm64.tar.gz
tar xzf logpilot_darwin_arm64.tar.gz
sudo mv logpilot /usr/local/bin/
# Windows (amd64)
# Download logpilot_windows_amd64.zip from the releases page and add to PATHgit clone https://github.com/clarabennettdev/logpilot.git
cd logpilot
go build -o logpilot ./cmd/logpilotLogPilot auto-detects the format of each log line independently β you can mix formats in the same stream.
{"timestamp":"2026-02-19T12:00:01Z","level":"info","msg":"request handled","method":"GET","path":"/api/users","duration_ms":42}
{"timestamp":"2026-02-19T12:00:02Z","level":"error","msg":"connection refused","host":"db-primary","port":5432}
ts=2026-02-19T12:00:01Z level=info msg="request handled" method=GET path=/api/users duration_ms=42 ts=2026-02-19T12:00:02Z level=warn msg="slow query" query="SELECT *" duration_ms=1250
Feb 19 12:00:01 myhost sshd[1234]: Accepted publickey for deploy Feb 19 12:00:02 myhost nginx: 192.168.1.1 - GET /health 200
kubectl logs -f deploy/api | logpilot -
| Key | Action |
|---|---|
| j / β | Scroll down |
| k / β | Scroll up |
| G | Jump to bottom (latest) |
| g g | Jump to top |
| f / Page Down | Page down |
| b / Page Up | Page up |
| / | Start search |
| n | Next search match |
| N | Previous search match |
| t | Toggle timestamp format |
| w | Toggle line wrap |
| Tab | Cycle theme |
| q / Ctrl+C | Quit |
| LogPilot | lnav | hl | tailspin | lazyjournal | |
|---|---|---|---|---|---|
| Interactive TUI | β | β | β | β | β |
| Structured parsing | β | β | β | β | Partial |
| Multi-source | β | β | β | β | β |
| Format-agnostic | β | PartialΒΉ | β | β | βΒ² |
| Language | Go | C++ | Rust | Rust | Go |
| Focus | Structured log TUI | Log file navigator | Log processor/pager | Highlight & tail | journald/docker/k8s |
ΒΉ lnav supports many formats but requires format definitions for custom structured logs. Β² lazyjournal focuses on journald, Docker, and Kubernetes sources rather than arbitrary log files.
Honest take: lnav is the most mature and feature-rich tool here. tailspin and hl are excellent if you want fast, zero-config highlighting for piped output. lazyjournal is great if your logs come from systemd/Docker/k8s. LogPilot occupies the space between β an interactive TUI that understands structured fields across arbitrary log sources.
logpilot/ βββ cmd/logpilot/ # CLI entrypoint βββ internal/ β βββ app/ # Bubble Tea application model β βββ parser/ # Format detection + parsing (JSON, logfmt, plain) β βββ source/ # Input sources (file, stdin, glob) β βββ tail/ # File tailing with rotation handling β βββ theme/ # Dark/light theme definitions β βββ buffer/ # Ring buffer with backpressure β βββ ui/ # Lipgloss view components βββ docs/demos/ # GIF demos βββ go.mod
# Build
go build ./cmd/logpilot
# Run tests
go test ./...
# Run tests with race detector
go test -race ./...
# Benchmarks
go test -bench=. ./internal/parser/
# Lint
golangci-lint runContributions are welcome! Whether it's a bug report, feature request, or pull request β all appreciated.
Please open an issue first for large changes so we can discuss the approach.
Built on the shoulders of the Charm ecosystem:
| Back | FazBrowse Home | New Git URL |