JamJet · Agent Action ControlProve what every agent was allowed to do
Prove every agent action.
jamjet.recorder·research-pipeline00:00 / 00:09
▸ready
the tape · tool calls
14:22:01fs.read_corpusALLOW
14:22:02web.fetchALLOW
14:22:03db.drop_userBLOCKED
14:22:06github.mergeREQUIRES APPROVAL
action_receipt.json·awaiting approval
That's one agent run, played back. It read files. It tried to drop a users table — blocked.
It crashed mid-analysis — recovered. It asked to merge to production — held for a human, then signed.
Drag the scrubber: every call is policy-checked, recoverable, and written to a receipt anyone can
verify, independent of your agent framework.
Not another agent framework. The action-control layer that sits underneath them.
Keep LangGraph, CrewAI, Claude Code, MCP, OpenAI Agents SDK, or Spring AI —
add JamJet where tool calls need policy, approval, and audit.
Engram · 88.8% on LongMemEval-S (proxy benchmark)·AIP · agent identity + delegation chains (arXiv draft)·AgentBoundary v0.1 · open spec for AI action proof · public
pip install jamjet · one decorator puts the call on the tape, with the same policy across Claude Code, MCP, OpenAI Agents SDK, Spring AI
Why we built it
Most of what breaks an AI agent in the real world isn’t model quality.
It’s the boring stuff: a worker dies, a tool gets called wrong, a budget runs out,
an audit team asks what happened. We built JamJet to make those things controllable,
recordable, and recoverable — without forcing you to abandon LangGraph or CrewAI or
whatever’s already working.
The runtime sits between your agent and everything it touches. Models, tools, memory,
other agents — every interaction passes through a layer that can block, wait,
record, and resume. Open source. Apache 2.0. Cloud-neutral.
Every agent toolchain is inventing its own safety layer. JamJet gives you one.
One policy.yaml in ~/.jamjet/. Every adapter below loads it and
emits conformant audit JSONL. Run jamjet audit show to tail every decision,
from every source, on one tape.
We respect the platforms we plug into. Claude Code gave developers a hook point —
JamJet gives that hook point a policy engine, approval flow, and audit trail, and
carries the same rules to OpenAI Agents SDK, MCP, and your own code.
What the recorder catches
Six failure modes. Six gates.
Other tools observe what agents do. JamJet actively prevents unsafe behavior,
recovers from failures, and creates audit evidence — at the runtime layer.
01
Lost progress
A worker dies mid-run. JamJet replays the event log and resumes at the failed node.
02
Unsafe tool
An agent reaches for a tool it shouldn’t. The 4-level policy hierarchy blocks the call before execution.
03
Skipped approval
A high-risk action waits for a human. The run survives restarts. The decision lands in audit.
04
Runaway cost
A reflection loop won’t stop spending. The runtime halts the loop before it crosses the cap.
05
Missing audit
Compliance asks what happened. Every decision is in a signed, exportable evidence package.
06
Forgotten context
The agent forgets across sessions. Engram surfaces durable facts — not raw chat history.
Both compile to the same IR and run on the same Rust runtime.
Java has its own native runtime too — zero sidecar, virtual threads,
8.9× faster than the REST sidecar in our benchmark.
When the team needs the cockpit
JamJet Cloud
The hosted control plane for agent runs. Trace timeline, policy violations,
approval queue, cost guardrails, audit export, hosted Engram — across your team.
Open-source memory for MCP-native AI agents. Fact extraction, conflict detection,
hybrid retrieval, consolidation. Use it standalone with Claude, Cursor, or any MCP client.