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...