EyeNine

Vigilance without visual noise.

A lightweight, local-first endpoint uptime and SLA monitor for web URLs, network devices, and services.

v0.2.1 source · Python 3.11+ · Linux, Windows, macOS · MIT

An open-source project by Fox Stellar Development
Dark-theme dashboard captured directly from EyeNine’s visual-smoke environment

The problem

Monitoring can be useful without becoming infrastructure.

Developers, home-lab operators, small teams, and anyone responsible for a handful of important services often need more than a ping—but less than a hosted observability platform.

EyeNine watches HTTP, TCP, ICMP, and DNS checks, records recent history locally, and surfaces incident and recovery states. It intentionally does not replace distributed tracing, server-side metrics, or an always-on monitoring daemon.

That boundary keeps the first release focused: clear local monitoring while the application is running, with data and behavior the user can understand.

Product goals

Four outcomes shaped the release.

Clear at-a-glance status

Every feature and visual decision is measured against this outcome before it earns a place in the product.

Useful recent history

Every feature and visual decision is measured against this outcome before it earns a place in the product.

Straightforward endpoint configuration

Every feature and visual decision is measured against this outcome before it earns a place in the product.

Local, understandable data ownership

Every feature and visual decision is measured against this outcome before it earns a place in the product.

Key decisions

Tradeoffs made visible.

A project story is more useful when it explains why the product looks and behaves this way.

01

Desktop-native rather than hosted

The goal was focused monitoring without another service account, server, or subscription. A local Qt application keeps setup and ownership legible. The tradeoff is explicit: monitoring runs only while EyeNine is active.

02

Two views for two scanning modes

The standard dashboard explains each endpoint. Matrix view compresses the same history into aligned rows for faster comparison. Both retain keyboard descriptions and recent failure context.

03

Local persistence and straightforward exports

SQLite provides durable history without an external database. Retention can be scheduled or disabled, and CSV/JSON exports use explicit date ranges and descriptive filenames.

04

Failure reasons remain visible

A red block is not enough. Recent checks explain connection failures, TLS problems, missing response content, and other causes so status can lead to action.

05

Themes and platform behavior are release work

Light and dark themes, native notifications, tray behavior, pointer cursors, focus handling, and small-window layouts are treated as part of correctness—not optional polish.

Interface gallery

The working product, not a mockup.

Each frame was captured from the current source with realistic seeded records in the application's repeatable QA harness.

Validation evidence

The less glamorous work is part of the product.

Visual behavior

Major screens are rendered in both themes at minimum and standard window sizes, with visible text scanned for clipping.

Interaction details

Keyboard focus, pointer cursors, wheel behavior, view transitions, copy/edit actions, and error reasons are exercised.

Real boundaries

TLS failures, retention behavior, exports, alert incidents, tray availability, and known platform limits are documented.

  • 980 × 700 minimum
  • 1180 × 820 standard
  • light + dark
  • keyboard focus
  • export ranges
  • TLS failure states
  • notification incidents

Technology

A stack chosen for the product.

Python and PySide6 provide a cross-platform desktop application with native windowing and notification paths. SQLite keeps local history durable and portable. Platform packaging remains explicit because Qt applications are built on each target OS.

  • Python
  • PySide6 / Qt
  • SQLite
  • Native notifications

Project actions

Run it, inspect it, or report what you find.

EyeNine is public work. The source, setup instructions, issue tracker, and release boundaries are open for inspection.