openpreference
GitHub Sign in

Take your preferences with you.

Preferences that are portable, discoverable, and truly yours. An open standard to make secure and privacy-focused sharing of personal preferences possible to any service. Always with your consent, on your terms, and using protocols you can control and extend.

OPI Draft v0.1 (September 2026). Spec licensed CC-BY-4.0.

How access works

Multiple control tiers with circles of trust.

Three preference tiers, as specified in OPI-PD §7. You can select which tier every preference is in, maintaining complete control for who can see what.

01

Public

Publicly readable preferences without a login; like the things you'd put on your LinkedIn profile.

  • Display language
  • Timezone, locale
  • Preferred name
02

Client

OAuth-based access for clients in the trust registry, with access controlled per preference type.

  • Dietary restrictions
  • Accessibility preferences
  • Currency & units
03

User-authorized

Explicit one to one consent between a user and an application. OAuth + RAR with disclosed purpose and retention.

  • Marketing consent
  • Sensitive health preferences
  • Communication channels

The specs

An open specification for open preferences.

openpreference/opi
DRAFT OPI-PD

Preference Discovery

OPI-PD 0.1: Preference Discoverability

16 sections · ~7 pages Read
DRAFT OPI-EPS

Exchangeable Preferences

OPI-EPS 0.1: Extensible Preference Schema

15 sections · ~5 pages Read
DRAFT OPI-TRUST

Trust Registry

OPI-TRUST 0.1: Trust Registry

15 sections · ~5 pages Read

How it works

01

Claim a handle

Passkey-based signup. Your handle and verified addresses can then be looked up by trusted apps.

02

Set preferences

Choose what matters to you: dietary needs, accessibility, communication, etc.

03

Services discover them

When a service asks, they do a WebFinger lookup against your handle and fetch only what their tier permits.

Honest answers

Frequently Asked Questions

Is this a SaaS or a spec?
Both — openpreference.org is a reference implementation of the spec. Anyone can run their own server, or use ours. The spec itself is what matters; the hosting is incidental.
Why would a company pay attention to this?
Two reasons. First, user preferences that they'd otherwise need to collect or guess at (language, region, currency) can be securely gathered and confirmed. Second, the trust registry lets them prove their intentions and allow for sharing of information in a human-centric way, building trust.
How is this different from a profile aggregator or identity provider?
We don't build and sell identities. We don't log in to anything else on your behalf. We store small, structured preferences (the things you already repeat across forms) and let you expose them at three clearly-defined tiers. In some ways, we're the opposite of a social graph.
What stops a bad client from scraping the public tier?
The public tier is like a business card, and those are accessible by any application following the standard without validation. For richer information, clients must authenticate, and user-tier access requires per-request consent with purpose and retention disclosed. Nothing would prevent you from listing no information in the public tier.
What is the seed trust registry?
A vetted and published list of verified requestors. These are clients that meet the bar to read client-tier preferences. Over time, we envision multiple trust servers, so we call ours the "seed" to indicate it's a starting place for the broader network growth.
Can I run my own server?
Absolutely! The protocol is fully open, and anyone implementing the spec can run our validator to ensure output is consistent. You can also leave feedback on the spec itself, as we're still in draft and accepting contributions.

What we commit to

No ads.Never the business model. Not here, not ever.
No surveillance.We log the minimum, and you can see every entry about you.
No dark patterns.No manufactured urgency, no shame-based copy.
Free to use.The hosted server is free, and so is running your own.
Data minimization by default.We ask for what we need. Nothing more.
No lock-in.Specs are open. Implementations are forkable.