Architecture

oml is a programmable Lisp runtime. This document describes the current foundation and the intended core shape of the project.

Status: The first implementation stage uses JVM Clojure and a Nix-based build. Babashka/SCI support and ACP agent integration are accepted future directions, not shipped behavior.

Shape: body and mind

Everything that acts on oml — human or AI — does so through a single eval surface. That uniformity is deliberate: there is one way to affect the image, and it is governed by the grant.

Core components

1. Interpreter

A Lisp of the Clojure family. The first version runs on a full JVM via Clojure. A lightweight babashka/SCI runtime is an accepted future possibility, not a current delivery commitment.

2. Persistent image

Durable state that survives restarts. Objects and their behavior are saved and restored, so a launch resumes where the previous one left off. The image is the memory.

3. Grant

A deny-by-default eval surface. A driver sees exactly the vocabulary it was granted — a bounded set of verbs, never ambient authority. Two authorities coexist in one image:

Adding or removing a capability is an edit to the grant, not prompt engineering.

4. Natural-language front

The default way to drive oml is natural language: a request is interpreted by the attached mind, which acts in the image through the grant. Explicit Lisp can be entered directly, for precision, bypassing the mind.

5. Skills

Successful workflows are persisted as named, reusable capabilities. An image accumulates skills over its lifetime, so the vocabulary the owner and the agent can invoke grows with use. Skills are how the image gets better at understanding and serving its owner.

6. Extension seam

Capabilities are added to an image by import, declared in the image's configuration. The core provides the seam; what is imported — tools, verbs, integrations — is the owner's choice. Connectivity to other images is one such importable capability; it is not part of the core.

Configuration

An image reads its configuration from ~/.oml: its identity, where it persists, its default grant, and the capabilities it imports. Running the binary against a given configuration is how an image is specialized for a purpose.

Runtime notes

Future direction

The accepted ACP client design describes how an external coding agent can be connected through the Agent Client Protocol. See ACP client architecture.