โ๏ธ AnubisWatch
The Judgment Never Sleeps
Zero-dependency, single-binary uptime and synthetic monitoring platform

๐ฏ What is AnubisWatch?
AnubisWatch is a zero-dependency, single-binary uptime monitoring platform built in pure Go. Inspired by the Egyptian god of the afterlife who weighed the hearts of the dead, AnubisWatch "weighs" your services' health with precision and authority.
Key Features
- ๐ฅ Zero Dependencies โ Only requires Go stdlib + minimal external packages
- ๐ฆ Single Binary โ Everything in one
anubis executable
- ๐ 10 Protocols โ HTTP/HTTPS, TCP, UDP, DNS, ICMP, SMTP, IMAP, gRPC, WebSocket, TLS
- โก Distributed โ Built-in Raft consensus for multi-node clusters
- ๐ Multi-Region โ Geographic region support with cross-region replication
- ๐ฌ Synthetic Monitoring โ Multi-step HTTP journeys with assertions & variable extraction
- ๐จ Beautiful Dashboard โ React 19 + Tailwind 4.1 embedded in binary
- ๐ค MCP-Native โ Built-in Model Context Protocol server for AI integration
- ๐ Rich Alerts โ Slack, Discord, Telegram, Email, PagerDuty, OpsGenie, SMS, Ntfy, WebHook
- ๐ท๏ธ Multi-Tenancy โ Workspace isolation with quotas and RBAC
- ๐ Status Pages โ Public status pages with custom domains and ACME
- ๐๏ธ Backup/Restore โ Full data export/import with compression
- ๐ Profiling โ Built-in performance profiling (CPU, heap, goroutines)
๐๏ธ Architecture
Terminology
AnubisWatch uses Egyptian mythology theming throughout:
| Term |
Meaning |
| Soul |
A monitored target (HTTP endpoint, TCP port, etc.) |
| Judgment |
A single check execution result |
| Verdict |
An alert decision based on judgment patterns |
| Jackal |
A probe node that performs health checks |
| Pharaoh |
The Raft leader in a cluster |
| Necropolis |
The distributed cluster |
| Feather |
The embedded B+Tree storage engine (CobaltDB) |
| Ma'at |
The alert engine (goddess of truth) |
| Duat |
The WebSocket real-time layer |
| Journey |
Multi-step synthetic monitoring |
Project Structure
AnubisWatch/
โโโ cmd/anubis/ # CLI entry point
โโโ internal/
โ โโโ api/ # REST, WebSocket, gRPC, MCP APIs
โ โโโ alert/ # Alert engine (Ma'at) with 9 dispatchers
โ โโโ auth/ # Authentication (local, OIDC, LDAP)
โ โโโ backup/ # Backup/restore functionality
โ โโโ cluster/ # Cluster coordination (Necropolis)
โ โโโ core/ # Domain types (Soul, Judgment, Verdict)
โ โโโ journey/ # Synthetic monitoring (Journeys)
โ โโโ probe/ # Protocol checkers (8 protocols)
โ โโโ profiling/ # Performance profiling (pprof)
โ โโโ raft/ # Raft consensus (Pharaoh)
โ โโโ region/ # Multi-region support
โ โโโ release/ # Release tooling
โ โโโ storage/ # CobaltDB B+Tree storage (Feather)
โ โโโ statuspage/ # Public status pages
โ โโโ version/ # Version management
โโโ scripts/ # Build and release scripts
โโโ web/ # React 19 + Tailwind 4.1 dashboard
๐ Comparison
| Feature |
AnubisWatch |
Uptime Kuma |
UptimeRobot |
Checkly |
| Self-Hosted |
โ
Yes |
โ
Yes |
โ SaaS only |
โ SaaS only |
| Single Binary |
โ
Go (zero deps) |
โ Node.js + npm |
โ N/A |
โ N/A |
| Protocol Support |
โ
8 protocols |
โ ๏ธ 5 protocols |
โ 1-2 protocols |
โ ๏ธ 2 protocols |
| Distributed Probes |
โ
Raft consensus |
โ Single node |
โ Cloud only |
โ ๏ธ SaaS multi-location |
| Synthetic Monitoring |
โ
Multi-step journeys |
โ No |
โ No |
โ
Yes (SaaS) |
| Embedded Dashboard |
โ
React 19 (compiled) |
โ ๏ธ Vue.js (separate) |
โ Web UI |
โ
Web UI |
| Embedded Storage |
โ
CobaltDB (encrypted) |
โ ๏ธ SQLite (plaintext) |
โ Cloud DB |
โ Cloud DB |
| Multi-Tenant |
โ
Workspace isolation |
โ Single tenant |
โ Single tenant |
โ Teams add-on |
| MCP Integration |
โ
Native |
โ No |
โ No |
โ No |
| Cluster Mode |
โ
Built-in Raft |
โ No clustering |
โ Cloud only |
โ Cloud only |
| Cost |
โ
100% Free (Apache 2.0) |
โ
Free (GPL) |
โ ๏ธ Freemium |
โ $29+/mo |
๐ Quick Start
Installation
# Linux/macOS (using install script)
curl -fsSL https://anubis.watch/install.sh | sh
# Or download from releases
wget https://github.com/AnubisWatch/anubiswatch/releases/latest/download/anubis-linux-amd64
chmod +x anubis-linux-amd64
mv anubis-linux-amd64 /usr/local/bin/anubis
# macOS with Homebrew (coming soon)
brew install anubiswatch/tap/anubis
Docker
# Pull from GHCR (GitHub Container Registry)
docker pull ghcr.io/anubiswatch/anubiswatch:latest
# Single node
docker run -d \
--name anubis \
-p 8443:8443 \
-v anubis-data:/var/lib/anubis \
ghcr.io/anubiswatch/anubiswatch:latest
# With custom config
docker run -d \
--name anubis \
-p 8443:8443 \
-v $(pwd)/anubis.yaml:/etc/anubis/anubis.yaml \
-v anubis-data:/var/lib/anubis \
ghcr.io/anubiswatch/anubiswatch:latest
Initialize & Run
# Create default configuration
anubis init
# Edit configuration
vim anubis.yaml
# Start server
anubis serve
# Access dashboard
open https://localhost:8443
๐ฎ CLI Usage
# Show version
anubis version
anubis version --json # JSON output
# Initialize configuration
anubis init
# Quick-add a monitor
anubis watch https://api.example.com --name "API"
# View current status
anubis judge
# Backup & Restore
anubis backup --output ./backup.tar.gz
anubis restore --input ./backup.tar.gz
# Server management
anubis serve --single # Single node mode
anubis serve --config ./anubis.yaml # Custom config
anubis status # Show server status
anubis logs --follow # View logs
anubis config validate # Validate config
anubis config show # Show current config
anubis export --format json # Export data
# Cluster management
anubis necropolis # Show cluster status
anubis summon 10.0.0.2:7946 # Add node
anubis banish jackal-02 # Remove node
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AnubisWatch Binary โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโ โ
โ โ Probe โ โ Raft โ โ API โ โ Dashboard โ โ
โ โ Engine โ โ Consensusโ โ Server โ โ (React 19) โ โ
โ โ โ โ โ โ โ โ embedded โ โ
โ โ 8 proto- โ โ Leader โ โ REST + โ โ Tailwind โ โ
โ โ col chk โ โ Electionโ โ gRPC + โ โ 4.1 + โ โ
โ โ โ โ Log Rep โ โ WebSocketโ โ shadcn/ui โ โ
โ โ โ โ State โ โ MCP Svr โ โ Lucide โ โ
โ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โโโโโโโโฌโโโโโโ โ
โ โ โ โ โ โ
โ โโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโ โ
โ โ CobaltDB Engine โ โ
โ โ Embedded Storage (B+Tree, WAL, MVCC) โ โ
โ โ Time-Series Optimized ยท AES-256-GCM Encryption โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Alert Dispatcher โ โ
โ โ Webhook ยท Slack ยท Discord ยท Telegram ยท Email(SMTP) โ โ
โ โ PagerDuty ยท OpsGenie ยท SMS(Twilio) ยท Ntfy.sh โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Distributed Cluster (Necropolis)
Every node in an AnubisWatch cluster is both a probe and a controller. Powered by Raft consensus:
- Pharaoh (Leader): Schedules checks, dispatches alerts
- Jackal (Follower): Executes checks, replicates state
- Auto-discovery via mDNS or gossip protocol
# Node 1 (becomes leader)
anubis serve --node-name jackal-01 --region eu-west --cluster
# Node 2 (joins cluster)
anubis serve --node-name jackal-02 --region us-east --cluster \
--join jackal-01:7946
# Node 3 (joins cluster)
anubis serve --node-name jackal-03 --region apac --cluster \
--join jackal-01:7946
๐ก Monitoring Protocols
| Protocol |
Description |
Example |
| HTTP/HTTPS |
Full HTTP checks with assertions |
Status codes, body, JSON path, schema |
| TCP |
Port checks with banner grab |
Connect + banner match |
| UDP |
Packet send/receive |
Hex payload support |
| DNS |
Resolution and propagation |
Multi-resolver checks |
| ICMP |
Ping with packet loss |
Latency stats, jitter |
| SMTP/IMAP |
Email server checks |
STARTTLS, AUTH |
| gRPC |
Health checks |
Custom metadata |
| WebSocket |
Realtime connection |
Subprotocols, ping/pong |
| TLS |
Certificate monitoring |
Expiry, cipher audit |
๐ง Configuration Example
server:
host: "0.0.0.0"
port: 8443
tls:
enabled: true
auto_cert: true
acme_email: "admin@example.com"
souls:
- name: "Production API"
type: http
target: "https://api.example.com/health"
weight: 30s # Check every 30s
http:
method: GET
valid_status: [200]
json_path:
"$.status": "ok"
feather: 500ms # Max latency
- name: "Database"
type: tcp
target: "db.example.com:5432"
weight: 15s
checks:
- name: "ops-slack"
type: slack
slack:
webhook_url: "${SLACK_WEBHOOK}"
verdicts:
rules:
- name: "Service Down"
condition:
type: consecutive_failures
threshold: 3
severity: critical
channels: ["ops-slack"]
๐จ Dashboard
The Hall of Ma'at dashboard is built with React 19 and embedded directly into the binary:
- Real-time WebSocket updates
- 90-day uptime heatmaps
- Response time sparklines
- Regional node map
- Dark/Light themes (Tomb Interior / Desert Sun)
๐ค MCP Integration
AnubisWatch includes a built-in MCP server for AI agent integration:
# List monitored targets
anubis_list_souls
# Get current status
anubis_get_soul_status api.example.com
# Trigger check
anubis_trigger_judgment api.example.com
๐ Test Coverage
| Package |
Coverage |
Status |
internal/core |
98.9% |
โ
|
internal/cluster |
90.0% |
โ
|
internal/alert |
89.3% |
โ
|
internal/statuspage |
88.7% |
โ
|
internal/dashboard |
87.5% |
โ
|
internal/journey |
86.7% |
โ
|
internal/api |
86.2% |
โ
|
internal/auth |
86.2% |
โ
|
internal/raft |
86.1% |
โ
|
internal/probe |
86.1% |
โ
|
internal/storage |
84.4% |
โ
|
internal/acme |
81.8% |
โ
|
internal/backup |
80.5% |
โ
|
internal/region |
78.2% |
โ
|
internal/version |
95.0% |
โ
|
internal/release |
85.0% |
โ
|
cmd/anubis |
77.3% |
โ
|
| Average |
86.0% |
โ
|
๐ฆ Development
Prerequisites
- Go 1.26+
- Node.js 22+ (for dashboard)
- Make (optional)
Quick Start
# Clone repository
git clone https://github.com/AnubisWatch/anubiswatch.git
cd anubiswatch
# Install Go dependencies
go mod download
# Install and build dashboard
cd web && npm ci && npm run build && cd ..
# Build binary
make build
# or
go build -o bin/anubis ./cmd/anubis
# Run tests
make test
# or
go test -race -coverprofile=coverage.out ./...
# Run locally
make dev
# or
./bin/anubis serve
๐บ๏ธ Roadmap
- Phase 1: Foundation (Go module, core types, config)
- Phase 2: Probe Engine (8 protocols)
- Phase 3: Raft Consensus (distributed cluster)
- Phase 4: Alert System (9 channels, escalation)
- Phase 5: API Layer (REST, WebSocket, gRPC, MCP)
- Phase 6: Dashboard (React 19, Hall of Ma'at)
- Phase 7: Advanced Features (multi-tenant, status page)
- Phase 8: Multi-Region & Backup (region support, backup/restore)
- Phase 9: Release Preparation (versioning, CI/CD, packaging)
- Phase 10: Enterprise Features (SSO, audit logs, compliance)
๐ License
AnubisWatch is licensed under the Apache License 2.0. See LICENSE for details.
Copyright 2026 Ersin Koรง โ ECOSTACK TECHNOLOGY Oร
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
๐ Acknowledgments
- Anubis: Egyptian god of the afterlife, who inspired this project
- Ma'at: Goddess of truth and justice, whose feather weighs against our metrics
- The Go Team: For the amazing standard library