OpsOrch is an open, modular incident-operations platform that unifies incidents, logs, metrics, tickets, messaging, and services behind one orchestration layer. The project is split into focused repos so teams can mix and match pieces—from the Go core to MCP tools, Copilot runtime, console UI, and provider adapters—while keeping proprietary data in existing systems. Learn more at opsorch.com.
- Single API surface for operational data across vendors without replicating records.
- Adapter model keeps provider logic decoupled, supporting in-process and plugin execution paths.
- AI-native workflows: the MCP server exposes typed tools and the Copilot runtime plans/tool-calls answers with citations.
- Operator console: a Next.js UI to browse incidents/logs/metrics/tickets/services and collaborate with Copilot outputs.
- Security-first: secrets stay encrypted, and Core remains stateless aside from integration metadata and optional audit logs.
| Repo | Description |
|---|---|
opsorch-core |
Stateless Go orchestration service providing unified REST APIs, capability registry, schema boundaries, secret management, and plugin loader. Zero operational data storage. |
opsorch-mcp |
TypeScript MCP server exposing Core APIs as typed tools/resources for LLM agents (Claude, ChatGPT, etc). Supports both stdio and HTTP transports. |
opsorch-copilot (private) |
AI runtime with planning loops that execute MCP tool calls via LLMs. Supports mock and OpenAI-compatible backends. |
opsorch-console (private) |
Next.js operator UI for browsing incidents/logs/metrics/tickets, executing searches, and collaborating with AI responses. |
| Repo | Capability | Description |
|---|---|---|
opsorch-pagerduty-adapter |
Incident, Service | PagerDuty integration for incident management and service discovery with timeline support. |
opsorch-jira-adapter |
Ticket | Jira integration for ticket CRUD operations with support for labels, components, and custom fields. |
opsorch-prometheus-adapter |
Metric | Prometheus integration for metric querying and discovery with PromQL support. |
opsorch-elastic-adapter |
Log | Elasticsearch integration for log querying with full-text search and structured filtering. |
opsorch-mock-adapters |
All | Demo adapters returning seeded data for all capabilities. Ideal for development and demos. |
opsorch-adapter |
Template | Starter template for building new provider adapters with examples and best practices. |
graph TB
subgraph "User Layer"
UI["OpsOrch Console<br/>(Next.js UI)"]
end
subgraph "AI Runtime Layer"
Copilot["OpsOrch Copilot<br/>(LLM Planning & Execution)"]
end
subgraph "Tools Layer"
MCP["opsorch-mcp<br/>(MCP Server)<br/>Typed Tools & Resources"]
end
subgraph "Orchestration Layer"
Core["OpsOrch Core<br/>(Go Service)<br/>Routing • Registry • Schemas • Secrets"]
end
subgraph "Provider Adapters"
InProcess["In-Process Providers<br/>(Go Registry)"]
Plugins["JSON-RPC Plugins<br/>(stdio communication)"]
end
subgraph "External Systems"
PD["PagerDuty"]
Jira["Jira"]
Prom["Prometheus"]
ES["Elasticsearch"]
Mock["Mock Providers<br/>(Demo Data)"]
Other["Other Providers..."]
end
UI -->|HTTP| Copilot
UI -->|HTTP| Core
Copilot -->|MCP Protocol| MCP
MCP -->|HTTP REST| Core
Core -->|Registry Lookup| InProcess
Core -->|JSON-RPC stdin/stdout| Plugins
InProcess --> PD
InProcess --> Jira
InProcess --> Mock
Plugins --> Prom
Plugins --> ES
Plugins --> Other
style UI fill:#e1f5ff
style Copilot fill:#fff4e1
style MCP fill:#f0e1ff
style Core fill:#e1ffe1
style InProcess fill:#ffe1e1
style Plugins fill:#ffe1e1
- Console: Operator-focused UI for browsing incidents, logs, metrics, services, tickets, and AI chat
- Copilot: AI runtime that uses LLMs to plan and execute MCP tool calls for operational queries
- MCP Server: Exposes Core APIs as typed MCP tools/resources for agent runtimes
- Core: Stateless Go service providing unified APIs, routing, schema boundaries, and secret management
- Adapters: Provider-specific implementations loaded in-process (via registry) or out-of-process (via JSON-RPC plugins)
- Core contracts live under
opsorch-core/schemaandopsorch-core/api - Registry selection is driven by env vars:
OPSORCH_<CAP>_PROVIDERorOPSORCH_<CAP>_PLUGINwithOPSORCH_<CAP>_CONFIGJSON - Plugin RPC uses JSON over stdin/stdout, keeping traffic on-box.
opsorch-mock-adaptersship ready-made binaries underbin/ - Secrets are encrypted at rest and only decrypted when invoking providers; never logged or returned
- No data replication: Core holds only encrypted integration configs and optional audit logs; operational data stays in source systems
For deeper context, see OPSORCH_MASTER.md (in repo root) and opsorch-architecture.drawio.
-
Core with mock providers
cd opsorch-core OPSORCH_INCIDENT_PLUGIN=./plugins/incidentmock \ OPSORCH_LOG_PLUGIN=./plugins/logmock \ OPSORCH_SECRET_PLUGIN=./plugins/secretmock \ go run ./cmd/opsorch(Optional) Build extra mock plugins via
make plugininsideopsorch-mock-adaptersand point env vars at../opsorch-mock-adapters/bin/*. -
MCP tools layer
cd ../opsorch-mcp npm install OPSORCH_CORE_URL=http://localhost:8080 OPSORCH_CORE_TOKEN=demo npm run dev -
Copilot runtime
Copilot runs from the private
opsorch-copilotrepo; the same env vars apply once you have access. -
Console UI
Console lives in the private
opsorch-consolerepo; follow the same steps after cloning.
Health checks:
curl http://localhost:8080/health
curl -s http://localhost:7070/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'- Fork the template: Copy
opsorch-adapterasopsorch-<provider>-adapter - Choose capabilities: Implement interfaces you need:
incident.Provider- Create/query/update incidents, manage timelineslog.Provider- Query logs with structured expressionsmetric.Provider- Query metrics, discover available metricsticket.Provider- CRUD operations for ticketsservice.Provider- Service discovery and metadatamessaging.Provider- Send messages to channels/userssecret.Provider- Encrypted secret storage
- Register provider: Export
New(config map[string]any)and call<capability>.RegisterProvider("<name>", New) - Normalize data: Map provider responses to OpsOrch schemas; use
metadatafor provider-specific fields - Test thoroughly: Add unit tests and integration tests (see existing adapters for examples)
- Deploy: Build as plugin binary (
make plugin) or import directly into custom Core build
- PagerDuty: Incident + Service providers with QueryScope support
- Jira: Ticket provider with custom fields and JQL filtering
- Prometheus: Metric provider with PromQL and structured queries
- Elasticsearch: Log provider with full-text search and structured filtering
See individual adapter READMEs for detailed implementation patterns.
- Always pass
service/team/environmentscope fields to narrow expensive queries. - Gate high-risk mutations (paging, ticket creation, severity bumps) behind approvals in Copilot or Console.
- Secrets are decrypted only when invoking providers; never log or return them.
- Use audit logs (
opsorch-core/api/audit_log*.go) to track mutations if required.
- Issues/PRs welcome across repos; follow
opsorch-core/CONTRIBUTING.mdfor coding standards. - Discuss architectures via
OPSORCH_MASTER.mdor the draw.io diagram. - Need another adapter? File an issue in this meta repo or the relevant service repo.