https://github.com/orchestrator-dev/octo
https://github.com/orchestrator-dev/octo
Last synced: 22 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/orchestrator-dev/octo
- Owner: orchestrator-dev
- License: other
- Created: 2026-02-16T21:32:17.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-02-20T22:36:31.000Z (4 months ago)
- Last Synced: 2026-02-21T04:21:12.176Z (4 months ago)
- Language: TypeScript
- Size: 5.22 MB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# π Octo
**The Intelligent, Distributed HTTP Monitoring Platform**

[](https://golang.org)
[](LICENSE)
[](Dockerfile)
[](#)
Octo is a modern, high-performance monitoring solution designed for developers and SREs who need reliability without the bloat. Built with **Go**, **React**, and **TimescaleDB**, Octo delivers real-time insights, historical analysis, and seamless configuration management in a lightweight package.
---
## π Key Features
* **β‘ High-Performance Monitoring**: Execute thousands of concurrent checks with minimal resource footprint.
* **π Real-Time Dashboard**: Visualize uptime, latency, and health status instantly via a modern React UI.
* **π SSL/TLS Monitoring**: Automatically track certificate expiration and get alerted before they expire.
* **πΎ Long-Term Storage**: Leverage **TimescaleDB** for powerful time-series queries and historical data retention.
* **βοΈ UI-Based Configuration**: manage your endpoints directly from the browser with a full-featured editor.
* **π¨ Alerting System**: Flexible alerting via Webhooks (Slack, Discord, PagerDuty) with tag-based routing.
* **π οΈ Hot-Reload**: Update your monitoring targets on the fly via API or UIβno restarts required.
* **π³ Container Native**: Deploy effortlessly with Docker or Podman.
* **π Multi-Satellite Monitoring**: Run distributed checks from multiple geographic locations to verify global availability and latency.
* **π€ AI-Ready (MCP)**: Native integration with the Model Context Protocol (MCP) to allow AI agents to manage and query Octo.
* **π₯ Multi-User & RBAC**: Secure local authentication with `admin` and `viewer` roles to protect your configuration.
---
## π Multi-Satellite Monitoring (New!)
Octo now supports **Distributed Monitoring** via Satellites. Deploy lightweight satellite nodes in different regions (e.g., AWS us-east-1, DigitalOcean fra1) to:
* **Verify Global Availability**: Ensure your service is accessible from around the world.
* **Monitor Latency**: Track response times from different geographic edge locations.
* **Geo-Redundancy**: Avoid false positives caused by local network issues.
### Satellite Configuration
Easily assign endpoints to specific satellites via the configuration UI or YAML.

### Global Health View
See the status of your endpoints from every active satellite directly on the dashboard.

---
## π€ AI Integration via MCP
Octo is designed to be fully **AI-Friendly**. The master node comes with an embedded **Model Context Protocol (MCP)** server, making it trivial to connect your monitoring data directly into AI assistants like Claude Desktop, Cursor, and custom agentic workflows.
The MCP server runs on the same port as the Octo API via Server-Sent Events (SSE).
**Connection Details:**
* **Endpoint:** `http://localhost:8080/api/v1/mcp/sse`
* **Protocol:** SSE transport mapping to JSON-RPC messages
**Available AI Tools:**
* `get_config`: Retrieve the deep metrics threshold and alerting configuration.
* `list_endpoints`: Fetch real-time status and information on all monitored endpoints.
* `list_satellites`: Get uptime and lifecycle metadata for all connected satellites.
**Why Use MCP?**
Instead of manually diagnosing an outage, your AI agent can query Octo to say *"Which endpoints are currently offline?"* or *"Compare the latency of api.example.com across all satellites."*
---
## πΈ Screenshots
### Operational Dashboard
Get a bird's-eye view of all your services with real-time status indicators.

### Deep Dive Analytics & SSL Info
Analyze historical performance trends, view SSL certificate details, and spot anomalies with synchronized charts.

### Endpoint Management
Effortlessly add, edit, and remove endpoints using the built-in configuration editor.

### Powerful Editor
Configure advanced settings like Request Headers, Validation Rules, and SSL Alerts with ease.

---
## ποΈ Architecture
Octo follows a clean, modular architecture separating the core monitoring engine from the storage and presentation layers.
```mermaid
graph TD
User["User / Browser"] -->|"HTTP/WebSockets"| API["API Server (Go)"]
API -->|"Serve UI"| UI["React Frontend"]
API -->|"Read/Write"| Config["Config Manager"]
Config -->|Load| SCH[Scheduler]
SCH -->|Spawn| Workers["Worker Pool"]
Workers -->|"HTTP Check"| Target["External Targets"]
Workers -->|"Store Result"| DB[("TimescaleDB")]
API -->|"Query Metrics"| DB
subgraph Core Engine
Config
SCH
Workers
end
subgraph Satellites ["Distributed Satellites"]
Sat1["Satellite (US-East)"]
Sat2["Satellite (EU-West)"]
end
Sat1 -->|"Poll Config / Push Results"| API
Sat2 -->|"Poll Config / Push Results"| API
Sat1 -->|"HTTP Check"| Target
Sat2 -->|"HTTP Check"| Target
```
---
## βοΈ Configuration
Octo uses a YAML configuration file located at `config/config.yml`.
### Volume Mounting
When running with Docker or Podman, the local `config/` directory is mounted into the container at `/config`.
This means you can edit `config/config.yml` on your host machine, and the changes will be reflected in the container (requires restart for some changes, though hot-reload is supported for endpoints).
**Note:** The `config.yml` file is NOT baked into the image. It is injected at runtime via the volume mount.
---
## π Authentication & Users
Octo supports local authentication with Role-Based Access Control (RBAC). You can define multiple users with different roles (`admin` or `viewer`).
### Generating Passwords
Passwords are secured using `bcrypt`. To generate a hashed password for your `config.yml`, use the included `hashpass` utility.
From the project root, run:
```bash
go run cmd/hashpass/main.go
# Or if built:
./bin/hashpass
```
### Example `config.yml` Auth Section
```yaml
auth:
enabled: true
provider: "local"
secret: "your-super-secret-jwt-key"
users:
- username: "admin"
password_hash: "$2a$10$..." # Output from hashpass
role: "admin"
- username: "viewer"
password_hash: "$2a$10$..."
role: "viewer"
```
* **Admin**: Can view dashboards, metrics, and manage the configuration (add/edit/delete endpoints).
* **Viewer**: Can only view dashboards and metrics (read-only mode).
> [!NOTE]
> If `auth.enabled` is `true` but you omit the `users` list entirely, Octo will safely inject a default admin user with the credentials:
> **username**: `admin`
> **password**: `admin`
---
## πΊοΈ Project Roadmap
| Version | Status | Features |
| :--- | :--- | :--- |
| **v0.1.0** | β
**Released** | MVP Core Engine, InfluxDB Support, Basic API |
| **v0.2.0** | β
**Released** | React Frontend, TimescaleDB Migration, Config UI, Historical Charts |
| **v0.3.0** | β
**Released** | Alerting Engine, SSL Monitoring, Config Editor, Aggregation Metrics |
| **v0.4.0** | β
**Released** | User Authentication (Local/Basic), Multi-user Support, RBAC |
| **v1.0.0** | π
**Future** | High Availability Clustering, Plugin System, Public Release |
---
## π Getting Started
### Prerequisites
* **Docker** or **Podman**
* **Go 1.22+** (only for manual builds)
### π Quick Start (Pre-built Docker Image)
The absolute easiest way to get up and running is to use the official pre-built image from the GitHub Container Registry:
```bash
docker pull ghcr.io/orchestrator-dev/octo-master:latest
docker run -d -p 8080:8080 -v $(pwd)/config:/config ghcr.io/orchestrator-dev/octo-master:latest
```
Open **[http://localhost:8080](http://localhost:8080)** to start monitoring.
---
### β‘ Develop Locally (Podman)
A fast way to get up and running if you have Podman installed:
```bash
./scripts/run_podman.sh
```
### π³ Develop Locally (Docker Compose)
Standard deployment for Docker users building from source:
```bash
docker-compose up -d --build
```
### π§ Manual Setup
For development or custom deployments:
1. **Start Database**: Ensure TimescaleDB is running on `localhost:5432`.
2. **Build & Run**:
```bash
# Build Frontend
cd web && npm install && npm run build && cd ..
# Build Backend
go build -o master cmd/master/main.go
# Run
./master
```
---
## π‘ API Reference
Octo exposes a RESTful API for automation and integration.
* `GET /health` - System health check
* `GET /api/v1/config` - Retrieve current configuration
* `POST /api/v1/config/endpoints` - Create new endpoint
* `GET /api/v1/endpoints` - List all endpoints
* `GET /api/v1/endpoints/{id}/history` - Retrieve historical metrics
---
Made with β€οΈ by the Octo Team