Production-safe
AI agents.

JamJet is an open-source runtime that gives AI agents policy controls, audit trails, human approval, crash recovery, cost governance, and memory — without locking you into a cloud or framework.

Not another agent framework. The safety layer behind them.
An open-source governance runtime for agentic systems.

$ pip install jamjet

Six layers between your agent and production failure.

Other tools observe what agents do. JamJet actively prevents unsafe behavior, recovers from failures, and creates audit evidence — at the runtime layer.

1
Policy enforcement

Block unauthorized tool calls, restrict model usage, scope delegation permissions. 4-level policy hierarchy enforced before execution, not after.

2
Audit trails

Immutable, append-only log of every decision, tool call, delegation, and approval. Separate from execution data. Retention-aware. Ready for compliance export.

3
Human approval

First-class pause/resume/approval nodes. Workflows survive restarts while waiting for human input. Not a callback — a durable primitive.

4
Crash recovery

Event-sourced durable execution. Kill the process. Restart. It resumes from the exact checkpoint. Completed steps are never re-run.

5
Cost governance

Per-workflow and per-agent token and dollar budgets. Enforced by the runtime, not by application discipline. Automatic escalation when limits are reached.

6
Agent memory

Engram: temporal knowledge graph with fact extraction, conflict detection, and consolidation. Long-running agents maintain accurate context. Works via MCP with any framework.

Your agents crash. Ours recover.

Every step is checkpointed as it happens. When a worker dies mid-run, the scheduler reclaims the lease and resumes exactly where it left off.

scheduler Plan Research Analyze Review Synthesize
jamjet · crash recovery
$ jamjet run research-pipeline.yaml
▸ Starting execution exec_7f3a...
▸ [Plan]       ✓ completed  420ms
▸ [Research]   ✓ completed  1.2s
▸ [Analyze]    ✗ worker crashed
▸ Lease expired · reclaiming...
▸ [Analyze]    ✓ resumed    890ms
▸ [Review]     ✓ completed  650ms
▸ [Synthesize] ✓ completed  1.1s
▸ Execution complete · 5/5 nodes · 0 events lost
1
Worker crashes mid-execution

The Analyze step fails unexpectedly.

2
Lease reclaimed automatically

The scheduler detects the failure and reclaims work.

3
Resumes from checkpoint

No rerun of completed steps. Picks up exactly where it stopped.

4
Zero events lost

All 5 nodes complete. Full execution integrity preserved.

Production outcomes,
not feature lists

Recover from crashes without rerunning everything

Completed steps are never repeated. JamJet resumes from the exact point of failure instead of forcing a full rerun.

Pause safely for human approval

Approval gates suspend durably and survive restarts. Long-running workflows stay reliable even when humans are in the loop.

Replay any execution to debug exactly what happened

Replay a run from checkpoints, inspect traces, and see per-node cost and latency. No guessing from logs.

Connect tools and external agents with MCP + A2A

Use built-in client and server support for both protocols. Connect to tools, delegate to agents, and keep every call inside a durable execution model.

Enforce cost and iteration limits in the runtime

Cost caps, token budgets, and iteration limits are enforced by the runtime, not left to application discipline.

Evaluate agents like software, not vibes

Run evals as workflow nodes with judge-based, assertion-based, latency, and cost scoring. Fail CI on regressions.

Route to the best agent automatically

The Coordinator discovers agents at runtime, scores them on capability, cost, and latency, and routes to the best fit. Optional LLM tiebreaker when scores are close. Every routing decision lands in the event log.

Use agents as tools — three modes

Wrap any agent as a callable tool. Sync for quick tasks. Streaming with early termination for long-running work. Conversational for multi-turn refinement — all with budget enforcement.

Deploy with enterprise controls when needed

Tenant isolation, PII redaction, OAuth delegation, mTLS federation, and retention controls — enforced at the runtime layer.

Your language.
Production-grade
from day one.

Agent strategies, workflow orchestration, cost guardrails, crash recovery. Define agents and workflows in Python or Java — the Rust runtime handles the rest.

durable workflow
from jamjet import task, workflow, approval

@task(model="claude-sonnet-4-6", max_cost=0.50)
async def analyze(data: dict) -> Report:
    """Analyze data — checkpointed, cost-capped."""

@workflow
async def pipeline(raw: dict):
    report = await analyze(raw)       # crash-safe
    await approval(report)            # durable pause
    return await publish(report)     # resumes here

One question decides your authoring approach.

All three compile to the same IR and run on the same Rust runtime. Pick the one that fits how your agents think.

Do your agents need reasoning strategies?
Yes

Agent + Workflow SDK

Multi-agent systems with specialist agents. Each gets a strategy: react, plan-and-execute, critic. Typed Pydantic state. Human-in-the-loop.

from jamjet import Agent, Workflow, tool
No
Config-driven?

YAML Workflows

Tool pipelines, MCP orchestration, routing. Change flows without code deploys.

jamjet run workflow.yaml

Python Decorators

Custom logic inside nodes. Full Python library access. Class-based workflows.

from jamjet import workflow, node

All three produce the same IR → same Rust runtime → same durability, replay, and audit trails. Full guide →

Coming from LangGraph?

Same mental model

Typed state, workflow steps, routing, and graph-like structure — without relearning how to think.

Durability by default

No optional checkpoint plumbing. Every step is durable when you run on the JamJet runtime.

Validation at every boundary

Typed schemas catch state and interface problems before they spread.

Runtime-enforced limits

Budgets and iteration caps live in the scheduler, not in scattered guard code.

At a glance

Plain Python Easy start, no durability
LangGraph Graph orchestration, optional checkpoints
JamJet Python mental model + durability by default

Also migrating from:

CrewAI → OpenAI Agents SDK →

Built for your role

For Builders

Ship agents that survive production

Use your Python mental model, but get durable execution, replayable traces, and runtime-enforced safety. Start with @task, scale to full workflows without rewrites.

Read the quickstart →
For Platform Teams

Govern agents before they reach production

Policy enforcement, audit trails, cost controls, tenant isolation, PII redaction, and OAuth delegation — enforced at the runtime layer, not scattered across application code.

Enterprise controls →
For Researchers

Run reproducible experiments

The same runtime properties that make agents reliable in production make experiments reproducible in research. ExperimentGrid, checkpoint replay, publication-ready export.

Explore the research toolkit →

Reliable agents for production.
Reproducible agents for research.
Same runtime.

Compare

Sweep 6 strategies across models and seeds in one command. Parallel execution with durable checkpoints across every condition.

Replay

Replay the exact failed run. Fork with modified inputs for ablations. No need to rebuild infrastructure or re-run completed conditions.

Export

Paper-ready LaTeX tables with mean ± std, CSV, and JSON. From experiment to results without custom scripts or manual formatting.

Explore the research toolkit

Six orchestration patterns.
One runtime.

Every major multi-agent pattern is a first-class primitive — not a workaround. Pick the pattern that fits your problem. JamJet handles the durability, observability, and governance.

🧩

Single Agent

@task decorator. 3 lines of Python. Best for simple prototypes and single-purpose tasks.

➡️

Sequential Pipeline

Chain nodes in a WorkflowGraph. Each step depends on the previous. Best for ETL, document processing, multi-stage analysis.

🔀

Parallel Fan-Out

ParallelNode runs branches concurrently. Real async — no GIL. Best for multi-source research, batch classification.

🔄

Loop & Critic

EvalNode scores output, retries with feedback if quality is low. Best for code review, content generation, anything quality-critical.

🎯

Coordinator

CoordinatorNode discovers agents, scores on capability/cost/latency/reasoning modes, and routes dynamically. Async LLM tiebreaker when scores are close. Full scoring in the event log.

🔧

Agent-as-Tool

agent_tool() wraps any agent as a callable tool. Sync for quick tasks, real-time incremental streaming with budget guard and idle timeout, conversational for multi-turn refinement.

Java first, not Java later.

On Maven Central today. Agent runtime, memory layer, Spring Boot starter, and LangChain4j integration — all under the dev.jamjet group. Drop-in dependencies, zero custom repositories.

Embedded runtime (Spring Boot)
<dependency>
  <groupId>dev.jamjet</groupId>
  <artifactId>jamjet-runtime-spring-boot-starter</artifactId>
  <version>0.1.1</version>
</dependency>
@DurableAgent crash recovery

Kill your process. Restart. Resume from last checkpoint. No sidecar, no Docker. Read the launch post →

8.9x faster than sidecar

In-process method calls instead of REST hops. Virtual threads for 1M concurrent agents. Zero connection pool contention. Benchmark details →

Works with your stack

Spring AI, LangChain4j, Google ADK — add @DurableAgent to your existing agent, keep everything else.

Engram memory + MCP native

Fact extraction, hybrid retrieval, MCP client+server, plugin hot-reload. Full agent runtime in one JVM.

What's new

Apr 25
JamJet Java Runtime v0.1.1 — no sidecar, no Docker

Pure-Java agent runtime with @DurableAgent crash recovery, ByteBuddy instrumentation, virtual threads, MCP client+server, and plugin hot-reload. 8.9x faster than REST sidecar. 6 modules on Maven Central under dev.jamjet:jamjet-runtime-*.

Read the launch post →
Apr 8
Engram Spring Boot Starter on Maven Central

engram-spring-boot-starter:0.1.1 ships auto-configuration, property binding via engram.*, and an optional Actuator health indicator. Add one dependency, inject EngramClient, done.

View on Maven Central →
Apr 7
Engram v0.3.1 — memory layer for AI agents

Fact extraction, conflict detection, hybrid retrieval (vector + FTS5 keyword + graph), token-budgeted context assembly, and a 5-operation consolidation engine. Published as jamjet-engram on crates.io and included in dev.jamjet:jamjet-sdk on Maven Central.

Read the announcement →
Apr 7
The State of Memory in Java AI Agents

A landscape survey of every option Java developers have for adding persistent memory to AI agents — LangChain4j, Spring AI, Koog, Embabel, Google ADK, and the rest. Why every option stops at chat history.

Read the landscape →
Mar 29
JamJet Spring Boot Starter on Maven Central

One dependency gives your Spring AI app crash recovery, audit trails, replay testing, and human-in-the-loop gates.

Read more →

Need memory first?
Start with Engram.

Open-source memory for MCP-native AI agents. Use it standalone today with Claude, Cursor, or any MCP client — then add JamJet governance when your agents move toward production.

Add to Claude Desktop
"mcpServers": {
  "memory": {
    "command": "engram",
    "args": ["serve", "--db", "memory.db"]
  }
}

11 MCP tools · Ollama / OpenAI / Anthropic / Google · SQLite or Postgres

Built for regulated industries

Policy engine Audit trails Tenant isolation PII redaction OAuth 2.0 delegation RBAC mTLS federation Retention policies

All enforced at the Rust runtime layer, not by convention. Open source, cloud-agnostic, no lock-in.

Security & enterprise docs →

Make your agents production-safe.

Start with a 60-second quickstart. Add policy controls, audit trails, and governance as you need them.

$ pip install jamjet
Read the quickstart View on GitHub