Skip to main content

monitorit (awatch)

Self-hosted FastAPI monitoring with a built-in dashboard — traffic, errors, Apdex, request logs, consumers, uptime, and alerts.

No Grafana. No cloud account. No phone-home telemetry. Metrics stay on your machine in SQLite.

PyPI: monitorit · Import: from monitorit import awatch · Dashboard: /__awatch

from fastapi import FastAPI
from monitorit import awatch

app = FastAPI()
awatch.AWatch(app, env="dev")  # → http://127.0.0.1:8000/__awatch

A lightweight, privacy-first alternative to hosted API analytics (e.g. Apitally) and a simpler path than Prometheus + Grafana for single-app FastAPI services.


Why monitorit?

Need monitorit
FastAPI request monitoring dashboard Built-in at /__awatch
One-line setup awatch.AWatch(app)
Self-hosted / on-prem Local SQLite (default)
Request inspector Opt-in headers, bodies, logs, cURL export
Consumer analytics awatch.set_consumer(...)
Alerts Email, Slack, Discord, webhook
Secret safety Masking + path excludes by default

Install

Python 3.10+ recommended.

python3 -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install -U pip
pip install monitorit

From GitHub

pip install "git+https://github.com/Abdulwadood39/awatch.git"

Editable / contributing

git clone https://github.com/Abdulwadood39/awatch.git
cd awatch
pip install -e ".[dev]"

Verify

python -c "from monitorit import awatch; print(awatch.__version__, awatch.AWatch)"

Full details: docs/installation.md.


Quick start

  1. Attach awatch to your FastAPI app (snippet above).
  2. Run with uvicorn:
uvicorn your_module:app --reload
  1. Open the FastAPI monitoring dashboard: http://127.0.0.1:8000/__awatch.

Try the demos in this repo

pip install -e ".[dev]"
uvicorn examples.basic_app:app --reload
curl http://127.0.0.1:8000/
curl -X POST http://127.0.0.1:8000/items \
  -H 'Content-Type: application/json' \
  -d '{"name":"gadget","price":9.5}'
curl http://127.0.0.1:8000/boom

Production auth

env="prod" requires an auth_token (or auth_dependency):

import os
from monitorit import awatch

awatch.AWatch(
    app,
    env="prod",
    auth_token=os.environ["AWATCH_TOKEN"],
    allow_ui_config=False,
)

Unlock the UI with ?token=... or the in-browser Unlock dialog. More: docs/usage.md.


Features

  • Traffic / Errors / Performance — per-endpoint stats, Apdex, timelines
  • Request inspector — headers, bodies, correlated logs, exceptions, cURL export
  • Opt-in body/header logging with default secret masking
  • Consumers — awatch.set_consumer() for individuals and groups
  • Traffic labels — categories defined in code
  • 422 heatmaps — which Pydantic fields fail validation
  • Do not track — exclude sensitive paths (code or Settings)
  • Uptime — heartbeat + synthetic checks + external ping
  • Alerts — triggers in code → email / Slack / Discord / webhook
  • Settings UI — SMTP, excludes, uptime, Apdex (lockable)
  • Auth gate for production dashboards
  • Quiet access logs — dashboard polls do not spam uvicorn (default on)
  • Retention controls — age + row-cap prune (default 7 days / 10k rows)
  • Paginated request logs — lightweight list payloads; full detail on click
  • Outbound HTTP inspector — linked httpx calls under each inbound request
  • Postgres / MySQL — optional storage backends (monitorit[postgres|mysql])

Documentation

Doc Topic
docs/ Index
Installation pip / venv / editable
Usage Integrate & run
Configuration Options, Settings lock, excludes
Dashboard Tabs & filters
Consumers awatch.set_consumer()
Categories Traffic labels
Alerts Triggers
Privacy Masking & threat model
Publishing PyPI releases

Contributing

Contributions are welcome — bugs, docs, tests, dashboard UX, and features.

  1. Open an issue for ideas or bugs
  2. Fork, branch, and open a PR
  3. Run pytest before submitting

Good first areas: documentation polish, more tests, Postgres storage, alert channels, dashboard UI.


Development

pip install -e ".[dev]"
pytest
uvicorn examples.basic_app:app --reload

Package layout: src/monitorit/awatch/ (core, capture, privacy, analytics, storage, health, triggers, api, dashboard).



License

MIT © Abdulwadood

Metadata

Release files for monitorit 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for monitorit 0.2.2
File Size Uploaded Provenance Actions
monitorit-0.2.2.tar.gz 86.4 kB With provenance Details for monitorit-0.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for monitorit 0.2.2
File Interpreter ABI Platform Actions
monitorit-0.2.2-py3-none-any.whl Python 3 none any Details for monitorit-0.2.2-py3-none-any.whl

Total release size: 194.9 kB

Release files / monitorit-0.2.2.tar.gz

Download URL monitorit-0.2.2.tar.gz
Size 86.4 kB
Tags Source
SHA-256 checksum
How to use checksums
aea3889b0dd0954eda05fe414d7e6c933225ef76ed94e84c31c6b82f161ceb1c
BLAKE2b-256 checksum
How to use checksums
430beb2d16b46f65bc26902c0f5bf139f46bd2be9c73b3e8f1579ae3cf78d695
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release files / monitorit-0.2.2-py3-none-any.whl

Download URL monitorit-0.2.2-py3-none-any.whl
Size 108.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d3eb495cb0e943da149efe6b568fb372617367ca1117e52717be2402bfa1b46f
BLAKE2b-256 checksum
How to use checksums
df5f0668e6d36355e3286a86709144faeb71bf87cbe4af5f416bd67fd832006c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Security for monitorit 0.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for monitorit-0.2.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page