Skip to content

Matrix integration

Omega Lisp and the Matrix Agent Platform are separate products. They meet in three places.

1. $eval on system.agents

AgentsRoot.accepts.$eval (projects/matrix-3/packages/agents/src/AgentsRoot.ts:95):

ts
'$eval': { description: 'Evaluate omega-lisp in the persistent agents REPL session' }

When $eval is invoked, AgentActor looks up the embedded OmegaSandbox (loaded dynamically from @open-matrix/lisp-actor) and evaluates the source against the session's persisted REPL state. The result and any updated REPL state flow back through the activity-frame stream and session_state(key='repl_state').

This makes Omega the in-loop scripting language for agents — when an agent needs to compute something with intermediate state, the natural surface is $eval, not a tool.

2. The @omega/core narrow facade

projects/omega-lisp/packages/core/ exports a narrow slice of the Omega API for Matrix-membrane consumers:

ts
// projects/omega-lisp/packages/core/src/index.ts
export type { Expr, Val, State, Env, Store, Runtime } from "../../../src/...";
export { COWStore, compileTextToExpr, stepOnce, runToCompletion } from "../../../src/...";
export { createKernelRuntime, createKernelPrimitives } from "./kernel";

This package is what a Matrix actor depends on when it wants to evaluate Lisp without dragging in the REPL, the driver registry, or the PiAI bindings. The core/repl/agents split inside projects/omega-lisp/packages/ is exactly to make that lean integration possible.

3. Inference goes through the same drivers

Matrix's system.inference (the package @open-matrix/inference-catalog) and Omega's OmegaRuntime both use the @open-matrix/inference driver registry. A request issued by Matrix goes through the same InferenceDriver interface as a (effect infer.op …) from Omega.

This means:

  • Adding a new provider once (a new @open-matrix/driver-…) makes it usable from both products.
  • Credentials managed by Factotum are visible to Omega-driven inference exactly the same way they're visible to agent-platform inference.

Architectural separation

Even with these three meeting points, the products are separate:

ConcernOmega LispMatrix Agent Platform
Storage~/.omega-sessions/ (file)<host-home>/data/agents/store.db (SQLite)
BusEmbedded; effects via EffectBackendNATS; effects via Matrix actors
IdentityOmegaConfig.profileAuthority root + principal from transport metadata
ProvenanceReceipt, Explanation graphsActivity frames
MemoryCtx reified contextsMemoryActor SQLite tables

You can use one without the other. You can use Omega standalone (the REPL is a complete product). You can use the agent platform without ever calling $eval.

See also

Source: projects/matrix-3/packages/agents/src/AgentsRoot.ts:95 ($eval accept), projects/omega-lisp/packages/core/src/index.ts:1-24 (narrow facade), projects/omega-drivers/packages/inference/src/index.ts (shared driver registry).