██████╗ ███╗ ██╗ ██████╗ ██╗ ██╗███████╗
██╔══██╗████╗ ██║██╔═══██╗██║ ██╔╝██╔════╝
██████╔╝██╔██╗ ██║██║ ██║█████╔╝ █████╗
██╔═══╝ ██║╚██╗██║██║ ██║██╔═██╗ ██╔══╝
██║ ██║ ╚████║╚██████╔╝██║ ██╗███████╗
╚═╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝
A blazing-fast terminal log viewer with intelligent fuzzy filtering
Warning
Work in Progress - This project is actively under development. Features and API may change.
Interactive log streaming and filtering tool inspired by fzf, designed for developers who live in the terminal.
# Install
git clone https://github.com/spaceCabbage/pnoke
cd pnoke && make build && make install
# Stream logs with real-time filtering
sudo journalctl -f | pnoke
docker logs -f container_name | pnoke
kubectl logs -f deployment/app | pnokepnoke isn't just another log viewer - it's built for the realities of modern development:
🧠 Smart Fuzzy Matching - Three-tier search prioritization: exact → contiguous → scattered
⚡ Handles Sudo Gracefully - Waits for password prompts to complete before starting UI
🔄 Persistent Filtering - Matched lines stay visible even when the buffer cycles
💾 Memory Efficient - Circular buffer handles millions of lines without memory bloat
🎯 Auto-highlighting - Instantly spots ERROR, WARN, INFO, SUCCESS in your logs
⚙️ Stream Control - Pause/resume, navigate, search - all while streaming live
# Monitor Kubernetes pods with error filtering
kubectl logs -f deployment/api | pnoke --filter ERROR
# Debug Docker Compose services
docker-compose logs -f | pnoke
# System troubleshooting with sudo
sudo journalctl -f -u nginx | pnoke
# Monitor multiple log files
tail -f /var/log/{nginx,apache2}/*.log | pnoke
# Parse application logs with custom buffer
pnoke --buffer 5000 /var/log/app.log
# Follow growing log files like tail -f
pnoke -f /var/log/syslog- 🚀 Handles 100,000+ lines without breaking a sweat
- 💨 Instant search - no lag even on massive log streams
- 🪶 Minimal memory - circular buffer keeps memory usage constant
- ⚡ Real-time - sub-millisecond filtering as you type
pnoke [OPTIONS] [FILE]
OPTIONS:
-f, --follow Follow file like tail -f
-b, --buffer SIZE Buffer size (default: 1000)
--filter PATTERN Initial filter pattern
-h, --help Show help
-v, --version Show version| Key | Action |
|---|---|
[type] |
Filter as you type (including j, k, q) |
Tab |
Toggle FUZZY/EXACT mode |
↑/↓ |
Navigate up/down |
Ctrl+J/K |
Navigate down/up (vim-style) |
Home/End |
Go to top/bottom |
Page Up/Down |
Scroll by page |
Ctrl+C |
Clear current filter |
Ctrl+P |
Pause/Resume live stream |
? |
Toggle help overlay |
Esc |
Quit |
| Feature | pnoke | tail | less | multitail |
|---|---|---|---|---|
| ✅ Real-time streaming | ✅ | ✅ | ❌ | ✅ |
| ✅ Fuzzy search | ✅ | ❌ | ❌ | |
| ✅ Persistent filtering | ✅ | ❌ | ❌ | ❌ |
| ✅ Smart case sensitivity | ✅ | ❌ | ✅ | ❌ |
| ✅ Auto-highlighting | ✅ | ❌ | ❌ | ✅ |
| ✅ Memory efficient | ✅ | ❌ | ❌ | |
| ✅ Vim navigation | ✅ | ❌ | ✅ | ❌ |
export PNOKE_BUFFER=2000 # Default buffer size
export PNOKE_FILTER="ERROR" # Default filter pattern
export PNOKE_FOLLOW=true # Default to follow modeSmart Case Sensitivity:
error→ case-insensitive (matches ERROR, Error, error)ERROR→ case-sensitive (matches only ERROR)
Fuzzy vs Exact Modes:
- FUZZY:
err conmatches "Error connecting to database" - EXACT:
err conmatches only lines containing that exact substring
Auto-highlighting:
- 🔴 ERROR, FATAL, FAIL → Red
- 🟡 WARN, WARNING → Yellow
- 🔵 INFO, DEBUG → Blue
- 🟢 SUCCESS, OK, PASS → Green
make build # Build binary to ./bin/pnoke
make install # Install to $GOPATH/bin
make test # Run comprehensive test suite
make lint # Run linter
make clean # Clean build artifactsGPL-3.0 License - see LICENSE.md for details.