The OMI spec is under heavy development, and every piece of it is subject to change. We are documenting the core primitives for sovereign application lifecycles. Join us in defining the v1.0 draft.
Operational Services

Operational Services

In the OMI ecosystem, Operational Services are the “Back Office” of your swarm. While the App Registry handles discovery and the Auth Provider handles the gates, Operational Services manage the consequences of your app’s existence: its history, its costs, and its health.

In a traditional “CRUD State of Mind,” you would manually instrument every service with specific SDKs for logging, billing, and monitoring. In OMI, these are delegated. Your Domain Services simply emit standardized events, and the swarm routes them to the Operational Services of your choice.

The “What”: The Swarm’s Nervous System

Operational Services are a pluggable category of core services that handle cross-swarm telemetry. Common examples include:

ServiceRoleOperational Responsibility
Logging ProviderThe ArchivistCollects and indexes system events and errors across all services.
Billing/Usage ServiceThe AccountantTracks resource consumption or API calls to manage quotas and payments.
Audit ServiceThe Court ReporterMaintains an immutable record of high-value actions (e.g., who changed a configuration).
Metrics ServiceThe Vitals MonitorAggregates performance data (latency, throughput) to ensure swarm health.

The “Why”: Decoupling the “How” from the “Result”

  1. Unified Telemetry (No More SDK Fatigue) Because OMI Domain Services follow a strict protocol, they don’t need to know how to talk to a specific logging vendor. They send a standardized OMI event. Whether that event ends up in a high-end enterprise dashboard or a simple flat file is entirely up to the Operational Service you’ve bound to the Registry.

  2. Operational Sovereignty You are no longer locked into the “default” monitoring tools of your cloud provider. If you want a Billing Service that respects user privacy by only tracking aggregate usage, or a Logging Service that encrypts all data before it hits the disk, you just swap the pointer in the App Registry. Your Domain Services don’t need a single code change.

  3. The “Black Box” Reporting Operational Services respect the Black Box nature of Domain Services. They don’t peer into the internal database architecture; they listen to the service’s heartbeat and its external interactions. This ensures that even your logs and billing data remain decoupled from the internal implementation of your features.

How It Works: The Injected Context

When a Domain Service handshakes with the App Registry, it receives the Operational Context. This is a list of endpoints where it is required to report its activity.

  1. Instruction: The Registry tells the CMS: “Send all logs to https://logs.provider.io and all billing receipts to https://billing.provider.io.”
  2. Execution: The CMS performs its function (e.g., updating a post).
  3. Emission: The CMS sends a signed “Event Packet” to the designated Operational Services.
  4. Verification: The Operational Service verifies the packet’s signature using the CMS’s Public Key (resolved from the Registry) to ensure the event is legitimate.
The Benefit: You stop wasting engineering hours configuring “CloudWatch” vs. “Datadog” vs. “Logstash” for the 50th time. You define your operational requirements at the Registry level, and the swarm obeys.