Skip to main content

awatch

A.W. Watch — self-hosted FastAPI monitoring with a built-in dashboard. No Grafana, no cloud account. Data stays on your machine.

from fastapi import FastAPI
from monitorit import awatch

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

Install

PyPI: monitorit · Import: from monitorit import awatch

Python 3.10+ recommended. Use a virtualenv:

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

From GitHub (until / besides PyPI)

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

From a local clone (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.AWatch)"

Full details: docs/installation.md.


Usage

  1. Attach awatch to your FastAPI app (see snippet above).
  2. Run with uvicorn:
uvicorn your_module:app --reload
  1. Open 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 — endpoints, Apdex, timelines
  • Request inspector — headers, bodies, logs, exceptions, cURL export
  • Opt-in body/header logging with default secret masking
  • Consumersawatch.set_consumer() for groups & individuals
  • Traffic labels — categories 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

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

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

Download files

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

Source Distribution

monitorit-0.1.0.tar.gz (61.0 kB view details)

Uploaded Source

Built Distribution

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

monitorit-0.1.0-py3-none-any.whl (80.2 kB view details)

Uploaded Python 3

File details

Details for the file monitorit-0.1.0.tar.gz.

File metadata

  • Download URL: monitorit-0.1.0.tar.gz
  • Upload date:
  • Size: 61.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for monitorit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 66262e8b611b2a53a40bc254039724c6c36813d028a3819f3229d1a2f77ff85d
MD5 dcb28fbb9d89037681e0a5f5f22bc5ad
BLAKE2b-256 5441e71279072e96704ff63410c3e0ffa38de6d444c84ee9fe8aaebfec8881cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for monitorit-0.1.0.tar.gz:

Publisher: publish.yml on Abdulwadood39/awatch

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

File details

Details for the file monitorit-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: monitorit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 80.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for monitorit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8f982d6652e161bd3801c13affb9cdff8a037ff79f2bc8073712ff886bde098a
MD5 8eb17a34b581fbcc5fd024abf22b119c
BLAKE2b-256 0e48b90a93178ce833d16566f5e3aa392cd28a6b3c2bc3c29381a21cb8b40f31

See more details on using hashes here.

Provenance

The following attestation bundles were made for monitorit-0.1.0-py3-none-any.whl:

Publisher: publish.yml on Abdulwadood39/awatch

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