Appearance
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:
| Concern | Omega Lisp | Matrix Agent Platform |
|---|---|---|
| Storage | ~/.omega-sessions/ (file) | <host-home>/data/agents/store.db (SQLite) |
| Bus | Embedded; effects via EffectBackend | NATS; effects via Matrix actors |
| Identity | OmegaConfig.profile | Authority root + principal from transport metadata |
| Provenance | Receipt, Explanation graphs | Activity frames |
| Memory | Ctx reified contexts | MemoryActor 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
- Agent integration
- Matrix actor integration
- What is the agent platform? — the cross-product reference
Source:
projects/matrix-3/packages/agents/src/AgentsRoot.ts:95($evalaccept),projects/omega-lisp/packages/core/src/index.ts:1-24(narrow facade),projects/omega-drivers/packages/inference/src/index.ts(shared driver registry).