Skip to main content

Backend service responsibilities

Implemented

Each executable is a composition root with its own lifecycle. Operational isolation does not require every package to become a network service.

ExecutableInputsDurable result / outputBoundary
ingest-gatewayAgent mTLS batches; admission logEvent or inventory topic; ACKNo analytical store or detection
analysis-engineRaw events; ruleset logDetection topicNo administrative CRUD
event-writerRaw eventsClickHouse events; quarantineProjection only
detection-writerDetectionsClickHouse detections; quarantinePreserves analytical results
alert-writerDetectionsPostgreSQL alerts, incidents, occurrencesCreates work; does not apply user triage
inventory-projectorInventory recordsClickHouse items and scan watermarksSeparate from event storage
advisory-importerOSV distribution exports; prior log stateAdvisories and feed freshnessInternet access, no asset matching or database
advisory-writerAdvisory recordsClickHouse advisory versions and feed attemptsNo internet access needed
control-apiCaller mTLS/session requests; agent renewal mTLSRegistry, certificates, triage; ruleset/admission logsTwo listeners, one authorization owner
query-apiCaller mTLS hunt requestsScoped analytical read responsesNo topic consumer or analytical writes
backbone-migratorDeclared topologyTopics and configurationOne-shot, exits
store-migratorAnalytical migrationsClickHouse schemaOne-shot, exits
control-migratorControl migrationsPostgreSQL schemaOne-shot, exits

Runtime and configuration

Long-running processes use the common platform runtime for logs, health, readiness, metrics, and shutdown. Migrators have a separate one-shot role. Services verify the dependencies they need; they do not independently mutate schemas while starting to serve.

Configuration is typed and collected at composition boundaries. See the generated environment index for every extracted declaration, including settings missing from older prose references.

Follow a subsystem

Source evidence

Reviewed against the source baseline. Seagull-backend-v2/deploy/compose.yaml · Seagull-backend-v2/README.md.