Skip to content

Integration Examples

OpenAI Agents SDK

from agents import Agent, Runner
from engramia import Memory
from engramia.providers import OpenAIProvider, OpenAIEmbeddings, JSONStorage
from engramia.sdk.openai_agents import EngramiaRunHooks, engramia_instructions

mem = Memory(
    embeddings=OpenAIEmbeddings(),
    storage=JSONStorage(path="./engramia_data"),
)

# Dynamic instructions with recalled patterns + auto-learn hooks
agent = Agent(
    name="coder",
    instructions=engramia_instructions(mem, base="You are a Python developer."),
)
result = await Runner.run(agent, "Build a CSV parser", hooks=EngramiaRunHooks(mem))

Anthropic Agent SDK

from engramia.sdk.anthropic_agents import engramia_query

# One call: recall → run → learn
async for message in engramia_query(mem, prompt="Build a CSV parser"):
    print(message)

Pydantic AI

from pydantic_ai import Agent
from engramia.sdk.pydantic_ai import EngramiaCapability

agent = Agent('openai:gpt-4o', capabilities=[EngramiaCapability(mem)])
result = agent.run_sync("Build a CSV parser")

AutoGen

from autogen_agentchat.agents import AssistantAgent
from engramia.sdk.autogen import EngramiaMemory, learn_from_result

agent = AssistantAgent(name="coder", model_client=client, memory=[EngramiaMemory(mem)])
result = await agent.run(task="Build a CSV parser")
learn_from_result(mem, task="Build a CSV parser", result=result)

LangChain

from langchain.chains import LLMChain
from langchain.llms import OpenAI
from engramia import Memory
from engramia.sdk.langchain import EngramiaCallback

# Setup
memory = Memory(
    embeddings=OpenAIEmbeddings(),
    storage=JSONStorage(path="./engramia_data"),
)

callback = EngramiaCallback(
    memory,
    auto_learn=True,    # store successful runs
    auto_recall=True,   # recall patterns before execution
    min_score=5.0,      # only store runs scoring >= 5.0
    recall_limit=3,     # recall top 3 patterns
)

# Use as a chain callback
chain = LLMChain(llm=OpenAI(), prompt=prompt, callbacks=[callback])
result = chain.run("Parse CSV and compute statistics")

# Access recalled context for a specific run
recalled = callback.get_recalled_context(run_id)

CrewAI

from crewai import Agent, Crew, Task
from engramia import Memory
from engramia.sdk.crewai import EngramiaCrewCallback

memory = Memory(
    embeddings=OpenAIEmbeddings(),
    storage=JSONStorage(path="./engramia_data"),
)

callback = EngramiaCrewCallback(
    memory,
    auto_learn=True,    # learn from task outputs
    auto_recall=True,   # inject recalled patterns into task descriptions
    default_score=7.0,  # default eval score for learned patterns
)

agent = Agent(role="Data Analyst", goal="Analyze data", backstory="...")
task = Task(description="Parse CSV and compute statistics", agent=agent)
crew = Crew(agents=[agent], tasks=[task])

# Option 1: Full convenience wrapper (inject + kickoff)
result = callback.kickoff(crew, inputs={"topic": "data analysis"})

# Option 2: Manual control
callback.inject_recall(crew.tasks)
crew = Crew(agents=[agent], tasks=[task], task_callback=callback.task_callback)
crew.kickoff()

# Check how many patterns were stored
print(f"Learned {callback.get_learned_count()} patterns")

MCP Server (Claude Desktop / Claude Code)

Add to your MCP client config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "engramia": {
      "command": "engramia-mcp",
      "env": {
        "ENGRAMIA_DATA_PATH": "/path/to/engramia_data",
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Available MCP tools:

Tool Description
engramia_learn Store a successful agent run
engramia_recall Find relevant patterns for a task
engramia_evaluate Score agent code quality (multi-evaluator)
engramia_compose Decompose task into pipeline stages
engramia_feedback Get recurring quality issues
engramia_metrics View aggregate statistics
engramia_aging Run pattern decay and pruning

Webhook Client

from engramia.sdk.webhook import WebhookClient

# Fire-and-forget event posting to external systems
client = WebhookClient(
    url="https://your-app.com/hooks/engramia",
    secret="your-webhook-secret",
)

# Posts are non-blocking with exponential backoff on failure
client.post_learn(pattern_key="patterns/abc123", eval_score=8.5)
client.post_recall(task="Parse CSV", matches=3)

REST API (direct)

import httpx

client = httpx.Client(
    base_url="https://api.engramia.dev",
    headers={"Authorization": "Bearer engramia_sk_..."},
)

# Learn
client.post("/v1/learn", json={
    "task": "Parse CSV and compute statistics",
    "code": "import csv\n...",
    "eval_score": 8.5,
})

# Recall
resp = client.post("/v1/recall", json={"task": "Parse CSV file", "limit": 5})
matches = resp.json()["matches"]