Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenAgentPlatform

Open-source, agent-first RMM (Remote Monitoring & Management) platform. Endpoints, agents, checks, alerts, scripts, and patches -- managed from one place, extensible through AI agents and an A2A-compatible API.

License: BSL 1.1 Docker Go 1.25+ React 19 PostgreSQL 16 NATS

Quick Start (5 minutes)

Get the platform running locally with three commands:

cp .env.example .env && make setup

Then in a new terminal:

make build-agent && ./bin/oap-agent -register && ./bin/oap-agent

Open http://localhost:5173 and login with admin@oap.local / password.

What just happened:

  • Docker Compose started Postgres, NATS, Dex, server, and web
  • Database migrations created the schema (24 tables across all phases)
  • The built-in check library was seeded (runs on server boot via checklib.Seed)
  • The agent registered itself and is now publishing heartbeats

For the full walkthrough see docs/SETUP.md.

Architecture

┌────────────┐       OIDC        ┌──────────────┐
│   Web UI   │ ───────────────▶  │  OAP Server  │ ──┐
│  (React)   │                   │   (Go API)   │   │
└────────────┘                   └──────┬───────┘   │
                                        │           │
                            pgxpool     │           │  publish/subscribe
                                        ▼           ▼
                                 ┌──────────┐  ┌──────────┐
                                 │ Postgres │  │   NATS   │
                                 │ +TSDB    │  │  (mTLS)  │
                                 └──────────┘  └────┬─────┘
                                                   │
                                                   ▼
                                          ┌────────────────┐
                                          │   Agents       │
                                          │ (Go / Python)  │
                                          └────────────────┘

For the full component diagram (all phases) and ADRs, see docs/ARCHITECTURE.md.

Built With

  • Server: Go 1.25 + chi + slog
  • Web: React 19 + TanStack Router/Query + TailwindCSS + Monaco
  • MCP Server: Go (separate module, stdio/HTTP)
  • A2A Adapters: Python 3.12 (FastAPI, Pydantic) -- Anthropic, OpenAI, AutoGen, CrewAI, LangGraph, Semantic Kernel
  • LLM Provider: Ozore AI (OpenAI-compatible)
  • Data: PostgreSQL 16 + TimescaleDB + Alembic
  • Messaging: NATS 2.10 with mTLS
  • Auth: OIDC (Dex) + JWT sessions
  • Policy: OPA (Open Policy Agent) with rego
  • Observability: OpenTelemetry, Prometheus, Grafana
  • Secrets: 5 pluggable backends (memory, env, Vault, Infisical, k8s CSI); AES-256-GCM team encryption lives in the separate mcp-server module
  • CI: GitHub Actions
  • Deploy: Docker Compose, Kubernetes (Helm)

Phase status

Phase Sprint Status Description
0 0.1 Complete Foundation: scaffold, CI, schema, NATS, OIDC
0 0.2 Complete Agent CLI, registration, heartbeat
1 1.1 Complete Check CRUD, built-in library, ingest
1 1.2 Complete Alert rules, notifications, inbox
1 1.3 Complete OPA policy engine, compliance scans
1 1.4 Complete Patch approval, inventory, deploy
1 1.5 Complete Scripts, 4-runtime executor, shell
2 2.1 Complete A2A Gateway, JSON-RPC, EventBridge
2 2.2 Complete 6 framework adapters, orchestration
2 2.3 Complete Python-Go bridge, end-to-end wiring
3 3.0 Complete Secret vault, A2A auth, OAuth
4 4.0 Complete Settings, Monaco, dark mode, a11y
5 5.0 Complete OTel, Prometheus, resilience, tests
5 5.1 Complete Ozore AI integration
6 6.0 Complete Live dashboard, multi-tenant, polish

Prerequisites

  • Docker 20.10+ with Compose v2
  • Go 1.25+ (for agent)
  • Node 20+ (for web dev)
  • Python 3.12 + uv (for migrations)

See docs/SETUP.md for detailed installation instructions.

What's included

Once running, you get:

  • Dashboard -- Sites, agents, checks, alerts overview at http://localhost:5173
  • REST API -- Full CRUD for all resources at http://localhost:8080
  • Agent -- Cross-platform endpoint agent (Linux/macOS/Windows)
  • OIDC auth -- Dex with two pre-configured users:
    • admin@oap.local / password (admin role)
    • tech@oap.local / password (technician role)
  • Health checks -- All services have healthcheck endpoints
  • Check library -- built-in check definitions seeded on server boot (make seed is a documented no-op; extend it with a dedicated seeder if you need sample sites/agents/alert rules)

Development

For active development with hot reload:

make up-dev

This mounts your local source into containers. Server changes trigger Air hot-reload; web changes trigger Vite HMR.

Useful commands

make help           # Show all available targets
make up             # Start stack in background
make down           # Stop stack
make logs           # Tail logs from all services
make migrate        # Run database migrations
make seed           # Load sample data
make reset          # Destroy volumes and start fresh
make test           # Run all tests
make lint           # Run linters
make build          # Build server and web
make build-agent    # Build the endpoint agent
make clean          # Remove build artifacts

Repository layout

cmd/server        Go HTTP API server
cmd/agent         Endpoint agent (daemon + registration)
internal/         server-only Go packages (api, auth, config, db, events, schema)
pkg/              reusable Go packages (logger, agent, models)
py/               Python services, agents, and Alembic migrations
web/              React + Vite frontend
deploy/           docker-compose, NATS config, Dex config, postgres init
docs/             documentation

Code Size Limits

All source files must stay under a 500-line hard limit (300-line soft warning). This is enforced by scripts/regression_check.py with 29 regression tests.

python3 scripts/regression_check.py --all   # check everything
python3 scripts/regression_check.py --all --no-audit  # skip audit table

Known violations (4 files, in progress):

File Lines Plan
web/src/routes/patches/index.tsx 1781 Split into 4+ files (helpers, sub-components, custom hook)
web/src/routes/patches/$jobId.tsx 1135 Split into 3+ files (helpers, sub-components, custom hook)
mcp-server/internal/mcp/server.go 888 Extract setupHandlers() tool definitions into separate files
web/src/routes/policies/$policyId.tsx 586 Finish right column JSX extraction (helpers + hook already done)

Documentation

Community

License

Business Source License 1.1 -- see LICENSE. Free for non-production use; commercial licenses available for production. See docs/COMMERCIAL.md for tier details.


Status: All sprints 0.1 -- 6.0 complete | Version: v1.1.0 | Last updated: 2026-01-15

☕ Support

If this project helped you, consider buying me a coffee:

Buy Me a Coffee

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages