# rainyzhou2/sreagentharness architecture

> Architecture diagram of the GitHub repository rainyzhou2/sreagentharness, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/rainyzhou2/sreagentharness
- Repository: https://github.com/rainyzhou2/sreagentharness

## Overview

go-sre-harness is a cognitive SRE agent runtime with a desktop and REST/SSE clients. A user submits a goal through the API; the durable kernel runs recoverable reasoning and tool steps, applies policy and approvals, and commits auditable results. Major supporting capabilities include conversation state, flows, long-term memory, evaluation/evolution, event delivery, and a separate Works control plane. The README documents the main runtime relationships; some subsystem links are therefore documented at a high level rather than verified from sampled implementation calls.

Main entry points: [`internal/kernel/worker.go`](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/kernel/worker.go) (Durable step worker), [`internal/api`](https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/api) (REST and SSE API), [`internal/workengine/engine.go`](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/workengine/engine.go) (Work engine assembly), [`internal/eval/service.go`](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/eval/service.go) (Evaluation and replay)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Clients"]
  node_desktop["Desktop client<br/>[app.go]"]
  node_api["REST and SSE API"]
end

subgraph group_runtime["Agent runtime"]
  node_kernel["Durable step worker<br/>[worker.go]"]
  node_cognitive["Reasoning and context"]
  node_gateway["Model gateway"]
  node_policy["Risk and approvals"]
  node_tools["SRE tools"]
  node_action["Action runtime<br/>[runtime.go]"]
end

subgraph group_capabilities["Agent capabilities"]
  node_flow["Flow execution<br/>[engine.go]"]
  node_memory["Long-term memory<br/>[retriever.go]"]
  node_evaluation["Evaluation and replay<br/>[service.go]"]
  node_reasoning["Reasoning quality<br/>[score.go]"]
  node_postmortem["Postmortems<br/>[postmortem.go]"]
end

subgraph group_works["Works control plane"]
  node_workapi["Works API<br/>[api.go]"]
  node_orchestrator["Work orchestration<br/>[orchestrator.go]"]
  node_workengine["Work engine assembly<br/>[engine.go]"]
  node_world["World state<br/>[world.go]"]
  node_worktemplates["Work templates<br/>[template.go]"]
  node_sreplugin["SRE integrations<br/>[ai_infra.go]"]
  node_srework["SRE work extension<br/>[srework.go]"]
end

subgraph group_state["State and delivery"]
  node_pg[("PostgreSQL<br/>[store.go]")]
  node_localstore[("Local SQLite store<br/>[store.go]")]
  node_eventlog[("Event log<br/>[eventlog.go]")]
  node_relay["Event relay<br/>[relay.go]"]
  node_nats["JetStream<br/>[nats.go]"]
end

node_user(("SRE user"))

node_user -->|"submits goals"| node_desktop
node_desktop -->|"uses REST/SSE"| node_api
node_user -->|"submits goals"| node_api
node_api -->|"dispatches runs"| node_kernel
node_kernel -->|"assembles context"| node_cognitive
node_kernel -->|"requests models"| node_gateway
node_kernel -->|"dispatches calls"| node_tools
node_kernel -->|"checks risk"| node_policy
node_kernel -->|"commits state"| node_pg
node_kernel -->|"runs flow steps"| node_flow
node_kernel -->|"retrieves context"| node_memory
node_evaluation -->|"replays runs"| node_kernel
node_evaluation -->|"gates evolution"| node_user
node_reasoning -.->|"scores reasoning"| node_cognitive
node_postmortem -.->|"analyzes runs"| node_kernel
node_api -->|"exposes Works"| node_workapi
node_workengine -->|"assembles control plane"| node_orchestrator
node_workengine -.->|"loads templates"| node_worktemplates
node_workengine -.->|"registers extension"| node_srework
node_workengine -.->|"loads plugins"| node_sreplugin
node_orchestrator -.->|"uses world state"| node_world
node_api -->|"serves local runtime"| node_localstore
node_kernel -->|"records events"| node_eventlog
node_eventlog -->|"tails events"| node_relay
node_relay -->|"publishes events"| node_nats
node_nats -->|"delivers SSE events"| node_api

click node_desktop "https://github.com/rainyZhou2/SreAgentHarness/blob/main/desktop/app.go"
click node_api "https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/api"
click node_kernel "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/kernel/worker.go"
click node_cognitive "https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/cognitive"
click node_gateway "https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/gateway"
click node_policy "https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/policy"
click node_tools "https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/tools"
click node_action "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/action/runtime.go"
click node_flow "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/flow/engine.go"
click node_memory "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/memory/retriever.go"
click node_evaluation "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/eval/service.go"
click node_reasoning "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/reasoning/score.go"
click node_postmortem "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/postmortem/postmortem.go"
click node_workapi "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/workapi/api.go"
click node_orchestrator "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/orchestration/orchestrator.go"
click node_workengine "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/workengine/engine.go"
click node_world "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/world/world.go"
click node_worktemplates "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/work/template.go"
click node_sreplugin "https://github.com/rainyZhou2/SreAgentHarness/blob/main/plugins/sre/ai_infra.go"
click node_srework "https://github.com/rainyZhou2/SreAgentHarness/blob/main/plugins/srework/srework.go"
click node_pg "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/store/pg/store.go"
click node_localstore "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/localstore/store.go"
click node_eventlog "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/eventlog/eventlog.go"
click node_relay "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/relay/relay.go"
click node_nats "https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/eventbus/nats.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_desktop,node_api,node_user toneBlue
class node_kernel,node_cognitive,node_gateway,node_policy,node_tools,node_action toneAmber
class node_flow,node_memory,node_evaluation,node_reasoning,node_postmortem toneMint
class node_workapi,node_orchestrator,node_workengine,node_world,node_worktemplates,node_sreplugin,node_srework toneRose
class node_pg,node_localstore,node_eventlog,node_relay,node_nats toneIndigo
```

## Components

### Clients

- [Desktop client](https://github.com/rainyZhou2/SreAgentHarness/blob/main/desktop/app.go): `desktop/app.go`
- [REST and SSE API](https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/api): `internal/api`

### Agent runtime

- [Durable step worker](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/kernel/worker.go): `internal/kernel/worker.go`
- [Reasoning and context](https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/cognitive): `internal/cognitive`
- [Model gateway](https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/gateway): `internal/gateway`
- [Risk and approvals](https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/policy): `internal/policy`
- [SRE tools](https://github.com/rainyZhou2/SreAgentHarness/tree/main/internal/tools): `internal/tools`
- [Action runtime](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/action/runtime.go): `internal/action/runtime.go`

### Agent capabilities

- [Flow execution](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/flow/engine.go): `internal/flow/engine.go`
- [Long-term memory](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/memory/retriever.go): `internal/memory/retriever.go`
- [Evaluation and replay](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/eval/service.go): `internal/eval/service.go`
- [Reasoning quality](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/reasoning/score.go): `internal/reasoning/score.go`
- [Postmortems](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/postmortem/postmortem.go): `internal/postmortem/postmortem.go`

### Works control plane

- [Works API](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/workapi/api.go): `internal/workapi/api.go`
- [Work orchestration](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/orchestration/orchestrator.go): `internal/orchestration/orchestrator.go`
- [Work engine assembly](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/workengine/engine.go): `internal/workengine/engine.go`
- [World state](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/world/world.go): `internal/world/world.go`
- [Work templates](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/work/template.go): `internal/work/template.go`
- [SRE integrations](https://github.com/rainyZhou2/SreAgentHarness/blob/main/plugins/sre/ai_infra.go): `plugins/sre/ai_infra.go`
- [SRE work extension](https://github.com/rainyZhou2/SreAgentHarness/blob/main/plugins/srework/srework.go): `plugins/srework/srework.go`

### State and delivery

- [PostgreSQL](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/store/pg/store.go): `internal/store/pg/store.go`
- [Local SQLite store](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/localstore/store.go): `internal/localstore/store.go`
- [Event log](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/eventlog/eventlog.go): `internal/eventlog/eventlog.go`
- [Event relay](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/relay/relay.go): `internal/relay/relay.go`
- [JetStream](https://github.com/rainyZhou2/SreAgentHarness/blob/main/internal/eventbus/nats.go): `internal/eventbus/nats.go`

### Other components

- **SRE user**

## Connections

- SRE user → Desktop client: submits goals (evidence: `README.md`)
- Desktop client → REST and SSE API: uses REST/SSE (evidence: `README.md`)
- SRE user → REST and SSE API: submits goals (evidence: `README.md`)
- REST and SSE API → Durable step worker: dispatches runs (evidence: `README.md`)
- Durable step worker → Reasoning and context: assembles context (evidence: `README.md`)
- Durable step worker → Model gateway: requests models (evidence: `README.md`)
- Durable step worker → SRE tools: dispatches calls (evidence: `README.md`)
- Durable step worker → Risk and approvals: checks risk (evidence: `README.md`)
- Durable step worker → PostgreSQL: commits state (evidence: `README.md`)
- Durable step worker → Flow execution: runs flow steps (evidence: `README.md`)
- Durable step worker → Long-term memory: retrieves context (evidence: `README.md`)
- Evaluation and replay → Durable step worker: replays runs (evidence: `README.md`)
- Evaluation and replay → SRE user: gates evolution (evidence: `README.md`)
- Reasoning quality → Reasoning and context: scores reasoning
- Postmortems → Durable step worker: analyzes runs
- REST and SSE API → Works API: exposes Works (evidence: `README.md`)
- Work engine assembly → Work orchestration: assembles control plane (evidence: `README.md`)
- Work engine assembly → Work templates: loads templates
- Work engine assembly → SRE work extension: registers extension
- Work engine assembly → SRE integrations: loads plugins
- Work orchestration → World state: uses world state
- REST and SSE API → Local SQLite store: serves local runtime (evidence: `README.md`)
- Durable step worker → Event log: records events (evidence: `README.md`)
- Event log → Event relay: tails events (evidence: `README.md`)
- Event relay → JetStream: publishes events (evidence: `README.md`)
- JetStream → REST and SSE API: delivers SSE events (evidence: `README.md`)
