Reference implementation

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.

Live reference

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/mcp

Use 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.

Cloud, one click

Deploy on Railway

One click provisions the Core node and Postgres. You choose one thing: your owner password.

Your machine, one command

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 pdpp

Open 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 -d

Put 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.

Purpose

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.

Non-goal

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.

Architecture

1

Clients stage access requests

PAR and protected registration shape the current reference client-connect path.

2

Owners approve bounded grants

Consent creates durable grants with streams, fields, retention, and source identity.

3

Resource reads enforce grants

The resource server projects records to the granted fields and supports owner self-export separately.

4

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.