Skip to content

How Omnodex Works

Omnodex operates as a passive observer of AI agent execution. It hooks into the agent runtime, captures a complete record of activity, and analyzes it for risk - all without interfering with the agent itself.

Agent executes -> Hook fires -> Event captured -> Log appended -> Analysis runs -> Dashboard updates

Each stage is independent and asynchronous. A failure at any stage does not affect the agent or earlier stages.

Omnodex registers as a hook in the agent’s runtime (Claude Code hooks, OpenAI Codex hooks). For desktop agents like Cowork, it intercepts at the MCP proxy layer instead. When the agent invokes a tool, the runtime fires the hook with the event details.

The hook is:

  • Async - It does not block the agent’s execution
  • External - It runs outside the agent’s context window (the agent cannot see it)
  • Passive - It observes only; it cannot modify the agent’s behavior

The hook captures structured event data:

  • What tool was called
  • What parameters were passed
  • What result was returned
  • When it happened
  • Which session it belongs to

Events are normalized into a consistent schema regardless of which agent or interceptor produced them.

Events are appended to an immutable, append-only JSONL file. This is the source of truth. Properties:

  • Append-only - Events can never be modified or deleted once written
  • Tamper-evident - The sequential structure makes gaps or modifications detectable
  • Replayable - Any derived view (database, dashboard) can be rebuilt from the log

The rule engine scans events and applies detection rules. Each rule defines a pattern to match and a risk level to assign. Analysis produces findings that are attached to the events that triggered them.

Results are available via:

  • A local web dashboard with real-time SSE updates
  • CLI reports
  • (Hosted tier) A cloud dashboard with team access

Event-log-first: The JSONL event log is the source of truth. The SQLite database is a derived read model that can be rebuilt by replaying the log at any time.

Interceptor-agnostic: The system is designed to support multiple agent runtimes through a common interface. Adding a new agent only requires implementing the interceptor interface - everything downstream works unchanged.

Local-first: The free tier is a complete, fully-functional product that runs entirely on your machine. Cloud features are additive, not required.