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.


Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
9hResponse time
6dRelease cycle
12Releases (12mo)
Issues opened vs closed

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