A protocol for AI agent workspace state and effect management

eouzoe1 pts0 comments

GitHub - eouzoe/reel: A protocol for AI agent workspace state and effect management. · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

eouzoe

reel

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

master

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>3 Commits<br>3 Commits

crates

crates

spec

spec

.clippy.toml

.clippy.toml

.gitignore

.gitignore

Cargo.lock

Cargo.lock

Cargo.toml

Cargo.toml

LICENSE

LICENSE

README.md

README.md

deny.toml

deny.toml

rust-toolchain.toml

rust-toolchain.toml

rustfmt.toml

rustfmt.toml

View all files

Repository files navigation

reel

reel is a protocol for the boundary between an AI agent's speculative work and<br>the systems it does not own.

An agent reasons by attempting things. Some attempts cross that boundary: a<br>message is posted, a row is written, a payment is taken. Once an action has<br>crossed, no later decision — including the decision to abandon the line of<br>reasoning that produced it — can retract it. reel exists to make the boundary<br>transactional, so that an action the system decides to discard is never<br>performed in the first place.

What it is

reel defines six content-addressed types — Hash, Block, Ref, Delta,<br>Capability, View — three verbs — fork, commit, abort — and three<br>invariants: reachability, the silencing of discarded irreversible effects, and<br>capability narrowing.

The load-bearing decision is that a View's pending side-effects are themselves<br>a content-addressed Block. commit moves that block into the committed log<br>and drains it; abort drops the reference, after which the block is unreachable<br>and is collected. No path between the submission of an irreversible effect and<br>commit can fire it, because the capability needed to fire one is constructed<br>only inside commit's drain. abort constructs none, so on the discard path<br>the effect is, by construction, unable to run.

The verbs, the snapshot-isolation reading of a View, the capability model and<br>the effect taxonomy are each taken from existing work — Gray (1981), Wang &<br>Zheng (2026), Berenson et al. (1995), Miller, Yee & Shapiro (2003),<br>Garcia-Molina & Salem (1987). reel's contribution is their composition under a<br>single content-addressed representation.

Why it is more than a single tool

State, side-effects and capabilities are represented as the same kind of<br>content-addressed block. One transactional kernel therefore provides rollback,<br>audit and sharing for an entire workspace, rather than each being implemented<br>again for each feature. A system that routes work across many external<br>resources can rebuild its state-and-effect layer on this one kernel instead of<br>reasoning about transactionality resource by resource.

What is built

The specification (spec/): the six types, three verbs and three<br>invariants; the effect classes; the conformance criteria; the adapter<br>interface.

A Rust kernel (crates/):

reel-spec — the protocol types. The namespace is a persistent,<br>copy-on-write map, so a fork shares it in constant time.

reel-store — a content-addressed block-and-ref store, with an in-memory<br>backend and a redb-backed persistent one, and a reachability walker for<br>collection.

reel-effects — the sealed effect-class traits and the linear<br>fire-capability.

reel-core — the kernel. fork (constant-time copy-on-write inheritance<br>with capability narrowing) and abort are implemented; commit follows.

adapters/, reel-cli — the filesystem and remote adapters and the<br>command-line surface, in progress.

The workspace builds on stable Rust and passes its test suite, which includes<br>property-based tests over the kernel's invariants.

What is next

commit — precondition validation and the ordered drain of buffered effects.

The command-line tool — a dry-run loop that runs a process, displays its<br>pending effects, and either commits or discards them.

The effect-interception layer — capturing a process's outbound effects<br>through a replaceable backend, so that classifying a new service is the only<br>work a new integration requires.

Building

cargo build --workspace<br>cargo...

reel toml effect commit effects content

Related Articles