Skip to content

outerheaven199X/ageverifyd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ageverifyd

Reference implementation of the proposed org.freedesktop.AgeVerification1 D-Bus interface for Linux distributions.

Provides OS-level age bracket storage and retrieval for compliance with California AB-1043 and New York S8102-A. Applications and app stores query a single system daemon instead of each performing their own age verification.

Status: Break Glass in Case of Emergency

This is a skeleton implementation — a starting point for the Linux desktop ecosystem, not a finished enforcement tool. The goal is to have the plumbing ready before legislation forces rushed, fragmented solutions.

This reference impl is intentionally minimal and open to iteration. If you're a distro maintainer, desktop environment developer, or app developer, the interface is designed for you to poke holes in, improve, and build on. File issues, propose spec changes, and help shape what this becomes.

What this is

  • A proposed D-Bus interface that any app can query for age brackets
  • A working daemon + CLI + packaging to prove the concept end to end
  • A starting point for discussion on how Linux desktops should handle age compliance

What this is not

  • A bulletproof enforcement mechanism (it's self-reported, like most age gates)
  • A finished XDG specification (that requires community consensus)
  • A solution for web platforms or mobile (this targets Linux desktop specifically)

How It Works

The daemon runs on the system D-Bus and exposes three methods:

Method Description
SetAge Store a bracket derived from a stated age
SetDateOfBirth Store a bracket derived from a date of birth
GetAgeBracket Retrieve the stored bracket (1-4) for a user

Age brackets (identical under both laws):

Bracket Meaning
1 Under 13
2 13 to 15
3 16 to 17
4 18 or older

Only the bracket integer is persisted when using SetAge -- the exact age is discarded immediately. When using SetDateOfBirth, the DOB is stored so the bracket auto-updates as the user ages.

Installation

pip install .

System files (D-Bus policy, systemd unit) are in data/ and need to be installed to the appropriate system paths. See packaging/ for distro-specific packaging (Debian, Arch, RPM).

CLI Usage

The ageverify CLI can talk to the running daemon or write directly to storage:

# Via D-Bus (daemon must be running)
ageverify set-age alice 25
ageverify set-dob bob 1995-06-15
ageverify get-bracket alice

# Direct mode (bypasses D-Bus, requires root)
sudo ageverify --direct set-age alice 25

Running the Daemon

# Manually
sudo ageverifyd

# Via systemd
sudo systemctl enable --now ageverifyd

Development

pip install -e .
pip install pytest ruff

pytest tests/ -v
ruff check src/ tests/

Known Limitations

These are known and intentional for a v0.1 reference implementation:

  • Self-reported ages: Like all age gates, this trusts user input. Stronger verification (identity providers, hardware attestation) can layer on top later.
  • Plaintext DOB storage: The auto-update feature requires persisting the date of birth. A production hardening pass should consider encryption at rest.
  • No app-side enforcement: The daemon provides data; apps must opt in to checking it. Adoption depends on distro and DE buy-in.
  • Local root can override: A user with sudo can change their own bracket. This is inherent to any local-first system without remote attestation.

Contributing

This is early-stage and actively looking for feedback from distro packagers, DE developers, and app developers. Open an issue to discuss the interface design, security model, or integration strategy.

License

LGPL-2.1-or-later

About

Reference implementation of org.freedesktop.AgeVerification1 D-Bus daemon for OS-level age bracket compliance

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors