Lightweight container monitoring & cost intelligence for developers
You're running Docker Compose or a handful of containers on a VPS. You have no visibility into which containers are eating resources, which are idle, or what your setup actually costs per month.
Datadog starts at $300/mo. Setting up Prometheus + Grafana takes half a day.
DockerWatch fills the gap — a 2-minute install that shows you real-time metrics and tells you exactly which containers are wasting money.
| Real-time metrics | CPU, memory, network I/O, disk I/O per container — every 30 seconds |
| Cost intelligence | Maps your usage to AWS EC2 pricing. Shows estimated monthly spend per container. |
| Idle detection | Flags containers costing money while doing nothing. Shows exact dollar savings. |
| Smart alerts | Threshold-based rules with Slack, email, or webhook delivery |
| One-line install | pip install dockerwatch-agent — up and running in under 2 minutes |
| Self-hostable | Full Docker Compose setup. Run everything on your own infrastructure. |
| Open source | MIT licensed. Audit the code, fork it, contribute. |
- Sign up at docker-watch.vercel.app
- Create a workspace → add a server → copy your API key
- Run on any server with Docker:
pip install dockerwatch-agent
dockerwatch-agent start --api-key=YOUR_KEY --api-url=https://dockerwatch.mooo.comYour containers appear in the dashboard within 30 seconds. Free tier includes 1 server, 5 containers, and 24h of history — no credit card required.
git clone https://github.com/myselfkunal/dockerwatch.git
cd dockerwatch
# Configure
cp backend/.env.example backend/.env
# Edit backend/.env with your SECRET_KEY and DB settings
# Start backend + database
cd backend
docker compose up -d
alembic upgrade head
uvicorn src.app.main:app --reload
# Start frontend
cd ../frontend
cp .env.example .env.local
# Set NEXT_PUBLIC_API_URL=http://localhost:8000
npm install && npm run devOpen http://localhost:3000 and follow the getting started guide.
Your server DockerWatch
───────────────────────────────── ──────────────────────────────────
┌──────────────────────────────┐ ┌────────────────────────────────┐
│ Docker daemon │ │ FastAPI backend │
│ (your containers) │ │ │
│ │ │ │ ┌──────────────────────────┐ │
│ ▼ │ │ │ TimescaleDB │ │
│ ┌───────────────────────┐ │ │ │ (metrics hypertable) │ │
│ │ dockerwatch-agent │───┼────▶│ └──────────────────────────┘ │
│ │ polls docker stats │ │HTTPS│ ┌──────────────────────────┐ │
│ │ every 30 seconds │ │ │ │ Cost estimation engine │ │
│ └───────────────────────┘ │ │ │ (AWS EC2 price mapping) │ │
└──────────────────────────────┘ │ └──────────────────────────┘ │
│ ┌──────────────────────────┐ │
│ │ Alert worker │ │
│ │ (APScheduler, 60s) │ │
│ └──────────────────────────┘ │
└──────────────┬─────────────────┘
│ REST API
┌──────────────▼─────────────────┐
│ Next.js dashboard │
│ docker-watch.vercel.app │
│ │
│ Overview · Cost · Alerts │
└────────────────────────────────┘
The agent is the only component that runs on your servers. It needs read-only access to /var/run/docker.sock and outbound HTTPS to the backend. Nothing else.
![]() Container overview with live status |
![]() Cost breakdown with savings opportunities |
![]() Time-series charts — CPU, memory, network |
![]() Alert rules with Slack + email delivery |
Agent → Python 3.11 · Docker SDK · httpx · APScheduler
Backend → FastAPI · SQLAlchemy 2.0 (async) · TimescaleDB · Alembic
Frontend → Next.js 14 (App Router) · Tailwind CSS · Recharts · shadcn/ui
Alerts → APScheduler · Slack webhooks · Resend (email)
Billing → Razorpay subscriptions
Infra → Azure VPS · Nginx · Let's Encrypt · Vercel · Docker Compose
dockerwatch/
├── agent/ # Python agent — runs on customer servers
│ └── src/dockerwatch_agent/
│ ├── collector.py # Docker stats collection + CPU/mem math
│ ├── sender.py # HTTP client with retry + backoff
│ ├── agent.py # APScheduler polling loop
│ └── cli.py # Click CLI entrypoint
│
├── backend/ # FastAPI backend
│ └── src/app/
│ ├── api/routes/ # auth, workspaces, ingest, metrics, cost, alerts, billing
│ ├── db/ # SQLAlchemy models, Alembic migrations
│ ├── services/ # cost engine, alert worker, Razorpay
│ └── core/ # config, JWT, password hashing
│
├── frontend/ # Next.js 14 dashboard
│ └── app/
│ ├── dashboard/ # overview, cost, alerts, billing, settings
│ └── auth/ # login, register
│
└── docs/screenshots/ # UI screenshots
Full interactive docs available at https://dockerwatch.mooo.com/docs (development) or your self-hosted /docs endpoint.
Key endpoints:
POST /auth/register Create account
POST /auth/login Get JWT token
POST /ingest Agent → backend (API key auth)
GET /workspaces/{id}/servers List servers + containers
GET /containers/{id}/metrics?range=1h|6h|24h|7d|30d Time-series metrics
GET /workspaces/{id}/cost Cost breakdown + savings
POST /alert-rules/workspaces/{id}/alert-rules Create alert rule
GET /alert-rules/workspaces/{id}/alert-events Alert history
POST /billing/subscribe Start Razorpay subscription
POST /billing/webhook Razorpay webhook handler
pip (recommended)
pip install dockerwatch-agent
dockerwatch-agent start --api-key=YOUR_KEY --api-url=https://dockerwatch.mooo.comDocker
docker run -d \
--name dockerwatch-agent \
-e DOCKERWATCH_API_KEY=YOUR_KEY \
-e DOCKERWATCH_API_URL=https://dockerwatch.mooo.com \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--restart unless-stopped \
ghcr.io/myselfkunal/dockerwatch-agent:latestDocker Compose sidecar
services:
dockerwatch-agent:
image: ghcr.io/myselfkunal/dockerwatch-agent:latest
environment:
- DOCKERWATCH_API_KEY=YOUR_KEY
- DOCKERWATCH_API_URL=https://dockerwatch.mooo.com
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stoppedRun in background (no Docker)
nohup dockerwatch-agent start --api-key=YOUR_KEY --api-url=https://dockerwatch.mooo.com &| Plan | Price | Servers | History | Alerts |
|---|---|---|---|---|
| Free | ₹0/mo | 1 | 7 days | Email only |
| Pro | ₹999/mo | 5 | 90 days | Slack + email |
| Team | ₹4,100/mo | Unlimited | 1 year | All channels + API |
Paid plans launching soon — join the waitlist for early access + 30 days free.
- Docker Compose monitoring
- Cost estimation engine (AWS EC2 pricing)
- Idle container detection
- Slack + email + webhook alerts
- Razorpay subscription billing
- pip-installable agent on PyPI
- Kubernetes / pod-level metrics
- Go rewrite of agent (single binary, zero deps)
- GCP + Azure + DigitalOcean pricing tables
- Prometheus
/metricsexport endpoint - ARM agent support (Raspberry Pi, Graviton)
- Weekly cost summary email
- Mobile app
Contributions are welcome. See CONTRIBUTING.md.
# Fork + clone
git clone https://github.com/YOUR_USERNAME/dockerwatch.git
# Create branch
git checkout -b feat/your-feature
# Make changes, test locally, open PR against mainAreas actively looking for help:
- Go agent — single binary, no Python dependency
- Cloud pricing tables — GCP, Azure, DigitalOcean in
backend/src/app/services/cost.py - Kubernetes support — pod metrics via k8s API
MIT — use it however you want.
Built by Kunal Shaw
If DockerWatch saved you money on infra, give it a ⭐




