𓉸 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 Vercel AI SDK 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 |
| cellar-door-langchain | Python | LangChain integration |
| @cellar-door/vercel-ai-sdk | TypeScript | Vercel AI SDK ← you are here |
| @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/vercel-ai-sdk cellar-door-exit cellar-door-entry aiimport { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { exitMarkerTool } from "@cellar-door/vercel-ai-sdk";
const { text, toolResults } = await generateText({
model: openai("gpt-4o"),
tools: { exitMarker: exitMarkerTool },
prompt: "Complete the task and produce a departure marker for did:web:platform.example",
});
// The agent creates a signed EXIT marker automatically
// toolResults contains the verified marker JSONimport { streamText } from "ai";
import { createExitOnFinish } from "@cellar-door/vercel-ai-sdk";
const result = await streamText({
model: openai("gpt-4o"),
prompt: "Hello!",
onFinish: createExitOnFinish({
origin: "my-agent",
onMarkerCreated: (marker, identity) => {
console.log("EXIT marker created:", marker.id);
},
}),
});import { exitMarkerTool } from "@cellar-door/vercel-ai-sdk";
// Drop into any generateText/streamText callimport { createExitOnFinish } from "@cellar-door/vercel-ai-sdk";
// Automatic EXIT marker on session endimport { verifyAndAdmitAgentTool } from "@cellar-door/vercel-ai-sdk";
// Agent calls with { exitMarkerJson, destination, admissionPolicy? }import { evaluateAdmissionTool } from "@cellar-door/vercel-ai-sdk";
// Check if an EXIT marker meets a policy without creating an arrivalimport { verifyTransferTool } from "@cellar-door/vercel-ai-sdk";
// Verify a complete EXIT→ENTRY transferimport { createTransitOnFinish } from "@cellar-door/vercel-ai-sdk";
const result = await streamText({
model,
prompt: "Hello",
onFinish: createTransitOnFinish({
origin: "platform-a",
arrivalDestination: "platform-b",
onMarkerCreated: (marker) => console.log("EXIT:", marker.id),
onArrivalCreated: (arrival) => console.log("ARRIVAL:", arrival.id),
}),
});exitMarkerTool— Vercel AI SDK tool for creating EXIT markerscreateExitOnFinish(opts)—onFinishcallback for automatic EXIT markerswithExitMarker(originalOnFinish, opts)— Wraps existingonFinishto also create EXIT markers
verifyAndAdmitAgentTool— Verify EXIT marker + create arrivalevaluateAdmissionTool— Check if EXIT marker meets an admission policyverifyTransferTool— Verify a complete EXIT→ENTRY transfer chaincreateEntryOnStart(exitMarkerJson, opts)— Create arrival on session startcreateTransitOnFinish(opts)— Create both EXIT and ENTRY markers on finish
OPEN_DOOR— Accept any verified departureSTRICT— Voluntary only, <24h old, requires lineage + stateSnapshotEMERGENCY_ONLY— Accept only emergency exits
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