Skip to content

Jakeasaurus/lazystatus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

lazystatus

β–ˆβ–ˆβ•—      β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•— β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•—   β–ˆβ–ˆβ•—β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β•šβ•β•β–ˆβ–ˆβ–ˆβ•”β•β•šβ–ˆβ–ˆβ•— β–ˆβ–ˆβ•”β•β–ˆβ–ˆβ•”β•β•β•β•β•β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•—β•šβ•β•β–ˆβ–ˆβ•”β•β•β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ•”β•β•β•β•β•
β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘  β–ˆβ–ˆβ–ˆβ•”β•  β•šβ–ˆβ–ˆβ–ˆβ–ˆβ•”β• β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—
β–ˆβ–ˆβ•‘     β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘ β–ˆβ–ˆβ–ˆβ•”β•    β•šβ–ˆβ–ˆβ•”β•  β•šβ•β•β•β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•”β•β•β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘β•šβ•β•β•β•β–ˆβ–ˆβ•‘
β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•—   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘  β–ˆβ–ˆβ•‘   β–ˆβ–ˆβ•‘   β•šβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•”β•β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ•‘
β•šβ•β•β•β•β•β•β•β•šβ•β•  β•šβ•β•β•šβ•β•β•β•β•β•β•   β•šβ•β•   β•šβ•β•β•β•β•β•β•   β•šβ•β•   β•šβ•β•  β•šβ•β•   β•šβ•β•    β•šβ•β•β•β•β•β• β•šβ•β•β•β•β•β•β•

A modern TUI for monitoring status pages

Go MIT License Bubble Tea


Monitor multiple status pages (GitHub, Atlassian, Cloudflare, etc.) in a beautiful terminal interface. Built with Charm's Bubble Tea framework for smooth, flicker-free rendering.

Features

  • πŸ” Smart Status Detection - Auto-detects Statuspage.io JSON API or falls back to HTML parsing
  • 🎨 Color-Coded Status - Green (operational), Blue (maintenance), Yellow (degraded), Red (disruption)
  • ⚑ Auto-Refresh - Configurable per-service refresh intervals (default: 30s)
  • πŸ“Š Detailed View - Incidents, maintenance windows, timestamps, and resolution status
  • ⌨️ Vim-Style Navigation - Efficient keyboard shortcuts for power users
  • πŸ’Ύ Persistent Config - Services saved to ~/.lazystatus/config.json
  • πŸ”„ Real-Time Updates - Live countdown timers and status changes
  • 🌐 Proxy Support - Respects http_proxy environment variables (Zscaler compatible)

Installation

Homebrew (macOS)

# Add the tap and install
brew tap jakeasaurus/tap
brew install lazystatus

# Or in one line
brew install jakeasaurus/tap/lazystatus

Build from Source

git clone https://github.com/jakeasaurus/lazystatus.git
cd lazystatus
go build -o lazystatus
./lazystatus

Quick Install

go install github.com/jakeasaurus/lazystatus@latest

Usage

# Start the TUI
lazystatus

# Show version
lazystatus --version

# Show help
lazystatus --help

Key Bindings

Navigation

  • j or ↓ - Move down
  • k or ↑ - Move up
  • g or Home - Go to top
  • G or End - Go to bottom

Service Actions

  • a - Add new service
  • e - Edit selected service
  • d - Delete selected service
  • r - Refresh all services

Other

  • ? - Show/hide help
  • q or Ctrl+C - Quit

Input Mode

  • Tab - Next field
  • Shift+Tab - Previous field
  • Enter - Submit
  • Esc - Cancel

Configuration

Services are stored in ~/.lazystatus/config.json:

{
  "services": [
    {
      "name": "GitHub",
      "url": "https://www.githubstatus.com",
      "refresh_interval": 30,
      "last_checked": "2025-10-20T15:20:00Z",
      "current_status": "operational"
    },
    {
      "name": "Cloudflare",
      "url": "https://www.cloudflarestatus.com",
      "refresh_interval": 60,
      "last_checked": "2025-10-20T15:20:00Z",
      "current_status": "operational"
    }
  ],
  "settings": {
    "default_refresh_interval": 30
  }
}

Supported Status Pages

Auto-Detection

HTML Fallback

For non-Statuspage.io sites, lazystatus uses keyword detection:

  • "operational" β†’ Operational
  • "degraded" / "partial outage" β†’ Degraded Performance
  • "major outage" / "major disruption" β†’ Major Disruption
  • "maintenance" / "scheduled" β†’ Planned Maintenance

Status Color Legend

  • 🟒 Green (#04B575) - Operational
  • πŸ”΅ Blue (#5FAFFF) - Planned Maintenance
  • 🟑 Yellow (#FFAF5F) - Degraded Performance
  • πŸ”΄ Red (#FF5F87) - Major Disruption / Connection Error

Adding a Service

  1. Press a to open the add service dialog
  2. Enter:
    • Name: Display name (e.g., "GitHub")
    • URL: Status page URL (e.g., "https://www.githubstatus.com")
    • Interval: Refresh interval in seconds (5-86400)
  3. Press Enter to save
  4. Service will be fetched immediately

Editing a Service

  1. Navigate to the service with j/k
  2. Press e to edit
  3. Modify fields with Tab / Shift+Tab
  4. Press Enter to save

Deleting a Service

  1. Navigate to the service with j/k
  2. Press d to delete
  3. Confirm with Enter or cancel with Esc

Proxy Configuration

lazystatus respects standard HTTP proxy environment variables:

export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
lazystatus

This works with corporate proxies like Zscaler.

Development

Requirements

  • Go 1.21 or later
  • Terminal with 24-bit color support (recommended)

Dependencies

Building

go mod tidy
go build -o lazystatus

Testing

Test with real status pages:

./lazystatus
# Press 'a' to add:
# - GitHub: https://www.githubstatus.com
# - Atlassian: https://status.atlassian.com
# - Cloudflare: https://www.cloudflarestatus.com

Architecture

  • main.go - CLI entrypoint
  • status.go - Domain model and service manager with JSON persistence
  • app.go - Bubble Tea model with TUI logic
  • internal/fetch/fetch.go - HTTP client with Statuspage.io JSON parser and HTML fallback

Why lazystatus?

  • Fast - Minimal overhead, instant startup
  • Simple - No complex configuration
  • Beautiful - Modern TUI with smooth animations
  • Reliable - Robust parsing with fallbacks
  • Portable - Single binary, no dependencies

Future Enhancements

  • Desktop notifications on status changes (macOS)
  • Sorting/filtering by status severity
  • Export incidents to JSON/CSV
  • Import services from file
  • Per-service pause/resume

Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

License

MIT License - See LICENSE file for details.

Credits

Inspired by lazygit and built with ❀️ using Charm tools.


Made with ❀️ and Go

About

TUI for monitoring status pages

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages