Skip to content
Quickstart

Add OpenRSL to your website

Setting up is easy and fast. Pick a platform, a setup mode, and where you’re running it. The workbench below generates the exact commands, config files, and verification steps. Everything runs from the open-source reference implementation.

Quickstart workbench

Scaffold a demo, connect the hosted PDS service when you need PDS-backed licensing, then verify discovery, ticket minting, licensed fetches, and receipts.

The open-source project includes flexible tools for a range of web use cases. Reference examples use PDS for licensing (with Stripe as payment layer).

PDS PropertyRightsRSL is a commercial implementation of OpenRSL integrated with PDS and Stripe. Its turnkey plugin tools can be installed instantly in compatible websites across a range of publishing platforms.

PDS Tools
Three levels

Pick how far you go

You don’t have to do everything at once. RSL layers into three levels, one standard. Start at Level 1 and add the next when you’re ready.

  1. LEVEL 1

    Declare your terms. Publish an rsl.xml manifest of allowed uses and prices. Crawlers can read it; no backend required.

  2. LEVEL 2

    Make it accountable. Add the OLP token server (self-host or use PDS PropertyRightsRSL). Crawlers present a signed ticket, so every request is auditable.

  3. LEVEL 3

    Get paid. Connect a payment backend such as Stripe or hosted PDS. The open flow places a hold behind each license and records it; your backend captures the hold into a payout.

Before you start

What you need

A site with URLs

OpenRSL works with any site that has stable, addressable URLs. Your content structure does not change.

A way to settle

The reference implementation ships pluggable payment adapters (mock by default; Stripe and PDS opt-in). The adapter places a hold that backs each license; capturing that hold into a payout is handled by the backend you connect, such as hosted PDS.

A reference library

Python, TypeScript, or PHP. Pick the one that matches your stack; each lives under libraries/ in the repository.

For publishers

Three steps to license your content

01

Get a reference library

clone
git clone https://github.com/openrsl/openrsl-public.git
# reference libraries live under libraries/
cd openrsl/libraries
02

Publish your manifest

Use the library to generate an rsl.xml that declares which assets are licensed, the permitted use types (for example ai-index, ai-train, all), and the price. Point it at the OLP server that issues tickets for your content, then annotate robots.txt.

Manifest fields in the spec
03

Connect payouts

Configure your payment provider in the library settings (mock by default; Stripe and PDS ship as reference adapters). Once connected, every license acquisition places a hold and is recorded in the audit log; capturing the hold into a payout runs through your backend.

For crawlers

Pay for access, then fetch

  1. 1

    Read the target's rsl.xml to find its OLP server and the price for the use you intend.

  2. 2

    Request a ticket: POST /token with grant_type=client_credentials, the license XML, and the resource URL, authenticated with your wallet credentials. The server places a hold and returns a signed ticket.

  3. 3

    Present it on the content request with the CAP header: Authorization: License {token}. The origin validates and serves.

End-to-end crawler example on GitHub →
fetch with a ticket
# 1. acquire a ticket
curl -X POST $OLP/token \
  -u 'wallet-id:secret' \
  -d 'grant_type=client_credentials&resource=https://site/article/the-old-deal&license=...'
 
# 2. fetch with the CAP header
curl https://site/article/the-old-deal \
  -H "Authorization: License $TICKET"
Run it locally

Run the OLP server locally

Before wiring your own site, run the reference token server with the mock payment provider and verify it. This is the first successful loop.

terminal 1
git clone https://github.com/openrsl/openrsl-public.git
cd openrsl/olp-server
npm ci --ignore-scripts
npx tsc
PAYMENT_PROVIDER=mock node dist/index.js
terminal 2
curl http://localhost:3000/key

Success is a JWKS response with one ES256 key. Keep the server running while you try the publisher or crawler examples in the repository.

Keep going

Where to next

  • The spec
    rsl.xml, OLP, and CAP in detail, plus the manifest field reference.
    Read →
  • End-to-end examples
    Working end-to-end demos: a Python crawler, plus TypeScript and PHP publishers.
    Browse →
  • For developers
    The reference libraries, OLP server internals, and conformance suite.
    Open →