Skip to main content

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, or DEBUG using 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 โ€” curses is unavailable)
  • No third-party packages required

License

MIT License โ€” see LICENSE for details.


Author

Built by Ashish โ€” github.com/ashishnxt

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

awatch-2.0.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

awatch-2.0.0-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file awatch-2.0.0.tar.gz.

File metadata

  • Download URL: awatch-2.0.0.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for awatch-2.0.0.tar.gz
Algorithm Hash digest
SHA256 7edbd7db7e54e70c1f72a7f8cbe0beeb4841077c105ed197af111068115a78d3
MD5 25ccf43adbce8c8b0aebe3a7e3e6af75
BLAKE2b-256 f164dd1b647c0b7aba4d76b0723de52bb8c2270634b2def255c64452b71fe417

See more details on using hashes here.

File details

Details for the file awatch-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: awatch-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for awatch-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 789aff464b52cea7f4a8ab1cbfedb87600987facca2a4d4b3242d7667de4f725
MD5 1522a6c00f50d1d8e76730585d62068c
BLAKE2b-256 26761a6ae4dc1e42cd2b58f655d944f4ee5b58b543a5da52ad2677ca0756d998

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page