Terminal TUI dashboard for real-time log monitoring
Project description
awatch ๐ฅ๏ธ
A Watchful Terminal Analytics for Continuous Hosting logs
Real-time TUI (Terminal UI) log monitoring dashboard for Linux and macOS. Monitor any log file live โ with severity filtering, text search, bar charts, and a scrollable detail view โ all inside your terminal.
Screenshot
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ โ
โ โ STATUS: LIVE LAST LOG: 2026-01-02T14:32:01 TIME: 2026-01-02 ... โ โ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โญโ SYSTEM INFO โโโโโโโโโโโโโโโโโโโโโโโโโโฎ โญโ CRITICAL โโโฎ โญโ WARNINGS โโโฎ โ
โ โ SYSTEM: prod-server-01 SIZE: 42.3MB โ โ Count: 2 โ โ Count: 14 โ โ
โ โ TOTAL: 8432 | CRIT:2 ERR:11 WARN:14 โ โ | | โ โ | || | โ โ
โ โ Range: 2026-01-01 to 2026-01-02 โ โฐโโโโโโโโโโโโโโฏ โฐโโโโโโโโโโโโโโฏ โ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ โ
โ โญโ RECENT LOGS โโโโโโโโโโโโโโโโโโโโโโโโ [Filtered: 120/8432] l:details | โโ:scroll โโฎโ
โ โ [Jan 2 14:32:01] [CRIT] kernel: BIOS bug: ... โโ
โ โ [Jan 2 14:31:55] [ERR ] nginx: connect() failed (111: Connection refused) โโ
โ โ [Jan 2 14:31:40] [WARN] systemd: Unit ssh.service is degraded. โโ
โ โ [Jan 2 14:31:22] [INFO] sshd[2341]: Accepted publickey for ashish โโ
โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏโ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Features
- Live tail โ monitors any log file in real-time, handles file rotation and truncation automatically
- Severity detection โ auto-classifies each line as
CRITICAL,ALERT,ERROR,WARN,INFO, orDEBUGusing regex pattern matching - Text search โ filter logs by any keyword with highlighted matches
- Severity filter โ show only the severity level you care about
- Bar charts โ live sparkline-style bar charts for CRITICAL, WARNINGS, ERRORS, and INFO counts (visible on wide terminals โฅ 130 cols)
- Detail view โ full-width table with timestamp, severity, and message columns; searchable separately
- Scroll โ scroll through history in both main and detail views
- Date range โ shows the date range of logs currently loaded
- File rotation handling โ detects truncation/rotation and re-opens the file automatically
- No-limit mode โ load the entire log file instead of the default last 10,000 lines
- Zero dependencies โ uses only Python stdlib (
curses,threading,re,collections)
Install
pip install awatch
Usage
# Monitor default syslog
awatch
# Monitor a specific file
awatch /var/log/nginx/error.log
awatch /var/log/auth.log
awatch /var/log/postgresql/postgresql.log
# Load entire file (no 10,000 line cap)
awatch --no-limit
awatch /var/log/syslog --no-limit
# Check version
awatch -v
awatch --version
Keybindings
Main View
| Key | Action |
|---|---|
t |
Enter text search โ type keyword, press Enter to apply |
v |
Filter by severity โ type ERROR, WARN, INFO, CRITICAL, DEBUG, or ALERT |
c |
Clear all active filters |
l |
Open detail view (full table with all fields) |
r |
Reload โ re-reads file from disk |
p |
Change log file path โ type new path, press Enter |
โ |
Scroll up (older logs) |
โ |
Scroll down (newer logs) |
q |
Quit |
ESC |
Cancel current input |
Detail View
| Key | Action |
|---|---|
s |
Search within detail view |
c |
Clear detail search |
โ / โ |
Scroll one line |
PgUp / PgDn |
Scroll ten lines |
ESC or b |
Back to main dashboard |
q |
Quit |
Severity Levels
| Level | Color | Matches |
|---|---|---|
CRITICAL |
๐ด Red | CRITICAL, CRIT, FATAL, EMERG, EMERGENCY |
ALERT |
๐ฃ Magenta | ALERT |
ERROR |
๐ด Red | ERROR, ERR, FAILURE, FAILED |
WARN |
๐ก Yellow | WARN, WARNING |
INFO |
๐ต Cyan | INFO, INFORMATION, NOTICE |
DEBUG |
๐ท Blue | DEBUG, TRACE |
Supported Log Formats
awatch parses standard syslog format automatically:
Jan 2 14:32:01 hostname process[pid]: message
2026-01-02T14:32:01.123Z hostname process[pid]: message
Any line that doesn't match syslog format is still displayed โ the full raw line is shown as the message. This means awatch works with any plain-text log file.
Terminal Requirements
| Requirement | Minimum |
|---|---|
| Terminal size | 80 ร 30 |
| Terminal size (with graphs) | 130+ columns wide |
| OS | Linux, macOS |
| Python | 3.8+ |
Performance
| Mode | Behavior |
|---|---|
| Default | Reads last 2MB of file โ keeps last 10,000 lines in memory |
--no-limit |
Reads entire file from start, no line cap |
New lines are polled every 50ms. Screen redraws are throttled to once per second minimum unless new data arrives.
Common Log Files
# System
awatch /var/log/syslog
awatch /var/log/messages
awatch /var/log/kern.log
# Auth
awatch /var/log/auth.log
awatch /var/log/secure
# Web servers
awatch /var/log/nginx/error.log
awatch /var/log/nginx/access.log
awatch /var/log/apache2/error.log
# Database
awatch /var/log/postgresql/postgresql-16-main.log
awatch /var/log/mysql/error.log
# Application / Docker
awatch /var/log/myapp/app.log
awatch /var/lib/docker/containers/<id>/<id>-json.log
Requirements
- Python 3.8 or higher
- Linux or macOS (Windows not supported โ
cursesis unavailable) - No third-party packages required
License
MIT License โ see LICENSE for details.
Author
Built by Ashish โ github.com/ashishnxt
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file awatch-1.0.0.tar.gz.
File metadata
- Download URL: awatch-1.0.0.tar.gz
- Upload date:
- Size: 16.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fc9760a7a08df5465ede883dc875366c90b1bf1e9dcaee0ea17248d96bfbb81
|
|
| MD5 |
024faf34ebecd6973a99c05bc5c6dcea
|
|
| BLAKE2b-256 |
3e9796e370b86e34aa0fb587ca54b0be9f6e20df82c2d3de22dd40ccaef0a7c1
|
File details
Details for the file awatch-1.0.0-py3-none-any.whl.
File metadata
- Download URL: awatch-1.0.0-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc5633d1be062ff0419e7c8d75434a4112e99327fd90a8637d314682cd9c34a0
|
|
| MD5 |
aa5a5dab9364e478aa4d62cc668a548e
|
|
| BLAKE2b-256 |
bb700df8f324c43d33dc34a25ac3703882d52dcc583f6c179d64b52c7d241d61
|