Skip to main content

A federate, offline-friendly modular dashboard and documentation system for homelabs and Linux computers

Project description

monitor@/monitorat masthead that shows the french IPA phonetics and the tagline 'a system for observing and documenting status' and an icon with a monitor and superimposed at-character

[ demo ]

Monitorat is a federated dashboard and documentation system.

Its philosophy is to make system monitoring and documentation continuous, much like the way tables and figures are integrated in journal articles or Wikipedia.

Available widgets:

Widgets have a general, self-contained structure where both API and UI are straightforward to create.

~/.config/monitorat/widgets/
└── my-widget
    ├── api.py
    ├── index.html
    └── app.js

Documentation is handled through the Wiki widget. Each document snippet added is a new widget instance. This document and any others you add to your wiki will be rendered in GitHub-flavored markdown via markdown-it. `

Gallery

It's best to check out the demo which is a fully interactive version of the application you could be running on your machines. Screenshots of the demo are compiled below.

Features

  • Beautiful documentation for your Homelab and media servers.
  • Completely headless and works offline.
  • Responsive design for mobile and desktop, with light and dark modes.
  • Track how hot your CPU gets over the course of the day.
  • Be alerted when under extremely high load.
  • Keep a record of internet speedtests even when AFK.
  • List all your reverse-proxied services with offline-friendly bookmarks.
  • Even runs on Raspberry Pi 2/3 w/ Pi-Hole, Unraid, and other homelab systems.
  • Has federation: you can monitor services, metrics data, and documentation across many machines from a central command.

Installation

PyPI

Try the demo in 3 seconds:

uv tool install monitorat && monitorat demo

Then open http://localhost:6100.

See: Package Install for installing from PyPI with pip or uv.

Docker

See: Docker for installation in a container.

Source Install

See: Source Install for git-based installations or deployments to /opt.


The Dashboard

Open http://localhost:6161, or your specified port, or configure through a reverse proxy.

Configuration

These are the basic monitorat settings for your system, assuming you want to put all icons, data and the config file in ~/.config/monitorat/ which is the default location.

site:
  name: "@my-nas"
  title: "Dashboard @my-nas"

paths:
  data: data/
  img: img/  # or /home/user/.config/monitorat/img/

widgets: { ... }

# privacy: { ... }
# alerts: { ... }
# notifications: { ... }

Widgets

monitorat has an extensible widget system. You can add any number of widgets to your dashboard multiple times over, re-order them, and enable/disable any you don't need. You can add more widgets from others in ~/.config/monitorat/widgets/.

widgets:
  enabled:             # dashboard positions: from top to bottom
    - services
    - services-wiki    # type: wiki
    - metrics
    - metrics-wiki     # type: wiki
    - # reminders      # '#' disables this widget
    - network
    - speedtest
    - my-widget        # in ~/.config/monitorat/widgets/

Each widget can be configured in its own YAML block. To configure a widget in its own file,

includes:
  - "/home/user/.config/monitorat/widgets/my-widget.yaml"

or do this for every widget through config snippets:

includes:
  - include/services.yaml
  - include/metrics.yaml
  - include/reminders.yaml
  - include/network.yaml
  - include/speedtest.yaml
  - include/my-widget.yaml
  - # ... wikis, user widgets, etc
Making your own

They are also quite easy to build. An example of a widget built with Codex in 12 minutes:

Services

The Service Status widget is a simple display to show what systemd services, timers, and Docker containers are running or have failed. Demo

You can configure the service tiles to have both your URL (or WAN IP) and a local address (or LAN IP) for use offline. monitorat is completely encapsulated and works offline even when internet is down.

Wiki

Some widgets you may want to use more than once. For two markdown documents ("wikis"), use type: wiki. wiki: <title> may only be used once. Demo

Changing widget order or enabling/disabling widgets is rather straightforward.

widgets:
  enabled: 
    - network
    - network-wiki
    - services
    - services-wiki
    - metrics
    - speedtest
    - ...

monitorat uses GitHub-flavored markdown

System Metrics

Metrics provides an overview of system performance, including CPU, memory, disk and network usage, and temperature over time. Data is logged to metrics.csv. Demo

Speedtest

The Speedtest widget allows you to keep a record of your internet performance over time. It does not perform automated runs. Demo

Network

The Network widget may be the most specific. This example uses ddclient-style generated logs. Demo

The network widget is best used on machines with continuous uptime. You might even keep monitorat running on your pi-hole.

Reminders

The Reminders widget allows you to set reminders for system chores, login/key change reminders, and other one-off chirps. Demo

Reminders are facilitated by Apprise (see below).

`

Privacy

The privacy mask helps share your setup online without exposing personal information. Those are just string replacements; add as many as you like.

privacy:
  replacements:
    my-site.org: example.com
    my-hostname: masked-hostname
    ...
  mask_ips: true

Running

monitorat config

will print the runtime config with these masks applied.

Alerts

Alerts are tied to system metrics, where you set a threshold and a message for each event.

Alerts example configuration
alerts:
  cooldown_minutes: 60  # Short cooldown for testing
  rules:
    high_load:
      threshold: 2.5    # load average (e.g., the '1.23' in 1.23 0.45 0.06)
      priority: 0       # normal priority
      message: High CPU load detected
    high_temp:
      threshold: 82.5   # celsius
      priority: 1       # high priority  
      message: High temperature warning
    low_disk:
      threshold: 95     # percent
      priority: 0       # normal priority
      message: Low disk space warning

Notifications

The notifications system uses Apprise to notify through practically any service, via apprise URLs.

notifications:
  apprise_urls:
    - "pover://abscdefghijklmnopqrstuvwxyz1234@4321zyxwvutsrqponmlkjihgfedcba"
    - "mailto://1234 5678 9a1b 0c1d@sent.com?user=main@fastmail.com&to=alias@sent.com"
    - # more apprise urls if needed...

Contributors

= roadmap

License

GPLv3

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

monitorat-0.10.5.tar.gz (3.4 MB view details)

Uploaded Source

Built Distribution

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

monitorat-0.10.5-py3-none-any.whl (3.5 MB view details)

Uploaded Python 3

File details

Details for the file monitorat-0.10.5.tar.gz.

File metadata

  • Download URL: monitorat-0.10.5.tar.gz
  • Upload date:
  • Size: 3.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for monitorat-0.10.5.tar.gz
Algorithm Hash digest
SHA256 c6b8c2c7355f70b0063e15e7b3a4156263ccf7d469a0b79f9377b44ea6bc7921
MD5 cabc3b8f1a64483a1e854ffef61428f1
BLAKE2b-256 d7c9bca7eae2a580b5b4609020b0f97ae038c8bc364cba754057f3d3b43ac077

See more details on using hashes here.

Provenance

The following attestation bundles were made for monitorat-0.10.5.tar.gz:

Publisher: publish.yml on brege/monitorat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file monitorat-0.10.5-py3-none-any.whl.

File metadata

  • Download URL: monitorat-0.10.5-py3-none-any.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for monitorat-0.10.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5e7611e1a8e9f2152015feb06c0d6eb63f432df3473d3720e1583c3e347885d9
MD5 d3171e8d83f989abc615694ad2872967
BLAKE2b-256 bcf6a08595fd4ba31c92f493a7020e22c4b89ac0a2f068c18e9c03103e361c27

See more details on using hashes here.

Provenance

The following attestation bundles were made for monitorat-0.10.5-py3-none-any.whl:

Publisher: publish.yml on brege/monitorat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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