Integrations
One call. Every framework. Same memory.
Pick your stack — the exact Lore calls, the install, and the three steps to wire it in.
npm i @loregpt/sdk One reality across nodes
Every node reads the same consolidated state — no more passing the whole message history through the graph.
Read-your-writes
Pass the writer node the seq from the researcher; its pack is guaranteed to reflect it.
A smaller token bill
Budget-fit, deterministic packs replace ballooning graph state — prompt caching compounds.
pip install loregpt Coordinated handoffs
The reviewer sees exactly what the coder wrote — no lossy task descriptions in between.
Per-agent access control
Policies compile to SQL; a new crew member starts quarantined until trusted.
Conflict resolution
When two agents write the same fact, Lore resolves it by policy at write time — not luck at read time.
lore mcp --scope team:platform Any client, one memory
Claude Code, Cursor, and your custom agents share the same reality through the same MCP tools.
No lock-in
MCP is the neutral wire. No framework shares memory with a competitor’s agent — Lore does.
Governed by default
Access control, provenance, and quarantine are enforced in the server, not the client.
lore mcp --scope team:platform One MCP server, one reality
Every agent you spawn with the SDK reads and writes the same consolidated memory through the lore.write / lore.pack tools.
Read-your-writes across runs
A pack requested after a write is guaranteed to contain it — the next turn sees what the last one learned.
Governed, not prompted
Access control, provenance, and quarantine live in the server. A poisoned prompt can’t widen an agent’s reach.
pip install loregpt Coordinated handoffs
The next agent recalls exactly what the last one wrote — no lossy summaries passed through the handoff.
Read-your-writes
Pass the seq from a write into the next recall; the pack is guaranteed to reflect it.
A smaller token bill
Budget-fit packs replace re-sending the whole transcript every turn — prompt caching compounds.
pip install loregpt Stop passing the whole history
Agents read a consolidated pack instead of the full conversation — the context stops ballooning with every turn.
Per-agent access control
Policies compile to SQL; a new agent starts quarantined until it’s trusted.
Conflicts resolved at write time
When two agents write the same fact, Lore adjudicates by policy — not by luck at read time.
pip install loregpt Typed tools, one shared reality
Every Pydantic AI agent reads and writes the same consolidated memory through remember / recall — no passing state by hand.
Read-your-writes
The seq a write returns guarantees the next agent’s recall reflects it — handoffs stop failing by timing.
A smaller token bill
Budget-fit packs replace re-sending history each run; prompt caching compounds.
pip install loregpt One reality across the workflow
Every ADK agent reads the same consolidated pack instead of re-deriving context from scratch.
Per-agent access control
Policies compile to SQL; a new agent starts quarantined until it’s trusted.
Read-your-writes
A pack requested after a write is guaranteed to contain it — coordinated handoffs, not lossy ones.
pip install loregpt Governed memory as a plugin
Lore drops in as a kernel plugin — remember / recall are functions any agent can call, backed by one server.
Conflicts resolved at write time
When two agents write the same fact, Lore adjudicates by policy — not by luck at read time.
Provenance on every fact
Every memory carries who wrote it, when, and from what — access control and audit by construction.
import { StateGraph } from "@langchain/langgraph";
import { LoreClient } from "@loregpt/sdk";
const lore = new LoreClient({ apiKey });
// a node writes what it learned — nothing blocks
async function researcher(state) {
const { seq } = await lore.write({
runId: state.runId, agentId: "researcher",
content: "Auth flow moved to v2 — PR #42 merged",
});
return { ...state, seq };
}
// a later node reads a pack that is guaranteed to contain it
async function writer(state) {
const pack = await lore.pack({
query: "current state of auth work",
scopes: { team: "platform" },
minSeq: state.seq, // read-your-writes
tokenBudget: 2000,
});
// pack.coveredSeq >= state.seq → the write is in there, guaranteed
return { ...state, context: pack.text };
} from crewai import Agent, Crew
from loregpt import LoreClient
lore = LoreClient(api_key=API_KEY)
# each agent writes events to shared memory
seq = lore.write(
run_id=run_id, agent_id="researcher",
content="Auth flow moved to v2 — PR #42 merged",
).seq
# the next agent reads a consistent, budget-fit pack
pack = lore.pack(
query="current state of auth work",
scopes={"team": "platform"},
min_seq=seq, # read-your-writes
token_budget=2000,
)
# pack.covered_seq >= seq → guaranteed to include the write // Register the Lore MCP server with your client (e.g. Claude Code)
{
"mcpServers": {
"lore": {
"command": "lore",
"args": ["mcp", "--scope", "team:platform"]
}
}
}
// The client now has tools:
// lore.write(agentId, content) -> { seq }
// lore.pack(query, minSeq, budget) -> { text, coveredSeq, savedTokens }
// read-your-writes and access control are enforced server-side. import { query } from "@anthropic-ai/claude-agent-sdk";
// Point the agent at Lore's MCP server — shared memory as tools.
const run = query({
prompt: "Summarize where the auth work stands, then keep building it.",
options: {
mcpServers: {
lore: { type: "stdio", command: "lore", args: ["mcp", "--scope", "team:platform"] },
},
// read-your-writes + access control are enforced server-side
allowedTools: ["mcp__lore__write", "mcp__lore__pack"],
},
});
for await (const msg of run) {
if (msg.type === "assistant") console.log(msg.message.content);
} from agents import Agent, Runner, function_tool
from loregpt import LoreClient
lore = LoreClient(api_key=API_KEY)
@function_tool
def remember(content: str) -> int:
"""Write an event to shared memory; returns its sequence number."""
return lore.write(run_id=RUN_ID, agent_id="researcher", content=content).seq
@function_tool
def recall(query: str, min_seq: int) -> str:
"""Read a budget-fit, read-your-writes context pack."""
return lore.pack(run_id=RUN_ID, query=query, min_seq=min_seq, token_budget=2000).text
writer = Agent(
name="Writer",
instructions="Coordinate through shared memory — recall before you write.",
tools=[remember, recall],
)
result = Runner.run_sync(writer, "Continue the auth work the researcher started.")
print(result.final_output) from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.anthropic import AnthropicChatCompletionClient
from loregpt import LoreClient
lore = LoreClient(api_key=API_KEY)
def remember(content: str) -> str:
"""Write an event to shared memory."""
seq = lore.write(run_id=RUN_ID, agent_id="coder", content=content).seq
return f"stored seq {seq}"
def recall(query: str) -> str:
"""Read a consistent, budget-fit context pack."""
return lore.pack(run_id=RUN_ID, query=query, token_budget=2000).text
coder = AssistantAgent(
name="coder",
model_client=AnthropicChatCompletionClient(model="claude-opus-4-8"),
tools=[remember, recall],
system_message="Share what you learn through Lore; recall before you act.",
) from pydantic_ai import Agent
from loregpt import LoreClient
lore = LoreClient(api_key=API_KEY)
agent = Agent("anthropic:claude-opus-4-8", system_prompt="Recall before you write.")
@agent.tool_plain
def remember(content: str) -> int:
"""Write an event to shared memory; returns its sequence number."""
return lore.write(run_id=RUN_ID, agent_id="researcher", content=content).seq
@agent.tool_plain
def recall(query: str) -> str:
"""Read a budget-fit, read-your-writes context pack."""
return lore.pack(run_id=RUN_ID, query=query, token_budget=2000).text
result = agent.run_sync("Continue the auth work the researcher started.")
print(result.output) from google.adk.agents import Agent
from loregpt import LoreClient
lore = LoreClient(api_key=API_KEY)
def remember(content: str) -> dict:
"""Write an event to shared memory."""
return {"seq": lore.write(run_id=RUN_ID, agent_id="researcher", content=content).seq}
def recall(query: str) -> dict:
"""Read a consistent, budget-fit context pack."""
return {"pack": lore.pack(run_id=RUN_ID, query=query, token_budget=2000).text}
writer = Agent(
name="writer",
model="gemini-2.0-flash",
instruction="Coordinate through shared memory — recall before you write.",
tools=[remember, recall],
) from semantic_kernel import Kernel
from semantic_kernel.functions import kernel_function
from loregpt import LoreClient
lore = LoreClient(api_key=API_KEY)
class LoreMemory:
@kernel_function(description="Write an event to shared memory.")
def remember(self, content: str) -> str:
return f"stored seq {lore.write(run_id=RUN_ID, agent_id='coder', content=content).seq}"
@kernel_function(description="Read a consistent, budget-fit context pack.")
def recall(self, query: str) -> str:
return lore.pack(run_id=RUN_ID, query=query, token_budget=2000).text
kernel = Kernel()
kernel.add_plugin(LoreMemory(), plugin_name="lore") On the roadmap
Working with something else? Lore speaks MCP — any MCP-capable client gets shared memory as tools, no SDK required. Pick the MCP tab above to see it.