The forkable PDPP implementation, not the protocol authority.
This surface explains the runnable code in this repository: the authorization server, resource server, local composition, dashboard, reference clients, tests, and deployment posture. For normative protocol behavior, use the protocol docs.
Connect an AI app
Copy the MCP URL here, or open the setup page for Claude Code, Codex, ChatGPT, Claude.ai, and local agent entrypoints.
https://pdpp-smoky.vercel.app/mcpUse the MCP URL from this running deployment. The owner approves scoped access in the browser; no owner bearer token is pasted into the agent.
Run your own node
Start with one click in the cloud or one command on your machine. Production compose and other platforms are available when you need them.
Deploy on Railway
One click provisions the Core node and Postgres. You choose one thing: your owner password.
Run with Docker
One command starts a full node on your laptop. First boot prints your dashboard URL and a generated owner password - nothing to configure.
docker run -d --name pdpp -p 3000:3000 -v pdpp_data:/var/lib/pdpp \
ghcr.io/vana-com/pdpp/railway-core:main
docker logs -f pdppOpen http://localhost:3000/dashboard and sign in with the printed password. Your data persists in the pdpp_data volume across restarts and upgrades.
->Production deployment (Docker Compose)
Running a node you intend to keep? Use the minimal Compose stack - reference, console, and Postgres with pgvector - with healthchecks and named volumes:
mkdir pdpp && cd pdpp
curl -fsSLO https://raw.githubusercontent.com/vana-com/pdpp/main/deploy/docker/docker-compose.yml
printf 'PDPP_OWNER_PASSWORD=%s\nPDPP_CREDENTIAL_ENCRYPTION_KEY=%s\n' \
"$(openssl rand -base64 24)" "$(openssl rand -hex 32)" > .env
docker compose up -dPut your HTTPS reverse proxy in front and set PDPP_REFERENCE_ORIGIN to your domain. Full runbook: deploy/docker/README.md.
->Other platforms (Fly.io)
Fly.io has no deploy button. Its honest equivalent is one fly launch command that creates the app, provisions Postgres, and deploys the same Core image:
APP="pdpp-core-$(openssl rand -hex 3)"
OWNER_PASSWORD="$(openssl rand -base64 24)"
fly launch --image ghcr.io/vana-com/pdpp/railway-core:main \
--name "$APP" --internal-port 3000 --db \
--secret "PDPP_OWNER_PASSWORD=$OWNER_PASSWORD" \
--env "PDPP_REFERENCE_ORIGIN=https://$APP.fly.dev" \
--no-github-workflow --no-object-storage --no-redis --now --yes
printf 'Origin: https://%s.fly.dev\nOwner password: %s\n' "$APP" "$OWNER_PASSWORD"Requires a payment method on the Fly org. Details and a source-build fallback: deploy/flyio/README.md.
Purpose and non-goals
The reference exists to make PDPP concrete enough to fork, test, and criticize.
Executable proof
Prove grant issuance, owner self-export, resource queries, native provider identity, polyfill connector identity, and reference-only diagnostics with runnable code and tests.
Not canonical SaaS
Do not read this website as a hosted multi-tenant PDPP service or as a promise that every implementation must copy these dashboard, trace, or storage choices.
Surface map
Each route family has a different job, authority, and data posture.
PDPP docs
Normative protocol semantics, extension docs, grant shapes, query behavior, and intentionally deferred scope.
Forkable implementation
Current code, tests, dashboards, example clients, and operator diagnostics for one implementation of PDPP.
Operator dashboard
A stateful control plane for a running local or self-hosted instance. It is not a public hosted demo.
Mock-adapter reference instance
A mock-adapter-backed reference instance with deterministic data. Browse connectors, streams, records, grants, runs, traces, and call sandbox-prefixed AS/RS-shaped APIs.
Architecture
Clients stage access requests
PAR and protected registration shape the current reference client-connect path.
Owners approve bounded grants
Consent creates durable grants with streams, fields, retention, and source identity.
Resource reads enforce grants
The resource server projects records to the granted fields and supports owner self-export separately.
Operators inspect the instance
Dashboard pages and _ref routes expose traces, runs, records, deployment diagnostics, and timelines for this implementation.
Trust boundaries
- The protocol docs define PDPP semantics; the reference implementation demonstrates one executable interpretation.
- Reference-only headers, traces, timelines, and deployment diagnostics are operator aids, not protocol negotiation.
- The dashboard reads live instance state and should be protected with owner auth when exposed beyond local development.
- The public website does not imply that Vana operates a canonical live PDPP owner dashboard for real data.
Review paths
These links keep artifact boundaries explicit: protocol docs are normative, coverage is public evidence, sandbox is mock-only, and live operation remains local or self-hosted.
Public coverage matrix->
Falsifiable status rows for protocol flows, retrieval extensions, collection profiles, reference diagnostics, sandbox, and deferred scope.
Mock reference demo instance->
Browse a public PDPP reference surface backed by deterministic mock adapters. Inspect records, grants, runs, and traces, then call sandbox-prefixed AS/RS-shaped APIs (/sandbox/v1/**, /sandbox/_ref/**, /sandbox/.well-known/**).
GitHub source->
Browse the monorepo, issues, tests, Docker files, and reference package.
Root README->
Repo overview, dev commands, Docker image posture, and top-level project map.
Reference README->
Local stack, direct AS/RS mode, Docker Compose, owner auth, and generated artifacts.
Architecture docs->
Protocol-facing architecture notes. Treat repo package topology as reference behavior unless specified by docs.
OpenSpec change history->
Project planning and active changes. Useful for review context, but not protocol authority.
Reference topology->
Existing reference notes remain available, labeled as current implementation behavior rather than protocol truth.
End-to-end flows->
Concrete request, consent, owner self-export, and query examples from the current reference.