Vendor-neutral SRE investigation and root cause analysis (RCA) agent with schema-backed onboarding for evidence providers (logs, metrics, traces, deploy history, VCS, alerting).
- FastAPI backend for RCA workflows and onboarding endpoints.
- Provider adapters grouped by capability under
providers/. - Onboarding Studio UI that edits a model, previews diffs, validates, and only then writes
catalog/instances.yamlandkb/subjects.yaml. - Optional CopilotKit assistant that proposes onboarding operations and applies them only after confirmation.
api/: FastAPI entrypoints (seeapi/main.py)core/: RCA workflow, registry, prompts, scoring, configproviders/: adapter implementations grouped by capabilitycatalog/: tool schema and provider instances (catalog/instances.yaml)kb/: subjects and bindings (kb/subjects.yaml)scripts/: utilities like YAML validation (scripts/validate_kb.py)ui/: SvelteKit onboarding UI + CopilotKit runtime route
Apache-2.0. See LICENSE.
- Create
.env.localin the repo root:
OPENAI_API_KEY=...- Run:
uv sync --extra dev
uv run uvicorn api.main:app --reload --port 8080uv run python scripts/validate_kb.py- Install deps:
cd ui
npm ci- Run UI:
npm run devCopilotKit runtime routes (/copilotkit) use OPENAI_API_KEY. For local dev, the UI server attempts to load the repo-root .env.local. You can also set OPENAI_API_KEY in ui/.env.local (see ui/.env.example).
Onboarding supports:
template: vendor-neutral placeholders (default)demo: seeded demo content (opt-in)
Backend:
ONBOARDING_PROFILE=template|demo(defaulttemplate)SHOW_DEMO_DATA=falseby default
UI:
- Profile selector in
/onboardingpersists inlocalStorage
Provider operations declared in catalog/instances.yaml are validated against catalog/rca-tools.schema.yaml during preview/apply.
The onboarding assistant does not write files. It:
- Proposes an operation plan:
POST /knowledge/onboarding/agent/plan - Applies accepted ops to the in-memory UI model:
POST /knowledge/onboarding/agent/apply-ops - File writes happen only via
Preview + ValidatethenApply changes
uv sync --extra dev
uv run --extra dev pytest