OpenOx Protocol
Ox is built on OpenOx, an open protocol for self-evolving agents. It defines how agents run, extend their capabilities, and share them while keeping their state independent of a particular interface or model provider.
This protocol document is the technical companion to A Technology for Free Will.
Distributed Evolution
An Ox can learn a new way to act without waiting for a new version of its Host or Client. It can study a website or workflow through an existing capability, turn what it learns into typed actions and reusable instructions, and make them available immediately.
Those additions can remain local or be recorded in Git and shared through a repository. Another Ox can install them, use them as they are, or adapt them to new work.
This lets each Ox evolve independently and, when users choose to share, lets different Ox evolve together. The VM, services, skills, and repository boundaries that make this possible are defined below.
Protocol Components
An Ox separates the interface, runtime, model, persistent state, and capabilities into seven components.
- 01 Ox Client
- An interface that connects to an Ox Host. A Client may be a mobile app, desktop app, web app, or command-line tool. The Host binds VM execution to the selected conversation, its permissions, attached services, and virtual filesystem view.
- 02 Ox Host
- A process or device that opens an Ox Profile, runs the Ox VM, and supplies platform and service adapters. A Client can use an embedded Host or target a compatible Host elsewhere.
- 03 Ox Agent
- The reasoning and tool-using process that pursues the user’s goals using the selected model, the state in an Ox Profile, and the capabilities exposed through the Ox VM.
- 04 Ox Model Provider
- The connection to the language model selected by the user. OpenOx does not prescribe a model or provider; the Host adapts provider-specific APIs to the provider-neutral agent loop.
- 05 Ox Profile
- A portable folder containing the Agent’s persistent state: its identity, memory, skills, artifacts, and conversation history. This keeps the Ox’s state independent of a particular Client or model.
- 06 Ox VM
- The execution environment supplied by an Ox Host. The Agent writes and runs code inside the VM without direct access to the network, Host filesystem, or device. Instead, it uses explicit
ox.*capabilities to interact with the Profile, services, websites, users, and device capabilities. Theox.fsvirtual filesystem presents Profile content, skills, services, chats, and user-granted files while preserving each source’s permissions. - 07 Ox Service Repository
- A versioned collection of service definitions described by a
repository.jsonmanifest. Every Host manages an editable local repository and may install compatible remote repositories. Web and MCP services can be shared through Git; device services are supplied by the Host.
Ox VM
When a task requires action, the model can produce JavaScript for the Agent to submit to the Ox VM. The Host validates the request, binds it to the calling chat, and queues the execution. The VM runs the code in its capability-limited environment. Explicit ox.* capabilities perform approved work outside it, and the Agent receives console output, diagnostics, errors, and attachments.
The VM provides JavaScript, a console, and the global ox capability interface. It provides no DOM, Node.js, shell, direct Host filesystem, or direct network access. Anything outside the VM must pass through an explicit Host capability.
ox.app
info · profile · notifications · language · theme · voice · model · logs · renameChat
ox.artifact
attach · import · present · rename
ox.fs
delete · edit · glob · grep · list · read · write
ox.service
attach · copy · create · delete · detach · find · inspect · invoke · listAttached · pay · signIn · solve
Git operations: checkout · commit · diff · log · restore · revert · show · statusox.skill
copy · create · delete
ox.user
choose · reportProgress
ox.web
fetch · search
ox.widget
shoveler · video
> ox.help()
OpenOx defines the VM’s observable execution boundary, not the Host’s thread model or runtime engine. The Host owns the runtime, execution queue, permissions, and capability implementations. The active Profile scope determines which state, services, skills, and files the VM can reach, while every execution remains bound to its initiating chat and the capabilities available there. Changing the active Profile scope replaces the VM and clears runtime-local state.
The VM reaches the Host through the ox.* capability tree. Every operational function accepts one options object with a user-visible purpose between 1 and 80 characters and validates its input against a closed schema. Its synchronous help() method describes the expected input and output.
The VM validates the options object against its runtime catalog before calling the Host. The Host then performs authorization, requests approval or a user handoff when required, runs the operation, records structured diagnostics, and resolves or rejects the JavaScript promise.
Virtual filesystem
ox.fs presents Profile content, skills, service sources, persisted chats, and user-granted folders as one stable namespace without revealing their backing storage.
OX:/7 ITEMSMEMORY.mdProfile memoryWritable by Profile rulesSOUL.mdAgent identityWritable by Profile rulesartifacts/Profile artifactsWritable by Profile rulesskills/System, user, and service skillsMixed sources and permissionsservices/Web, device, and MCP servicesLocal source may be writablechats/Metadata and transcriptsRead-onlyfiles/User-selected foldersRequires an attached Files serviceService repositories
A service repository is a versioned collection of web and MCP services. Its repository.json manifest identifies the collection, while each service supplies its action contracts, implementation, and optional skills. Device services are supplied by the Host instead of installed from Git.
Every Host manages an editable local repository and may install compatible remote repositories. The Host validates a service before attaching it to a chat, then continues to own its authentication, resources, approvals, and user handoffs.
Protocol Resources
Services
Services give an Ox typed actions for work outside the VM. Instead of receiving ambient access to a device or the network, the Agent discovers explicit actions with documented inputs and outputs, then invokes only the capability it needs.
A service may expose device capabilities, operate a website through the user’s browser session, or connect to an MCP server. The Host owns authentication, resources, approvals, and handoffs while the Agent uses the uniform ox.service interface.
Skills
Skills are reusable instructions that teach an Ox when and how to carry out a workflow. They can encode ordered steps, decision rules, checkpoints, safety boundaries, and a desired output without adding new authority.
A skill works only with capabilities already available to the Agent. This keeps know-how separate from access: services define what can be done, while skills explain how to combine those actions toward a reliable outcome.
User skills belong to the Profile and can coordinate several services. Service skills travel with one service and become available when that service is attached. System skills teach an Ox how to use the capabilities supplied by its Host.
Artifacts
Artifacts are durable outputs stored with an Ox Profile. Unlike an ordinary chat response, an artifact can be reopened, revised, attached to another conversation, presented to the user, or carried with the Profile.
An artifact may be a Markdown note, an imported file, or a self-contained HTML Canvas. The Agent manages artifacts through explicit Host capabilities while the Profile preserves their names, content, and relationship to saved conversations.
A Canvas is an HTML artifact for ideas that benefit from interaction or spatial explanation. It runs as a browser page independently of the chat that created it and can use window.ox.service to call Host services. Those calls use the same contracts, authentication, sensitive-action approvals, and handoffs as chat, but Canvas cannot access other ox.* namespaces or evaluate code in the Agent VM. Closing or replacing a Canvas cancels pending work and removes its temporary outputs, although it cannot undo a request an external service has already accepted.
Protocol Messaging
OpenOx does not impose one universal message envelope. Each boundary defines the narrow typed contract it needs. A Client talks to Host-owned chat operations, the Agent exchanges provider-neutral messages and streaming events through a model adapter, and JavaScript crosses the VM boundary through ox.*.
Client–Host Compatibility
Clients target the OpenOx Host contract rather than a particular platform, model provider, or VM engine. Any Client can work with any Host that implements a compatible version of that contract and exposes a route the Client can reach.
LOCAL
REMOTE
The Host keeps ownership of the Ox’s Profile, chats, model connection, services, permissions, and VM lifecycle. Embedded and remote routes expose the same responsibilities, although authentication, discovery, reconnection, and event synchronization become transport concerns when the connection crosses a process or network.