Skip to main content
Glama

The agent-native runtime — durable, composable, built for production.

jamjet MCP server CI PyPI crates.io License Rust Python Java Docs Discord

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

Open in GitHub Codespaces Open in Gitpod


JamJet is a performance-first, agent-native runtime for AI agents. Not another prompt wrapper — a production-grade orchestration substrate. Rust + Tokio core for scheduling, state, and concurrency. Author in Python, Java, or YAML — all compile to the same IR graph and run on the same durable engine.

Quickstart

pip install jamjet
from jamjet import task, tool

@tool
async def web_search(query: str) -> str:
    return f"Search results for: {query}"

@task(model="claude-haiku-4-5-20251001", tools=[web_search])
async def research(question: str) -> str:
    """You are a research assistant. Search first, then summarize clearly."""

result = await research("What is JamJet?")

No server. No config. No YAML. Just pip install and run. → Full quickstart

Why JamJet?

Problem

JamJet's answer

Agent runs lose state on crash

Durable graph execution — event-sourced, crash-safe resume

No way to pause for human approval

Human-in-the-loop as a first-class workflow primitive

Agents siloed in their own framework

Native MCP + A2A — interoperate with any agent, any framework

Slow Python orchestration at scale

Rust core — no GIL, real async parallelism, 88× faster IR compilation than LangGraph

Hard-coded agent routing

Coordinator Node — dynamic routing with structured scoring + LLM tiebreaker

Can't use agents as tools

Agent-as-Tool — sync, streaming, or conversational invocation modes

No governance or guardrails

Policy engine — tool blocking, approvals, audit log, PII redaction, OAuth delegation

Locked into one language

Polyglot SDKs — Python, Java (JDK 21), Go (planned) — same IR, same runtime

Progressive Complexity

Three levels of abstraction — all compile to the same IR and run on the same engine.

@task — one function, zero boilerplate

@task(model="claude-haiku-4-5-20251001", tools=[web_search])
async def research(question: str) -> str:
    """You are a research assistant."""

Agent — explicit configuration

agent = Agent("researcher", model="claude-haiku-4-5-20251001",
              tools=[web_search], instructions="Search first, then summarize.")
result = await agent.run("What is JamJet?")

Workflow — full graph control

workflow = Workflow("research")

@workflow.step
async def search(state: State) -> State:
    result = await web_search(query=state.query)
    return state.model_copy(update={"answer": result})

YAML — declarative workflows

nodes:
  think:
    type: model
    model: claude-haiku-4-5-20251001
    prompt: "Answer clearly: {{ state.query }}"
    output_key: answer
    next: end

Key Capabilities

Coordinator — dynamic agent routing. Discover agents by skill, score them, route to the best fit at runtime. Structured scoring with optional LLM tiebreaker, full scoring breakdown in event logs. Example →

Agent-as-Tool. Wrap any agent as a callable tool — sync (quick, stateless), streaming (long-running with budget limits), or conversational (multi-turn with turn limits). Example →

MCP — client + server. Connect to external MCP tool servers in workflows, or expose JamJet tools as an MCP server for Claude Desktop, Cursor, and other clients. Example →

A2A protocol — client + server. Delegate tasks to external agents or serve tasks from other frameworks via Agent-to-Agent protocol. Example →

Eval harness. Built-in LLM judge, assertions, cost scoring. Self-improvement loop with on_fail: retry_with_feedback. Example →

Human-in-the-loop. First-class approval primitive — pause execution, collect human input, resume. Example →

Memory — Engram

Engram is JamJet's durable memory layer — temporal knowledge graph, hybrid retrieval, fact extraction, conflict detection, and consolidation. Backed by SQLite (zero-infra) or PostgreSQL (production). Ships with a built-in message store for conversation history.

Provider-agnostic. One binary speaks to Ollama (local, free), any OpenAI-compatible endpoint (OpenAI, Azure, Groq, Together, DeepSeek, …), Anthropic Claude, Google Gemini, or a shell-out command — set ENGRAM_LLM_PROVIDER=… and go.

Package

Install from

Use case

jamjet-engram

crates.io

Embed in Rust apps

jamjet-engram-server

crates.io · Docker · MCP Registry

MCP + REST server

jamjet

PyPI

Python client

dev.jamjet:jamjet-sdk

Maven Central

Java client

dev.jamjet:engram-spring-boot-starter

Maven Central

Spring AI ChatMemoryRepository

# Try with Claude Desktop — uses local Ollama by default
docker run --rm -i -v engram-data:/data ghcr.io/jamjet-labs/engram-server:0.5.0

11 MCP tools: memory_add, memory_recall, memory_context, memory_search, memory_forget, memory_stats, memory_consolidate, messages_save, messages_get, messages_list, messages_delete.

Full docs → runtime/engram-server/README.md · Comparison with Mem0, Zep, and others → java-ai-memory.dev

How JamJet Compares

As of April 2026. All frameworks evolve — check their docs for the latest.

Capability

JamJet

Google ADK

LangChain

AutoGen

CrewAI

Durable execution

✅ event-sourced, crash-safe

Dynamic agent routing

✅ Coordinator with scoring

transfer_to_agent

Agent-as-Tool

✅ sync, streaming, conversational

✅ sync only

MCP support

✅ client + server

✅ client + server

🟡 client only

🟡 client only

🟡 client only

A2A protocol

✅ client + server

🟡 client only

Human-in-the-loop

✅ first-class primitive

🟡 callbacks

🟡 callbacks

🟡 conversational

🟡 manual

Built-in eval

✅ LLM judge, assertions, cost

✅ 8 built-in criteria

Agent memory

✅ Engram (SQLite/Postgres)

🟡 Memory Bank

Policy & governance

✅ policy engine, audit log

🟡 plugin

Multi-tenant isolation

✅ row-level partitioning

Model independence

✅ any provider

🟡 Gemini-first

✅ any

✅ any

✅ any

Runtime language

Rust + Python/Java

Python/TS/Go/Java

Python

Python

Python

Architecture

┌──────────────────────────────────────────────────────────┐
│                     Authoring Layer                       │
│     Python SDK  |  Java SDK  |  Go SDK (planned)  |  YAML  │
├──────────────────────────────────────────────────────────┤
│                 Compilation / Validation                   │
│           Graph IR  |  Schema  |  Policy lint             │
├────────────────────────────┬─────────────────────────────┤
│      Rust Runtime Core     │      Protocol Layer          │
│  Scheduler  |  State SM    │  MCP Client  |  MCP Server   │
│  Event log  |  Snapshots   │  A2A Client  |  A2A Server   │
│  Workers    |  Timers      │                              │
├────────────────────────────┴─────────────────────────────┤
│                    Enterprise Services                     │
│  Policy  |  Audit  |  PII Redaction  |  OAuth  |  mTLS     │
├──────────────────────────────────────────────────────────┤
│                      Runtime Services                      │
│  Model Adapters  |  Tool Execution  |  Engram Memory      │
├──────────────────────────────────────────────────────────┤
│                         Storage                           │
│           Postgres (production)  |  SQLite (local)        │
└──────────────────────────────────────────────────────────┘

Examples

Example

Description

basic-tool-flow

@tool + @workflow.step starter

claims-processing

Insurance pipeline — 4 specialist agents, HITL, audit trails

coordinator-routing

Dynamic agent routing for support tickets

custom-coordinator-strategy

Custom scoring strategy for healthcare routing

agent-as-tool

Sync, streaming, and conversational agent invocation

research-deliberation

Deliberative collective intelligence with 4 reasoning archetypes

wealth-management-agents

Multi-agent wealth advisory for HNW clients

eval-harness

Batch evaluation with LLM judge scoring

mcp-tool-consumer

Connect to external MCP servers

mcp-tool-provider

Expose JamJet tools as MCP server

hitl-approval

Human-in-the-loop approval workflow

vertex-ai-agents

Google Gemini via Vertex AI

a2a-delegation

A2A agent delegation

ldp-identity-routing

Identity-aware routing with provenance

research-routing

Complexity-based agent routing

react-agent

ReAct reasoning + acting pattern

multi-agent-review

Multi-agent review pipeline

plan-and-execute-agent

Plan-then-execute agent

rag-assistant

RAG assistant

All examples

Roadmap

Phase

Status

Goal

0 — Architecture & RFCs

✅ Complete

Design docs, RFCs, repo scaffolding

1 — Minimal Viable Runtime

✅ Complete

Local durable execution, MCP client, agent cards

2 — Production Core

✅ Complete

Distributed workers, MCP server, A2A client + server

3 — Developer Delight

🔄 In Progress

Eval harness, Java SDK, trace debugging, templates

4 — Enterprise

🔄 In Progress

Policy engine, tenant isolation, PII redaction, OAuth, mTLS

5 — Scale & Ecosystem

📋 Planned

Go SDK, TypeScript SDK, hosted plane, marketplace

Documentation

Full docs at jamjet.dev

Quickstart · Concepts · Python SDK · Java SDK · YAML Workflows · REST API · MCP · A2A · Eval · Enterprise · Observability · CLI · Deployment

Repository Structure

jamjet/
├── runtime/                # Rust workspace
│   ├── core/               # Graph IR, node types, state machine
│   ├── scheduler/          # Durable task scheduler
│   ├── state/              # Event-sourced state, snapshots
│   ├── workers/            # Node executors (model, tool, eval, …)
│   ├── api/                # REST API, OAuth delegation
│   ├── engram/             # Durable memory library (crates.io)
│   ├── engram-server/      # MCP + REST memory server
│   ├── protocols/          # MCP + A2A client/server
│   └── ...                 # agents, models, timers, policy, audit, telemetry
├── sdk/
│   ├── python/             # Python SDK + CLI (PyPI)
│   ├── java/               # Java SDK (Maven Central)
│   └── go/                 # Go SDK (planned)
└── examples/               # 20 runnable examples

Contributing

Contributions welcome — see CONTRIBUTING.md.

Community

GitHub Discussions · Issues · Discord

License

Apache 2.0 — see LICENSE.


Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jamjet-labs/jamjet'

If you have feedback or need assistance with the MCP directory API, please join our Discord server