Residency Management for Governments.
Open for all.

OpenResidency is an open-source, policy-driven infrastructure that connects trusted identity to jurisdiction, establishes and manages resident identity and residency, issues verifiable credentials, and lets residents use that trusted identity across participating public services.

Apache 2.0 licensed
Open source

Why residency matters

Trusted identity establishes the person.

OpenResidency establishes their residency, jurisdiction, and relationship to public services.

Where a person lives determines many of the public services they can access. OpenResidency gives subnational governments an open way to verify residency and issue trusted proof that can work across services.

  • Health
  • Education
  • Social protection
  • Land
  • Agriculture
  • Revenue
  • Permits

Who are you?

National identity

Where do you live, and what are you entitled to?

Residency

Does this jurisdiction recognize you for this service?

Proof of Jurisdiction

Single sign-on feature

One Resident Identity, Multiple Public Services

OpenResidency enables subnational governments to give each resident a single verified identity that works across participating public services. Residents authenticate once and access multiple services without creating separate accounts or repeatedly providing the same credentials.

01

The clinic

A referral reaches the right local provider.

02

The land office

A jurisdiction can evaluate a claim with the right context.

03

The classroom

A student is recognized for a local education service.

04

The program office

A local programme sees who it is responsible for.

Scenarios are composites. They describe patterns in subnational service delivery.

The missing infrastructure

Residency is infrastructure.

Target public services. Determine eligibility. Deliver local benefits. Administer local programs. Connect residents to relevant services.

A woman carrying a child walks past painted metal homes marked with street addresses

Identity tells the system who you are.

Residency tells it where the system should serve you.

The category

Proof of Jurisdiction

Proof of Jurisdiction is trusted, portable, consented evidence connecting a person to the jurisdiction responsible for recognizing and delivering a public service.

01

Trusted

Issued and verified through clear rules and accountable systems.

02

Portable

Designed to work across participating public services.

03

Consented

The resident can see and approve how proof is used.

A resident holding up a phone against a bright sky

RulePacks

One open core.
Different Jurisdictions. Different Rules.

OpenResidency separates the reusable core from the jurisdictional decisions that make services local.

Read the RulePack
OpenResidency core feeds a jurisdiction profile, which branches into local RulePacks and different local rules.

One core

openresidency/core

profiles/nationalgovernment/customjurisdiction.yaml

rulepack

katsina.yaml

rulepack

nakuru.yaml

rulepack

kerala.yaml

rulepack

custom-jurisdiction.yaml

Different Local Rules

How it works

From trusted identity to
Resident Identity.

From Identity to Verified
Residency.

  1. 01

    The Person is Established

    A trusted foundational or authoritative identity source establishes who the person is.

    Credentials · OIDC

  2. 02

    The Resident's Identity is established

    OpenResidency creates and manages the jurisdiction-specific resident record and persistent resident identifier, linked to the trusted identity.

    RulePacks

  3. 03

    Residence is verified

    The rules run against available evidence to establish residency.

    Verification

  4. 04

    A credential is issued

    A trusted, portable proof of residency is issued to the person.

    Credentials · OIDC

  5. 05

    One trusted identity, reused across services.

    Residents authenticate once and reuse their verified identity and residency information across participating public services through configured APIs, verifiable credentials, and SSO.

    Offline verification

  6. 06

    The right service, based on the right rules.

    Participating authorities connect their services to OpenResidency and apply their own eligibility and programme rules across sectors including tax, education, health, agriculture, land, and social protection. OpenResidency provides the trusted resident relationship and authorized attributes. The responsible authority makes and remains accountable for the final decision.

    Consent · Audit

People at a public service counter completing residency paperwork

Use cases

A residency layer, wherever a service needs jurisdiction.

This is a reusable public infrastructure pattern.

Open source

Open and reusable by any government.

01

Apache 2.0

A clear, permissive license

02

Public Repository

Inspect the work in the open

03

Quick Start

Run the reference implementation

04

Documentation

Understand decisions and interfaces

05

Contribution Guide

Improve it with us

06

Governance

See how the project is stewarded

Scale of the question

Residency is local by definition.

So should access to services.

4 Billion

people across the world are essentially “invisible” to geographic and infrastructural systems.

What services are they entitled to?

Where the project stands.

Where are we currently

Open source

Fully published on an Apache 2.0 license, and available for all.

DPG

Submitted against nine DPG Standard indicators. Recognition status: Pending

Repository

Public source code & documentation

Who this is for

Built for people who build public systems.

Governments & Jurisdiction

Establish residency around your own laws and services.

Digital government/DPI teams

Configure and integrate the residency layer.

Development partners

Support reusable public infrastructure.

Developers

Run it, read the code, and contribute.

Researchers & civic technologists

Study the model of Proof of Jurisdiction.

Don't take our word for it.Read the code.

See the Docs
1import { get, post } from '@lib/api';2import { validateIdentity } from '@lib/validators';3import type { Identity, ResidencyStatus } from '@lib/types';45export async function verifyIdentity(6  userId: string,7  credentials: Record<string, unknown>8): Promise<Identity> {9  const { data } = await post('/identity/verify', {10    userId,11    ...credentials,12  });1314  return data as Identity;

Documentation

Start with the documentation.

Everything you need to understand, run and contribute to OpenResidency.

Have a question about OpenResidency?

For governments, implementers, researchers and contributors who want to better understand the project.

We use your information only to respond to your inquiry

Open for all

The next jurisdiction should not have to start from zero.

OpenResidency puts the core infrastructure in the open.

Configure it. Adapt it. Connect it. Improve it.