JamJet Runtime · JVM-native Durable agents that survive redeploys

Crash-safe agents that
survive redeploys.

JVM-native runtime. Native MCP. Checkpoint-based replay. Spring Boot starter. Eight modules on Maven Central. Apache 2.0.

RefundReviewer.java · jamjet-runtime-instrument
import dev.jamjet.runtime.instrument.DurabilityContext;
import dev.jamjet.runtime.instrument.annotations.Checkpoint;
import dev.jamjet.runtime.instrument.annotations.DurableAgent;

@DurableAgent("refund-reviewer")
public class RefundReviewer {
  @Checkpoint("review")
  public Decision review(RefundRequest r) {
    return DurabilityContext.current().replayOrExecute("review", () -> {
      // crash here? next worker replays from this checkpoint.
      return policy.evaluate(r);
    });
  }
}
Drops into Spring as a @Service. Equivalent @task pattern in Python jamjet.
$ pip install jamjet

Eight modules on Maven Central · Python SDK on PyPI · 8.9× faster than the REST sidecar on our benchmark

What it’s for

Built for agents that handle
real money, real code, real users.

  • fintech

    Refund reviewer

    Approves Stripe refunds. Policy-gated, human-in-the-loop for amounts over a threshold, receipt for every decision.

  • devtools

    Code review bot

    Opens, comments on, and merges pull requests. Crash recovery between any two steps. Replay-or-execute means no duplicate side effects on resume.

  • cx

    Support triage

    Routes tickets, drafts replies, escalates the hard ones. Survives redeploys without losing in-flight conversations.

Why JVM

Most agent frameworks ship Python-first. Spring AI and LangChain4j devs got bolt-ons — sidecars, RPC bridges, “we’ll get to durability later” handwaves. The shape was always the same: the agent runs over there, durability lives over here, and you wire them together with code you’d rather not maintain.

JamJet Runtime is JVM-native end to end: a real scheduler, checkpoint-based crash recovery, a native MCP server and client, and a Spring Boot starter that registers durable agents as beans. Drops into existing Spring AI and LangChain4j codebases without a shim. Eight modules on Maven Central.

All artifacts on Maven Central →

Three things the runtime does

Durability inside.
Protocols and receipts at the edges.

  1. 01
    Crash-safe by default

    @DurableAgent + @Checkpoint mark the methods; DurabilityContext.replayOrExecute records and replays. Worker dies, next one resumes. Virtual threads, no sidecar.

  2. 02
    MCP-native, not bolted on

    MCP server, client, and tool executor live inside the runtime — under jamjet-runtime-protocols. Compose with Spring AI and LangChain4j tools without writing a shim layer.

  3. 03
    Pairs with the cloud SDK

    jamjet-cloud-sdk ships AgentBoundary v0.1 receipt types. Wire it alongside the runtime to emit chained, hashed, third-party-verifiable Action Receipts.

Watch one survive

A worker dies.
The agent finishes.

Every step is checkpointed as it happens. When a worker dies mid-run, the scheduler reclaims the lease and resumes from exactly where it stopped. No reruns. No duplicate side effects. No lost events. And a receipt at the end.

  • SIGTERM received — the Analyze step terminates mid-execution.
  • Lease reclaimed — another worker picks up the run within seconds.
  • Resume from checkpoint — completed steps stay completed.
  • Receipt emitted — the final action is hashed, chained, and verifiable.
See it in three languages

Same runtime guarantees.
Idiomatic in each.

ResearchAgent.java Java
import dev.jamjet.runtime.instrument.DurabilityContext;
import dev.jamjet.runtime.instrument.annotations.Checkpoint;
import dev.jamjet.runtime.instrument.annotations.DurableAgent;

@DurableAgent("research-pipeline")
public class ResearchAgent {

  @Checkpoint("analyze")
  public String analyze(String topic) {
    return DurabilityContext.current().replayOrExecute("analyze", () -> {
      return llmClient.chat(systemPrompt, topic);
    });
  }
}
ResearchAgent.java · Spring Spring Boot
import dev.jamjet.runtime.instrument.DurabilityContext;
import dev.jamjet.runtime.instrument.annotations.Checkpoint;
import dev.jamjet.runtime.instrument.annotations.DurableAgent;
import org.springframework.stereotype.Service;

@DurableAgent("research-pipeline")
@Service
public class ResearchAgent {

  @Checkpoint("search")
  public String search(String topic) {
    return DurabilityContext.current().replayOrExecute("search", () -> {
      return searchClient.query(topic);   // crash-safe
    });
  }
}

// DurableAgentBeanPostProcessor detects @DurableAgent at startup.
// application.yml needs only: jamjet.storage: in-memory
pipeline.py Python
from jamjet import task, workflow, approval, gate

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

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

Java runs on its own JVM scheduler in jamjet-runtime-java. Python runs on the Rust runtime via the jamjet SDK. Spring Boot users get the Java runtime by adding the starter dependency.

What ships today

Eight modules on Maven Central since April 2026. Four runnable examples in the repo: crash recovery, real-agent (OpenAI), Spring Boot comparison, latency benchmark.

Browse the examples →

Add one dependency

Get started.

Maven
<dependency>
  <groupId>dev.jamjet</groupId>
  <artifactId>jamjet-spring-boot-starter</artifactId>
  <version>0.3.1</version>
</dependency>
Gradle (Kotlin)
implementation(
  "dev.jamjet:jamjet-spring-boot-starter:0.3.1"
)
PyPI
pip install jamjet
Source
git clone https://github.com/jamjet-labs/jamjet-runtime-java

Full guide — JVM-native runtime docs · GitHub — jamjet-runtime-java, jamjet

JamJet Runtime is also the Level 4 reference implementation of AgentBoundary v0.1. 40/40 conformance scenarios · cross-vendor matrix →

Stop wiring durability
into every agent by hand.

$ pip install jamjet

Apache 2.0 · Cloud-neutral · JVM-native · Built in Rust, Java, and Python.