You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This branch completes the ops-ontology / AgentOps foundation work for kafSIEM.
It moves AgentOps off the old JSON snapshot path onto a SQLite-backed runtime and typed analyst API, adds graph and pack primitives for operations-focused ontology workflows, replaces the legacy desk with the new runtime investigation UI, and documents the new Operations / Fusion product surface with demo support and screenshots.
Copy file name to clipboardExpand all lines: README.md
+75-18Lines changed: 75 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,30 +1,74 @@
1
1
# kafSIEM
2
2
3
-
kafSIEM is the open-source edition of our OSINT pipeline, used across multiple installations and packaged for local and server deployment.
3
+
kafSIEM is an open-source operations and fusion analysis surface. It turns
4
+
Kafka-observed operational traffic and selected OSINT context into an
5
+
auditable entity graph for analyst workflows.
4
6
5
-
It now ships with two distinct operating surfaces:
7
+
The product can run standalone for teams that need a local, Docker-first
8
+
analysis stack. It can also complement existing enterprise intelligence
9
+
platforms through typed APIs, pack-defined ontology, provenance-preserving
10
+
records, and exportable graph context.
11
+
12
+
It now ships with three operating modes:
6
13
7
14
-`OSINT`: the existing globe-first external intelligence workflow
8
-
-`AgentOps`: Kafka-backed flow tracking for KafClaw agent communication
9
-
-`HYBRID`: AgentOps plus selective external OSINT context
15
+
-`Operations`: Kafka-backed flow tracking and internal operational workflows
16
+
-`Fusion`: operations plus selective external OSINT context
10
17
11
18
This repository has been prepared for public use by removing non-public, internal, and protected source integrations while keeping the operational pipeline structure intact.
- AgentOps flow tracking over Kafka for KafClaw-style agent traffic
40
+
- Operations flow tracking over Kafka for KafClaw-style agent traffic
41
+
- Entity, edge, provenance, map, and timeline APIs backed by SQLite
42
+
- Pack-defined ontology for unmanned systems and SCADA / critical infrastructure workflows
17
43
- Docker-first deployment for reproducible installs
18
-
- Web dashboard + Go collector runtime
44
+
- Web dashboard, Go collector runtime, and standalone analyst API service
19
45
- Configurable ingestion and refresh cadence
20
46
47
+
## Target Deployments
48
+
49
+
kafSIEM is designed for two initial operations profiles:
50
+
51
+
- unmanned systems teams that need readiness, sortie, EW, software, and
52
+
signoff evidence connected across fleet activity
53
+
- SCADA and critical infrastructure teams that need plant, device, change,
54
+
alarm, firmware, vulnerability, and session evidence connected across
55
+
operational telemetry
56
+
57
+
These profiles are shipped as data packs under `packs/`. The active pack
58
+
contract is documented in [docs/packs/drones.md](https://github.com/scalytics/kafSIEM/blob/main/docs/packs/drones.md)
59
+
and [docs/packs/scada.md](https://github.com/scalytics/kafSIEM/blob/main/docs/packs/scada.md).
60
+
21
61
## Operating Modes
22
62
23
63
The runtime mode is driven by environment and mounted policy files.
24
64
25
65
-`UI_MODE=OSINT` keeps the existing OSINT product behavior.
26
-
-`UI_MODE=AGENTOPS` switches the desktop UI to the AgentOps flow desk.
27
-
-`UI_MODE=HYBRID` keeps AgentOps primary and adds selective external-intel context.
66
+
-`UI_MODE=AGENTOPS` switches the desktop UI to the Operations desk.
67
+
-`UI_MODE=HYBRID` switches the desktop UI to Fusion mode with selective external-intel context.
68
+
69
+
Current runtime values remain `OSINT`, `AGENTOPS`, and `HYBRID` for
70
+
compatibility. User-facing product naming is `OSINT`, `Operations`, and
71
+
`Fusion`.
28
72
29
73
AgentOps is a separate bounded domain in the codebase:
30
74
@@ -33,6 +77,8 @@ AgentOps is a separate bounded domain in the codebase:
33
77
34
78
It is not implemented as a generic plugin tree.
35
79
80
+
Architecture details live in [docs/architecture.md](https://github.com/scalytics/kafSIEM/blob/main/docs/architecture.md).
81
+
36
82
## Run With Docker
37
83
38
84
```bash
@@ -54,13 +100,19 @@ make dev-restart
54
100
make dev-logs
55
101
```
56
102
57
-
For a local AgentOps demo with mocked Kafka-derived traffic and the real dashboard:
103
+
The old JSON-backed AgentOps demo UI has been removed. Operations and Fusion
104
+
development uses the live runtime desk against `kafsiem-api` and the
105
+
collector-written SQLite store. For UI-only demos without Kafka or SQLite,
106
+
the same runtime desk can run against typed mock streams:
58
107
59
108
```bash
60
-
npm run demo:agentops
109
+
npm run demo:ontology
110
+
npm run demo:fusion
61
111
```
62
112
63
-
This opens the desktop UI directly in `AgentOps` mode via `/?demo=agentops`, serves demo state from `public/demo/*.json`, and mocks the replay endpoint locally.
113
+
These open `/?demo=ontology` and `/?demo=fusion`, which keep OSINT untouched
114
+
and feed the Operations/Fusion ontology dashboard through mocked typed API
- ask for the operating profile (`OSINT`, `AGENTOPS`, or `HYBRID`)
126
+
- ask for the operating profile (`OSINT`, `Operations`, or `Fusion`)
75
127
- set GHCR runtime images (`ghcr.io/scalytics/kafsiem-web` + `ghcr.io/scalytics/kafsiem-collector`)
76
128
- prompt for install mode (`preserve` or `fresh` volume reset)
77
129
- prompt for the common site setting (`KAFSIEM_SITE_ADDRESS`)
78
130
- when domain mode is enabled, optionally check `ufw`/`firewalld` and validate local 80/443 availability
79
131
- prompt only for the profile-relevant runtime keys
80
132
- optionally run `docker compose pull` and start with `--no-build`
81
133
82
-
- The release pipeline builds two images: a web imageand a Go collector image.
134
+
- The release pipeline builds three images: a web image, a Go collector image, and a Go analyst API image.
83
135
- The scheduled feed refresh workflow runs the Go collector.
84
-
- The web image uses Caddy, with collector output mounted into the web container at runtime.
136
+
- The web image uses Caddy, with collector output mounted into the web container at runtime and `/api/*` reverse-proxied to the standalone analyst API service.
85
137
- In Docker dev mode, the collector initializes empty JSON outputs on a fresh volume and writes live output on the first successful run.
86
138
87
139
## Run Locally Without Docker
@@ -117,11 +169,11 @@ The installer is profile-driven and only asks for the settings that matter for t
117
169
- prompts for `KAFSIEM_SITE_ADDRESS`
118
170
- prompts for OSINT credentials and optional LLM toggles
119
171
- writes `UI_MODE=OSINT` and `PROFILE=osint-default`
120
-
-`AGENTOPS`
172
+
-`Operations`
121
173
- prompts for `KAFSIEM_SITE_ADDRESS`
122
174
- prompts for AgentOps Kafka brokers, auth mode, group identifiers, topic mode, replay, and optional reject mirroring
123
175
- writes `UI_MODE=AGENTOPS` and `PROFILE=agentops-default`
124
-
-`HYBRID`
176
+
-`Fusion`
125
177
- prompts for both the OSINT and AgentOps settings above
126
178
- writes `UI_MODE=HYBRID` and `PROFILE=hybrid-ops`
When AgentOps is enabled, the collector writes `agentops-state.json` into the runtime data volume and the web UI reads that state directly.
197
+
When AgentOps is enabled, the collector writes `agentops.db` into the runtime data volume and the analyst API serves typed `/api/v1/...` resources from that SQLite store.
145
198
146
199
Mount contract:
147
200
148
201
-`/config`: policy and UI steering files
149
-
-`/data`: generated AgentOps state and replay metadata
202
+
-`/data`: generated AgentOps SQLite state (`agentops.db` plus WAL/SHM sidecars), alerts JSON, and replay metadata
203
+
-`/packs`: active bundled or mounted pack directories
150
204
151
205
Content behavior is explicit:
152
206
@@ -157,6 +211,9 @@ Content behavior is explicit:
157
211
- replay always uses a dedicated consumer group and never mutates the live tracking group
158
212
159
213
Operator reference and examples live in [docs/agentops-operator-guide.md](https://github.com/scalytics/kafSIEM/blob/main/docs/agentops-operator-guide.md).
214
+
The analyst API contract lives in [api/openapi.yaml](https://github.com/scalytics/kafSIEM/blob/main/api/openapi.yaml);
215
+
client guidance is in [docs/api-clients.md](https://github.com/scalytics/kafSIEM/blob/main/docs/api-clients.md)
216
+
and problem details are registered in [docs/agentops-api-errors.md](https://github.com/scalytics/kafSIEM/blob/main/docs/agentops-api-errors.md).
0 commit comments