anubiswatch

module
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2026 License: Apache-2.0

README ยถ

โš–๏ธ AnubisWatch

AnubisWatch

The Judgment Never Sleeps

Zero-dependency, single-binary uptime and synthetic monitoring platform

CI Release Go Report Card License Docker


๐ŸŽฏ 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

anubis.watch ยท anubiswatch.com

The Judgment Never Sleeps โš–๏ธ

Directories ยถ

Path Synopsis
cmd
anubis command
internal
api
backup
Package backup provides backup and restore functionality for AnubisWatch data
Package backup provides backup and restore functionality for AnubisWatch data
profiling
Package profiling provides runtime profiling and performance monitoring
Package profiling provides runtime profiling and performance monitoring

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL