Jamjet logo

Jamjet

by jamjet-labs

Durable AI runtime enforcing unified safety policies with audit trails, human approval, cost caps, and crash recovery for multi-agent workflows.

Install Jamjet

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "jamjet-labs-jamjet": {
      "command": "npx",
      "args": [
        "-y",
        "@jamjet/mcp-shim"
      ]
    }
  }
}

Settings β†’ Developer β†’ Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Install not yet sandbox-testedβ€” we haven't run this command through our automated sandbox yet. Not a red flag; we're working through the catalog.

Overview

JamJet provides a durable, agent-native runtime that enforces safety policies across AI agents and tool calls. It supports runtime blocking of unsafe actions, pausing for human approval, cost capping, and audit trail recording. Designed to integrate with multiple agent frameworks, it enables crash recovery and replay from checkpoints, ensuring reliable and controlled execution of multi-agent workflows.

Use cases

  • Enforce runtime safety policies on AI tool calls
  • Pause agent actions for human approval on risky operations
  • Cap operational costs per agent or project
  • Record and audit all agent actions for compliance
  • Recover and resume agent runs after crashes

Key features

  • Graph-based workflow execution with durable checkpoints
  • Multi-agent coordination with a unified policy file
  • Native MCP client and server support
  • Integrations with Claude Code, OpenAI Agents SDK, LangChain, Spring AI, and others
  • Java and Python SDKs with REST and embedded runtimes
  • Audit trail storage in JSONL format with CLI tools for inspection

Security & health

What it can reach and how reliably it runs β€” from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

19/19 checks healthy over the last 79d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 8d ago via OSV.dev Β· @jamjet/mcp-shim (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks β€” not a rating.

GitHub stars23Stargazers on the source repository.
npm downloads14Package downloads in the last 30 days.
Last commit17d agoMost recent push to the default branch.
Directory activity2 viewsConfig copies, upvotes, and views on AllMCPs.

From the project README

⚑ JamJet

The action-control plane for AI agents. One policy file. One audit trail. Across hooks, guardrails, MCP gateways, SDKs, and custom runtimes.

jamjet MCP server CI PyPI Maven Central crates.io License Discord

jamjet.dev Β· Quickstart Β· Docs Β· Examples Β· Blog Β· Discord

Open in GitHub Codespaces Open in Gitpod


Write the safety policy once. Run it everywhere your agents can act.

JamJet sits underneath your agent (Claude Code, OpenAI Agents SDK, MCP clients, LangChain, CrewAI, ADK, Spring AI, custom code) and enforces what prompts cannot:

  • πŸ›‘οΈ Block unsafe tool calls at runtime: database deletes, payments, file writes
  • βœ‹ Pause for human approval on risky actions, durably
  • πŸ’Έ Cap cost per agent, per run, per project
  • πŸ“’ Record an audit trail that survives a regulator's review
  • βͺ Replay or resume crashed runs from the last checkpoint

Keep your agent framework. Add JamJet where tool calls need control.

JamJet safety demo

See it in 60 seconds

Terminal
pip install jamjet
jamjet demo unsafe-tool-call

No API key. No Docker. No cloud account. The model is mocked; the enforcement path is real. Three more demos run the same way:

bash
jamjet demo approval        # pause-for-approval flow
jamjet demo budget-cap      # $0.05 cost cap
jamjet demo mcp-tool-policy # MCP-shaped policy (preview of JamJet Gateway)

Works alongside Claude Code Β· OpenAI Agents SDK Β· MCP clients Β· LangChain Β· CrewAI Β· ADK Β· Spring AI Β· LangChain4j.

On the JVM: one dependency

Spring AI and LangChain4j teams get the same layer without writing glue code. The Spring Boot starter auto-injects JamJet advisors into your ChatClient: every call becomes durable and audited, with no changes to your application code.

xml
<dependency>
    <groupId>dev.jamjet</groupId>
    <artifactId>jamjet-spring-boot-starter</artifactId>
    <version>0.1.0</version>
</dependency>
properties
spring.jamjet.runtime-url=http://localhost:7700
spring.jamjet.approval.enabled=true   # opt-in human-in-the-loop approval

Crash recovery, event sourcing, and a REST endpoint to approve or reject held actions. Falls back gracefully if the runtime is unreachable.

Prefer no sidecar at all? JamJet Java Runtime embeds durable execution directly in your JVM process: Java 21, no Docker, 8.9Γ— faster than calling out to a REST sidecar (benchmark and launch post). Works with Spring AI, LangChain4j, and Google ADK.

β†’ See a Spring Boot agent survive kill -9 mid-run in examples/loan-underwriter-agent: resumes from disk checkpoints, gates disbursement on human approval, emits a signed receipt bundle.

The same policy, everywhere

Every agent toolchain is inventing its own safety layer. JamJet gives you one policy file and one audit trail across all of them.

AdapterInstallHost
@jamjet/claude-code-hooknpm i -g @jamjet/claude-code-hookClaude Code PreToolUse hook
@jamjet/mcp-shimnpx -y @jamjet/mcp-shim ...Any MCP client (Claude Desktop, Cursor, …)
@jamjet/openai-guardrailnpm i @jamjet/openai-guardrailOpenAI Agents SDK tool guardrail (TS)
jamjet.integrations.openai_guardrailpip install jamjetOpenAI Agents SDK tool guardrail (Python)
jamjetpip install jamjetPython SDK + runtime
dev.jamjet:jamjet-spring-boot-starterMaven / GradleSpring AI ChatClient advisors
@jamjet/cloudnpm i @jamjet/cloudTypeScript SDK + shared engine
@jamjet/clinpm i -g @jamjet/cliUnified jamjet audit show / jamjet approve

All adapters load the same policy.yaml. All emit conformant audit JSONL to ~/.jamjet/audit/. Run jamjet audit show to tail every decision across every adapter in one chronological view.

JamJet does not replace the hook points these platforms give you. It makes them do more: Claude Code's PreToolUse hook gets a real policy engine, approval flow, and audit trail, and the same rules carry unchanged to OpenAI Agents SDK, MCP clients, Spring AI, and your own Python or TypeScript code.

One policy, every adapter

yaml
# ~/.jamjet/policy.yaml
version: 1
rules:
  - { match: "*delete*", action: block }
  - { match: "payments.*", action: require_approval }
  - { match: "shell.exec", action: block }

Drop this file in ~/.jamjet/. Every adapter listed above uses it automatically.

Prompts are not a security boundary. The runtime is.

β†’ Read When AI Deletes the Database for why this is a runtime architecture problem, not a model problem. β†’ See the deeper durability demo at jamjet.dev/demo for what happens when an agent crashes mid-tool-call.

Policy in your own code

Drop a policy beside your agent code. The runtime intercepts any matching tool call before it leaves the agent's process: blocked_tools are refused outright, require_approval_for pauses execution durably and waits for an out-of-band decision. Crashes don't lose the approval; execution resumes when it arrives.

yaml
# workflow.yaml
policy:
  blocked_tools:
    - "*delete*"
    - "payments.refund"
  require_approval_for:
    - "database.*"
    - "payment.transfer"
    - "user.suspend"

Python, with the hosted control plane:

server.ts
import jamjet
jamjet.cloud.configure(api_key="jj_...", project="my-agent")
jamjet.cloud.policy("block", "*delete*")
jamjet.cloud.policy("require_approval", "database.*")
# Every OpenAI / Anthropic call in this process is now policy-gated.

β†’ Runnable approval workflow in examples/hitl-approval Β· Cloud Quickstart

Where JamJet sits

text
            Your Agent / Framework
   (LangChain Β· CrewAI Β· ADK Β· custom Β· MCP client)
                     β”‚
                     β–Ό
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
  β”‚            JamJet Safety Layer                β”‚
  β”‚   policy Β· approval Β· budget Β· audit Β· replay  β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β–Ό
        Tools Β· MCP servers Β· APIs Β· DBs Β· Agents

Use JamJet when your agent can…

  • call MCP servers or arbitrary tools
  • write to a database
  • send emails or Slack messages
  • trigger payments or external API calls
  • access customer data or PII
  • run for minutes/hours and needs to survive crashes
  • spend real model budget at scale
  • delegate to other agents

What JamJet adds

Without JamJetWith JamJet
Agent crashes lose progressResume from the last checkpoint
Tool calls rely on scattered app logicRuntime policy blocks unsafe actions
Human approval is custom glueApproval is a durable workflow step
Costs are discovered after the billBudgets enforced per agent / per run
Audit evidence is stitched from logsAppend-only event log, signed export
Memory is framework-specificPair with Engram for portable memory (MCP Β· REST Β· Python Β· Java)
Frameworks stay siloedMCP + A2A connect tools and agents

A full runtime underneath

The safety layer runs on a durable, event-sourced execution engine. When you want more than enforcement, it's already there:

Reviews

No reviews yet β€” be the first to share how it worked for you.

Frequently Asked Questions about Jamjet

No, JamJet can run locally without an API key, Docker, or cloud account. The enforcement path is real while models can be mocked.

JamJet has a Rust core for performance and Python SDK for ergonomics. It also provides a Java runtime and Spring Boot starter for JVM integration.

JamJet supports durable execution with event sourcing and checkpoints, allowing runs to be resumed or replayed after crashes.

Yes, JamJet can cap costs per agent, per run, or per project to control spending.

JamJet provides adapters and SDKs for frameworks like Claude Code, OpenAI Agents SDK, MCP clients, Spring AI, LangChain, and others, enabling policy enforcement without changing application code.

Related MCP servers

Add a badge to your READMEShow it’s listed β€” live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewJamjet AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/jamjet-labs-jamjet?style=directory)](https://allmcps.com/mcp/jamjet-labs-jamjet)
HTML Embed
<a href="https://allmcps.com/mcp/jamjet-labs-jamjet"><img src="https://allmcps.com/api/badge/jamjet-labs-jamjet?style=directory" alt="Jamjet on AllMCPs" /></a>