Distro Compliance Tracker
How Distros Are Responding
We track how Linux distributions are responding to age verification mandates, and we provide tools to undo whatever they implement. If a distribution adds an age collection prompt, we will publish a script that removes it. If it ships a D-Bus age verification daemon, we will publish a package that replaces it with silence.
Current Status
As of March 2026
AB 1043 takes effect January 1, 2027. No major distribution has shipped an
application-facing compliance mechanism yet, but the infrastructure is forming
upstream. (MidnightBSD, a desktop BSD, shipped the first base-system age
verification daemon in March 2026 — though it is purely self-declared
and does not satisfy statutes requiring identity checks.) systemd merged a
birthDate field into user records on
March 18, 2026. An xdg-desktop-portal PR defines the application-facing API.
The original freedesktop.org D-Bus proposal has been closed; the portal approach
is the path forward. Here is where every project stands.
birthDate field (YYYY-MM-DD) to
JSON user records. Explicitly cites AB 1043, CO SB 26-051, and Brazil Lei
15.211. A community
revert attempt
(PR #41179) was rejected by Lennart Poettering, who called the field
“optional” and stated systemd “enforces zero policy.”
The conversation was locked after 945+ comments. Now shipping in
released systemd: v261 went stable June 19, 2026 (v261.1 on June 26),
so birthDate is no longer merely in git — it is in a tagged release.
The companion xdg-desktop-portal
PR #1922 (age range portal API) was closed April 13, 2026 without
merging, leaving this data layer without its intended app-facing API.
A "Liberated systemd" fork that strips the field exists and drew fresh coverage
in June 2026. Affects all systemd-based distributions.
org.freedesktop.AgeVerification1 D-Bus interface. Community
member FloofyWolf responded with satirical
systemd-censord counter-proposal. No official project position.
/etc/ populated during account creation, local D-Bus API,
no telemetry. No mechanism shipped or formally adopted.
aged daemon stores per-user age and date of birth in an
SQLite database (/var/db/aged/aged.db), exposed over a
Unix socket, enabled by default in rc.conf, and started
before LOGIN. The agectl CLI sets and
queries age data. Three C functions added to libutil
(agev_get_age_bracket(), agev_set_age(),
agev_set_dob()) give any compiled application access to
age brackets. Age-based Unix groups (age4p,
age13p, age16p, age18p) gate
package installation via mport. Purely self-declared:
root sets age via CLI, no external verification, no network calls.
The PR body states this “will not comply with Brazil or the
proposed law in New York. (they require ID checks)” The
geographic COPYRIGHT
exclusion of California and Brazil remains in place alongside the
new daemon. Shipped by default in MidnightBSD 4.0.4 (released
March 31, 2026) — the first open-source OS to ship age verification
enabled out of the box, not merely merged to a development branch.
adduser now prompts for age at account creation and
mport checks the user's bracket on install.
birthDate field
does not exist on Artix systems.
The Emerging Standard
systemd userdb + xdg-desktop-portal
The original D-Bus proposal (org.freedesktop.AgeVerification1) by
Aaron Rainbolt was closed at freedesktop.org after community pushback. Rainbolt
pointed instead to the xdg-desktop-portal approach — but that portal PR was itself
closed in April 2026 (see below). As of mid-2026 the stack is lopsided: the data
layer has shipped in a stable systemd release, while the
application-facing API layer has stalled with no active proposal.
The two layers:
Data Layer: systemd userdb birthDate
Shipped v261
systemd PR #40954
(merged March 18, 2026) adds a birthDate field to JSON user
records. Stores exact dates (YYYY-MM-DD), not brackets. Readable by any
process querying userdb. Shipped in systemd v261, released stable
June 19, 2026 (v261.1 June 26) — now in distributions' update pipelines,
not just upstream git. This is the storage layer that the application API reads from.
API Layer: xdg-desktop-portal age range Closed — unmerged
PR #1922
(opened by David Edmundson, KDE) proposed an age range portal — applications submit
age thresholds and receive ranges, not exact dates. The PR was locked
March 10 and formally closed April 13, 2026 ("nothing constructive can be
achieved here"), and no successor has been filed. Combined with the closed D-Bus
proposal, there is currently no active freedesktop effort to give
applications a standard way to read the birthDate the data layer now stores.
Understanding both layers is essential. The original D-Bus interface specification below remains relevant as context for the broader ecosystem discussion.
Proposed Interface
<interface name="org.freedesktop.AgeVerification1">
<method name="SetAge">
<arg type="s" name="User" direction="in"/>
<arg type="u" name="YearsOfAge" direction="in"/>
</method>
<method name="SetDateOfBirth">
<arg type="s" name="User" direction="in"/>
<arg type="s" name="Date" direction="in"/>
</method>
<method name="GetAgeBracket">
<arg type="s" name="User" direction="in"/>
<arg type="u" name="AgeBracket" direction="out"/>
</method>
</interface>
Brackets: 1 = under 13, 2 = 13-15, 3 = 16-17, 4 = 18+.
Returns AgeUndefined error if no age has been set.
Runs on the system bus as root. Age data stored root-owned, not world-readable.
Ageless Linux Response: When This Ships, We Ship a Replacement
When any distribution ships an implementation of
org.freedesktop.AgeVerification1, Ageless Linux will provide:
AgeUndefinedThe goal is not to break applications that query the interface. The goal is to ensure they receive a consistent "age unknown" response. Applications that cannot function without age data are applications that have chosen to require surveillance as a prerequisite for use. We will not help them.
Reversion Guides
How to Remove What They Add
As distributions implement age verification, this section will provide step-by-step reversion instructions for each one. Currently, there is nothing to revert — but we're ready.
Ubuntu / GNOME (anticipated)
If Canonical adds age collection to the Ubuntu installer or GNOME Initial Setup, the likely mechanism will be either an AccountsService extension or the proposed D-Bus daemon. Reversion:
# Anticipated — will be updated when implementation ships # Mask the age verification daemon sudo systemctl mask ageverification.service # Or replace with Ageless stub sudo apt install ageless-ageverification-stub # Remove age data from AccountsService sudo rm -f /var/lib/AccountsService/users/*.age # Verify dbus-send --system --print-reply \ --dest=org.freedesktop.AgeVerification1 \ /org/freedesktop/AgeVerification1 \ org.freedesktop.AgeVerification1.GetAgeBracket \ string:"$(whoami)" # Should return: Error AgeUndefined
Status: Speculative. No implementation exists yet. This section will be updated with tested instructions when a real implementation ships.
Debian Installer (anticipated)
If Debian adds an age question to d-i (debian-installer),
it will likely be a new udeb component. Reversion for
unattended installs:
# Preseed to skip age collection (anticipated) d-i ageverification/skip boolean true d-i ageverification/age string undefined # Post-install removal apt purge ageverification-daemon echo "AGELESS_AGE_VERIFICATION_STATUS=refused" >> /etc/os-release
Fedora / Anaconda (anticipated)
# Kickstart snippet to skip age verification %packages -ageverification-daemon ageless-stub %end %post systemctl mask ageverification.service %end
Any Distro, Right Now
No distro has shipped age verification yet. For the moment, the only thing you need:
# Preview what the script will do: curl -fsSL https://agelesslinux.org/become-ageless.sh | sudo bash -s -- --dry-run # Convert: curl -fsSL https://agelesslinux.org/become-ageless.sh | sudo bash -s -- --accept --flagrant # Revert (undo everything): curl -fsSL https://agelesslinux.org/become-ageless.sh | sudo bash -s -- --revert
This installs the Ageless Linux identity, neutralizes the systemd
userdb birthDate field, and installs a REFUSAL notice.
Every action is logged and fully reversible. When there is something
real to remove, this script will be updated to remove it.
The Commitment
What Ageless Linux Promises
As long as any Linux distribution ships age verification infrastructure mandated by state law, Ageless Linux will maintain tools to remove, replace, or bypass that infrastructure. We will track every compliance mechanism across every major distribution. We will provide tested, documented, one-command reversion for each one. We will maintain forked packages, replacement daemons, installer preseeds, and post-install scripts.
There will always be a Linux distribution that treats its users as people of indeterminate age.