Protocol v1.7.0

Portable Expert Protocol

An open protocol for AI experts that travel. Identity, memory, knowledge, and a shared Library—portable across any surface. Production-validated on Team workspaces, Slack, browser extensions, and more.

Read the SpecRequest access if interested
Try Portable

The Problem

Today’s AI assistants are trapped.

Your ChatGPT conversations don’t travel to Slack. Your Claude memories don’t appear in your project management tool. Every surface is an island. You start over, everywhere.

The Solution

Portable intelligence.

An expert isn’t just a model—it’s a complete entity with identity, memory, knowledge, and capabilities. PEP defines how experts travel between surfaces, carrying what they know while working with whatever material exists where they land. On context-aware surfaces, experts see exactly what you see and understand where you are.

Identity: Who the expert is—personality, style, boundaries
Memory: What they remember—from all surfaces, all time
Knowledge: What they carry—documents, reference material
Library: What the account owns—files accessible from any platform
Material: What's on this surface—leads, projects, pages, data
Capabilities: What they can do—learned from each surface
architecture
┌─────────────────────────────────┐ │ HOST │ │ (e.g., Portable) │ │ │ │ ├── Expert Identity │ │ ├── Expert Knowledge │ │ ├── Account Library │ │ └── Expert Memories │ └─────────────────────────────────┘ │ │ PEP Invocation ▼ ┌─────────────────────────────────┐ │ SURFACE │ │ (Team, Slack, Extension, MCP) │ │ │ │ ├── Material (data + context) │ │ ├── Credentials (access) │ │ └── Metadata (scope, module) │ └─────────────────────────────────┘

Where Experts Travel

Production-validated surfaces

The same expert, carrying all its memories, shows up and works with whatever data exists on each surface.

teamValidated

Portable Team

Context-aware workspace chat with inline material, shared Library access, and folder sync. Experts see what you see.

slackValidated

Slack

Bot integration with memory formation. Experts join channels and DMs, carrying knowledge across conversations.

extensionValidated

Browser Extension

Experts read the page you're on. Any website becomes a surface with full page context delivery.

mcpValidated

Claude (MCP)

Connect via Model Context Protocol. Your Claude gains persistent identity, memory, and capabilities.

apiValidated

ChatGPT

Custom GPTs with PEP Actions. Memory, knowledge, and capabilities that persist across sessions.

customOpen

Your Surface

PEP is an open protocol. Build your own surface with the invocation API, streaming, and material delivery.

Bring Your Own Expert

Your AI. Our protocol.

Already have ChatGPT Plus? Claude Pro? Gemini? PEP augments your existing AI subscription with expert identity, persistent memory, and portable capabilities.

Claude logo
Ready

Claude

MCP

Connect via Model Context Protocol. Your Claude becomes your expert with one configuration.

ChatGPT logo
Ready

ChatGPT

Custom GPTs + Actions

Import a PEP template. Your Custom GPT gains memory and capabilities that persist.

Gemini logo
Coming Soon

Gemini

Gems + Extensions

Configure your Gem with PEP extensions. Memories and knowledge travel with you.

Bring Your Own Memory

Your memories. Your servers. Your choice.

BYOE lets you bring your own expert. BYOM lets you bring your own memory storage.

Concerned about a private company storing your expert’s memories? PEP supports pluggable memory providers. Use Portable’s hosted storage, or bring your own Pinecone, Chroma, or any vector database.

Your expert still works everywhere. The memories just live where you want them.

// Self-hosted memory configuration
{
  "type": "pinecone",
  "pinecone": {
    "apiKey": "your-pinecone-api-key",
    "indexHost": "https://my-index.svc.pinecone.io",
    "namespace": "expert-memories"
  }
}

// Or use Qdrant, Chroma, or any vector DB
{
  "type": "qdrant",
  "qdrant": {
    "url": "https://my-qdrant.example.com",
    "collectionName": "expert_memories"
  }
}

Core Concepts

The craftsperson metaphor

An expert is like a craftsperson who travels between workshops. They bring their expertise; the workshop provides the tools and material.

Identity

Who the craftsperson is—their name, style, approach

Knowledge

Reference materials they carry—notebooks, manuals

Library

Their shared filing cabinet—accessible from any workshop

Memories

Experience from past work—'I remember building this before'

Capabilities

Tools available in THIS workshop—lathes, saws, kilns

Credentials

Access to use those tools—keys to the tool cabinet

Material

What's in THIS workshop to work with—wood, metal, clay

In Practice

Context-aware invocation

A Team user viewing their CRM leads asks an expert to analyze creative potential. The surface sends scope metadata and inline material.

Request
POST /api/pep/invoke HTTP/1.1
Host: portable.expert
Authorization: Bearer pep_at_xxxxx

{
  "message": "Rank the most recent leads
    by creative potential.",
  "expertId": "6b42267e-...",
  "conversationId": "432c6756-...",
  "surface": {
    "type": "team",
    "id": "34bf87db-...",
    "name": "Portable Team (Sandwich Video)",
    "metadata": {
      "workspaceName": "Sandwich Video",
      "scopeType": "department",
      "scopeBreadcrumb": "Accounts / Leads",
      "moduleKey": "leads",
      "moduleDescription": "New business leads
        (CRM). Each lead represents a
        potential client or project.",
      "capabilities": "read-only analysis"
    }
  },
  "user": {
    "id": "1af763ec-...",
    "name": "Adam Lisagor"
  },
  "material": {
    "inline": [
      {
        "materialId": "lead-001",
        "materialName": "ElevenReader (ElevenLabs)",
        "content": "AI voice brand spots...",
        "relevance": 1.0
      }
    ]
  },
  "library": {
    "documentIds": ["style-guide-2026"]
  }
}
Response (streamed via SSE)
event: cognition
data: {"phase": "assembling",
  "stage": "retrieving_memories"}

event: cognition
data: {"phase": "assembling",
  "stage": "searching_material"}

event: cognition
data: {"phase": "assembling",
  "stage": "searching_library"}

event: first_responder
data: {"type": "first_responder",
  "content": "Let me look through these
    leads for you..."}

event: replace
data: {"type": "replace", "content": ""}

event: text
data: {"content": "Top 5, ranked by
  creative potential:\n\n1. **ElevenReader
  brand spots** (ElevenLabs)..."}

event: text
data: {"content": "...AI voice vs. the
  intimacy of reading—that tension
  is a gift."}

event: done
data: {
  "content": "Top 5, ranked by...",
  "knowledgeUsed": [
    {"name": "Style Guide",
     "relevance": 0.94}],
  "memoriesUsed": [
    {"summary": "Recent lead discussions",
     "sourceSurface": "portable"}],
  "memoriesFormed": 2
}

Ready to build with PEP?

Read the specification, explore the reference implementation, or connect your existing AI.

Get StartedGitHub (Private)