A Linux-first adaptive defense stack that combines eBPF fast-path enforcement, protocol-faithful deception, and shared threat intelligence into one integrated system.
Most defenders can already collect alerts. The problem is what happens next.
- Firewalls act quickly but know very little.
- IDS and TIP stacks know more but sit outside the packet path.
- Honeypots collect attacker behavior but usually live off to the side.
- Shared intelligence often requires centralization, manual glue, or both.
Siren exists to collapse those seams.
Instead of running separate tools that barely talk to each other, Siren keeps the loop tight:
- inspect traffic in the kernel
- classify behavior in userspace
- redirect suspicious flows into believable deception services
- turn what was learned into feed-ready intelligence
- share that intelligence across a mesh and back into enforcement
The goal is not just detection. The goal is a defense stack where learning, deception, enforcement, and sharing reinforce each other.
You run Siren on a Linux host. The system watches traffic at the interface, classifies it, optionally redirects suspicious actors into the tarpit, and exposes verified intelligence through a local API and mesh node.
Inbound traffic hits interface
│
▼
┌─────────────────────┐ XDP / TC, ring buffers, shared maps
│ blackwall-ebpf │────▶ Fast-path filtering, DPI tail calls, native redirect
└─────────┬───────────┘
▼
┌─────────────────────┐ JA4 assembly, behavior tracking, rule engine,
│ blackwall │────▶ deterministic + optional Ollama-backed classification
└──────┬───────┬──────┘
│ │
│ └──────────────────────────────────────┐
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ tarpit │ │ hivemind │
│ HTTP / MySQL / DNS │ │ libp2p mesh, │
│ SSH-style shell │ │ consensus, PoW, FL │
└─────────┬───────────┘ └─────────┬───────────┘
│ ▼
└──────────────────────────────┬─────────────────────────┐
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ hivemind-api │ │ hivemind-dashboard │
│ JSON, STIX/TAXII, │ │ ANSI TUI + NDJSON │
│ Splunk, QRadar, CEF │ │ operator visibility │
└─────────────────────┘ └─────────────────────┘
| Step | What happens |
|---|---|
| Observe | eBPF programs inspect packets at ingress and optional egress |
| Interpret | Userspace assembles JA4, tracks behavior, and classifies events |
| Engage | Suspicious flows can be redirected to protocol-faithful deception services |
| Learn | Captured behavior, credentials, and signals become structured IoCs |
| Share | The mesh and API distribute that intelligence in formats defenders already use |
| Feature | Description |
|---|---|
| Kernel Fast Path | XDP ingress and optional TC egress with native rule enforcement before normal userspace processing |
| Native Tarpit Redirect | Suspicious traffic can be rewritten in-kernel to deception services through shared NAT state |
| Tail-Call DPI | HTTP, DNS, and SSH protocol inspection inside the eBPF pipeline |
| JA4 at Ingress | TLS ClientHello extraction in the fast path with userspace JA4 assembly and lookup |
| Behavior Engine | Per-IP lifecycle tracking, thresholds, and phase transitions in userspace |
| Optional AI Classification | Deterministic rules first, then optional Ollama-backed classification when useful |
| Protocol-Faithful Deception | HTTP, MySQL, DNS, and SSH-style interactive responses built to keep suspicious actors engaged |
| Deterministic Fallback Shell | SSH-style tarpit sessions remain coherent even if Ollama is unavailable |
| Mesh Intelligence | libp2p transport, gossip, consensus, reputation, and proof-of-work-gated peer admission |
| Feed Distribution | Verified IoCs exposed as JSON, STIX/TAXII, Splunk HEC JSON, QRadar LEEF, and CEF |
| Feature | Description |
|---|---|
| Coverage-Guided Fuzzing | libfuzzer-sys harnesses for DPI parsers and tarpit sanitization |
| TAXII Validation Path | CI exercises the TAXII endpoint surface in hivemind-api |
| Operator Dashboard | ANSI terminal dashboard plus --json NDJSON mode for scripts and pipelines |
| Controller View | blackwall-controller prints sensor status in a stable table instead of raw heartbeats |
| Cross-Platform Dev Surface | tarpit, hivemind, hivemind-api, and hivemind-dashboard build on macOS and Linux |
| Feature-Gated Privacy Paths | Optional real TFHE and Groth16 code paths live in the repo behind features |
| Crate | Kind | Purpose |
|---|---|---|
blackwall-ebpf |
binary | XDP ingress, TC egress, tail-call DPI, in-kernel redirect, connection tracking |
blackwall |
binary | eBPF loader, event consumer, classifier, rule writer, peer publisher |
tarpit |
library + binary | Deception services and SSH-style interaction path |
hivemind |
library + binary | Mesh node, consensus, reputation, PoW admission, FL modules |
hivemind-api |
library + binary | Feed server, STIX/TAXII surface, stats endpoint |
hivemind-dashboard |
binary | ANSI dashboard and NDJSON telemetry output |
blackwall-controller |
binary | Controller and status monitor for sensor nodes |
common |
library | Shared ABI, event structs, mesh-facing types, constants |
xtask |
binary | Build helper for blackwall-ebpf and other workspace tasks |
| Surface | Status |
|---|---|
blackwall-ebpf |
Linux-only, built separately with nightly and bpfel-unknown-none |
blackwall |
Linux-only because it loads and manages eBPF programs |
tarpit, hivemind, hivemind-api, hivemind-dashboard, blackwall-controller, xtask |
Normal Rust userspace crates |
For the full implementation-level walkthrough, see docs/architecture.md.
Linux userspace crates:
cargo build --workspaceeBPF object:
cargo xtask build-ebpfCross-platform verification subset:
cargo test -p tarpit -p hivemind -p hivemind-api -p hivemind-dashboardsudo RUST_LOG=info ./target/release/blackwall config.toml
RUST_LOG=info ./target/release/tarpit
RUST_LOG=info ./target/release/hivemind
RUST_LOG=info ./target/release/hivemind-api
./target/release/hivemind-dashboard
./target/release/blackwall-controller 10.0.0.2:9471# Live dashboard
./target/release/hivemind-dashboard
# Scripted monitoring
./target/release/hivemind-dashboard --json | jq '.peer_count'
# Feed query
curl -H "Authorization: Bearer <api-key>" http://127.0.0.1:8090/api/v1/feedsiren/
├── README.md
├── docs/
│ ├── README.md # Documentation index
│ ├── architecture.md # Current code paths and system flow
│ ├── problem.md # Why the codebase exists
│ ├── moat.md # What is hard to replicate
│ ├── testing.md # Verification story and current gaps
│ ├── threat-model.md # Trust boundaries and known limits
│ ├── team.md # Four-person execution model and ownership map
│ ├── code-map.md # File-level source inventory
│ ├── glossary.md # Shared terminology
│ ├── components/ # One page per crate
│ └── specs/ # External contracts such as OpenAPI
├── blackwall-ebpf/
├── blackwall/
├── tarpit/
├── hivemind/
├── hivemind-api/
├── hivemind-dashboard/
├── blackwall-controller/
├── common/
├── xtask/
└── CONTRIBUTING.md
| Endpoint | Method | Description |
|---|---|---|
/api/v1/feed |
GET | Verified IoCs as JSON |
/api/v1/feed/stix |
GET | STIX 2.1 bundle |
/api/v1/feed/splunk |
GET | Splunk HEC-compatible JSON |
/api/v1/feed/qradar |
GET | QRadar LEEF output |
/api/v1/feed/cef |
GET | CEF output |
/api/v1/stats |
GET | Feed statistics |
/taxii2/ |
GET | TAXII discovery document |
/taxii2/collections/ |
GET | TAXII collections |
/taxii2/collections/{id}/objects/ |
GET | TAXII object retrieval |
/stats |
GET | Dashboard stats endpoint |
Full contract: docs/specs/hivemind-api-openapi.yaml
| Surface | Description |
|---|---|
| ANSI dashboard | Live terminal view of mesh and firewall state |
| NDJSON dashboard mode | Script-friendly stream for jq, files, and shippers |
| Controller table | Multi-node sensor status via blackwall-controller |
| Area | Current state |
|---|---|
| Workspace tests | cargo test --workspace |
| Fuzzing | Coverage-guided cargo-fuzz targets for DPI parsers and tarpit sanitization |
| TAXII path | CI test coverage for the TAXII endpoint surface |
| Pagination contracts | API contract tests in hivemind-api/tests/load_test.rs |
| Build matrix | Linux, eBPF nightly build, macOS userspace subset, feature-matrix builds |
More detail: docs/testing.md
Implementation-focused documentation lives in docs/.
| Document | Contents |
|---|---|
| Architecture | Current process and data flow |
| Problem | Concrete security problems Siren addresses |
| Moat | Technical properties that are hard to copy |
| Testing | Verification story, CI, fuzzing, and remaining gaps |
| Threat Model | Active trust boundaries and implementation limits |
| Team | Four-person execution model and division of labor |
| Code Map | Crate and file inventory |
| Components | One page per crate |
| Specs | External contracts and OpenAPI description |
| Glossary | Shared terms and acronyms |
| Member | Role | Ownership |
|---|---|---|
| Ian Roybal | Architecture and kernel lead | blackwall-ebpf, common, cross-workstream integration |
| Arav Lohe | Userspace enforcement lead | blackwall, blackwall-controller, policy and orchestration |
| Chinonso U. Ogwudu | Deception lead | tarpit, protocol fidelity, attacker interaction quality |
| Rishi Gandhe | Mesh and operator-surface lead | hivemind, hivemind-api, hivemind-dashboard |
More detail: docs/team.md