𓉸 Passage Protocol · exit-door · entry-door · mcp · langchain · vercel · eliza · eas · erc-8004 · sign · python
⚠️ Pre-release software — no formal security audit has been conducted. This project is published for transparency, review, and community feedback. It should not be used in production systems where security guarantees are required. If you find a vulnerability, please report it to hawthornhollows@gmail.com.
Add verifiable departure and arrival records to your LangChain agents.
| Package | Language | Description |
|---|---|---|
| cellar-door-exit | TypeScript | Core protocol (reference impl) |
| cellar-door-exit | Python | Core protocol |
| cellar-door-entry | TypeScript | Arrival/entry markers |
| @cellar-door/langchain | TypeScript | LangChain integration ← you are here |
| cellar-door-langchain | Python | LangChain integration |
| @cellar-door/vercel-ai-sdk | TypeScript | Vercel AI SDK |
| @cellar-door/mcp-server | TypeScript | MCP server |
| @cellar-door/eliza | TypeScript | ElizaOS plugin |
| @cellar-door/eas | TypeScript | EAS attestation anchoring |
| @cellar-door/erc-8004 | TypeScript | ERC-8004 identity/reputation |
| @cellar-door/sign-protocol | TypeScript | Sign Protocol attestation |
npm install @cellar-door/langchain @langchain/core cellar-door-exit cellar-door-entryimport { createExitTool } from "@cellar-door/langchain";
// Add to any LangChain agent
const exitTool = createExitTool();
// The agent can now create signed EXIT markers:
// "Create a departure record for did:web:platform.example"
// → Returns a signed, verifiable EXIT markerimport { ExitCallbackHandler } from "@cellar-door/langchain";
const handler = new ExitCallbackHandler({
origin: "my-app",
onMarker: (marker) => console.log("Departed:", marker.id),
});
const result = await chain.invoke(input, { callbacks: [handler] });
// EXIT marker created automatically when the chain finishesimport { createExitTool } from "@cellar-door/langchain";
const tool = createExitTool();
// Use with any LangChain agentimport { ExitCallbackHandler } from "@cellar-door/langchain";
const handler = new ExitCallbackHandler({
origin: "my-app",
onMarker: (marker) => console.log("Departed:", marker.id),
});import { createEntryTool } from "@cellar-door/langchain";
const entryTool = createEntryTool();
// Agent calls with { exitMarkerJson, destination }
// Returns signed arrival marker with continuity verificationimport { createAdmissionPolicyTool } from "@cellar-door/langchain";
const admissionTool = createAdmissionPolicyTool();
// Agent calls with { exitMarkerJson, policy: "OPEN_DOOR" | "STRICT" | "EMERGENCY_ONLY" }import { createTransferVerificationTool } from "@cellar-door/langchain";
const transferTool = createTransferVerificationTool();
// Agent calls with { exitMarkerJson, arrivalMarkerJson }
// Returns { verified, transferTime, errors, continuity }import { ExitCallbackHandler } from "@cellar-door/langchain";
const handler = new ExitCallbackHandler({
origin: "platform-a",
arrivalDestination: "platform-b",
onMarker: (marker) => console.log("EXIT:", marker.id),
onArrival: (arrival) => console.log("ARRIVAL:", arrival.id),
});
// handler.markers — all EXIT markers
// handler.arrivals — all ARRIVAL markerscreateExitTool(opts?)—DynamicStructuredToolfor creating EXIT markersExitCallbackHandler— Callback handler for automatic EXIT (and optionally ENTRY) markers
createEntryTool()— Tool to verify EXIT + create arrivalcreateAdmissionPolicyTool()— Tool to evaluate admission policiescreateTransferVerificationTool()— Tool to verify EXIT→ENTRY transfers
WARNING: Automated admission decisions should be reviewed by platform operators. This integration does not constitute legal advice. Platforms are responsible for their own admission policies and the consequences of admitting agents.
Apache-2.0