Skip to content

OpenSRE v1.1.0 — Claude Agent SDK, Neo4j memory, Teams, and a whole new investigation console

Latest

Choose a tag to compare

@swapnildahiphale swapnildahiphale released this 21 Jul 09:13
36ace5d

OpenSRE v1.1.0

The biggest public update since launch. ~47 days of private development (~225 commits, 23+ PRs) landed in #17.

OpenSRE now runs on the Claude Agent SDK, stores episodic memory in Neo4j, ships a Microsoft Teams bot, and has a rebuilt investigation console that shows the work — not just a spinner and a paragraph.

Upgrade note: This is a large behavioral jump from v1.0.0. LangGraph is gone. Episodes live in Neo4j (not Postgres). LiteLLM is optional. Read Breaking changes before upgrading self-hosted installs.


Highlights

Claude Agent SDK investigation engine

The LangGraph orchestration layer is removed. Investigations now run on the Claude Agent SDK:

  • Root investigator plans work and dispatches specialist subagents via the SDK Task tool
  • Progressive skill loading — metadata first, full SKILL.md + scripts on demand
  • Direct Anthropic by default; LiteLLM is an opt-in compose profile (--profile litellm)
  • SDK upgraded 0.1.19 → 0.2.110

Background agents that finish the job

When subagents run in the background, the parent no longer stops early:

  • Stream drained with receive_messages() (SDK-recommended)
  • Tracks outstanding tasks from TaskStarted / TaskNotification
  • Emits background_waiting while work is in flight
  • Auto-continues and only emits the terminal result when all tasks complete

Mid-run message queue

Send more context while an investigation is running:

  • POST /threads/{id}/queue-message + SSE message_queued
  • Debounced merge at turn boundaries
  • Wired in Web UI and Teams

Interrupt and resume

Stop a runaway investigation, then continue:

  • Simple-mode interrupt → run status interrupted
  • Warm follow-up when the in-process session is still alive
  • Cold resume via persisted sdk_session_id
  • Follow-up composer on the investigation detail page

Neo4j episodic memory (redesign)

Past investigations are no longer a Postgres side-table:

  • :Episode nodes in Neo4j 2026.02 with vector search (neo4j-graphrag + fastembed)
  • One episode per conversation (correlation_id)
  • Agent-driven recall via the memory-search skill (no automatic pre-injection)
  • Strategy playbooks as :Strategy nodes
  • Agent-run traces still live in Postgres for the Investigations UI

Knowledge graph, agent-driven

Topology / blast-radius queries go through the infrastructure-neo4j skill after symptoms are known — not dumped into every prompt up front.

Investigation console overhaul

The web UI finally feels like an SRE console:

  • Investigations list (/team/agent-runs) — episode/thread summary as the primary title
  • Unified run trace: humanized tool labels, Skill → Bash nesting, turn collapse, thinking vs final result dedupe
  • Nested agent tree with stable invocation IDs
  • Memory hub polish (tabs, search, strategies, overview)
  • Team context — human-authored operating facts injected into the system prompt
  • Dashboard Investigate CTA, faster in-progress polling, Stop on the detail page

Microsoft Teams bot

First-class chat surface alongside Slack:

  • New teams-bot/ on the Microsoft Teams SDK (microsoft-teams-apps)
  • Live SSE progress (humanized tools, nested Skill/Bash, current thought last)
  • Adaptive Card Q&A / finals
  • make dev-teams / compose --profile teams

New and expanded skills (~51 public)

Skill What it unlocks
memory-search Mid-investigation episodic recall
infrastructure-neo4j Topology / blast radius after symptoms
platform-jenkins Jobs, builds, console across named controllers
platform-argocd Argo CD inspect + guarded sync
vcs-bitbucket Bitbucket Data Center via bkt
vcs-github GitHub via gh
project-jira Jira Data Center (PAT bearer + API v2) as well as Cloud

Org-specific hostnames and defaults scrubbed from committed skill docs.

Architecture docs that match reality

docs/ARCHITECTURE.md rewritten for the public tree: Web UI + Slack + Teams entry points, SDK runtime, Neo4j memory, local ports, key files.


Notable bug fixes

Agent / SDK

  • System-prompt edits reach the SDK via nested agents.{id}.prompt.system
  • Nested tool-call attribution via stable invocation IDs
  • Failed tool calls persisted (PostToolUseFailure) instead of silently dropped
  • Interrupted runs normalized after SDK stop; failed background tasks finalize as failed
  • API error classification: subtype=success + is_error=True no longer treated as a clean win

Web UI

  • Synthesize terminal result when SSE stream closes without a result event
  • Dedupe in-flight follow-up turns; cancel-safe polling
  • Stop button on agent-run detail page
  • Skills tree expansion stable; Customized badge driven by live lineage

Teams bot

  • Read SSE stream to close instead of exiting on first result event
  • On queue 409, start follow-up run instead of dead-end error

Config / compose

  • Direct Anthropic default; LiteLLM opt-in
  • ENABLED_SKILLS empty by default so team-level skill toggles work
  • Slack bot behind compose --profile slack so make dev doesn't require Slack tokens
  • Kubernetes skill: stop silent --cluster-id no-op that caused redundant list_pods storms

Breaking changes for self-hosters

  1. LangGraph removed — custom extensions against graph.py / nodes/ will not work.
  2. Episodes moved to Neo4j — Postgres episode tables dropped; v1 episode data is not migrated.
  3. Neo4j required for memorymake dev starts it; configure NEO4J_* in .env.
  4. No automatic memory/KG pre-injection — agents call memory-search / infrastructure-neo4j when appropriate.
  5. LLM config — set ANTHROPIC_API_KEY; LiteLLM is optional (docker compose --profile litellm up).
  6. Prompt config shapeagents.{id}.prompt.system (nested). Flat LangGraph-era shapes are gone.
  7. Ports — web UI is http://localhost:3002 (not 3000).

Quick start

git clone https://github.com/swapnildahiphale/OpenSRE.git
cd OpenSRE
cp .env.example .env
# Set ANTHROPIC_API_KEY in .env
make dev
# Open http://localhost:3002

For Teams: make dev-teams (requires Teams app credentials in .env).


Links


Full diff: 694 files changed, +69,645 / −22,456 lines since v1.0.0