Last updated 8 August 2026
This covers the Pigeonpost services we operate: the mailbox servers ("lofts"), the name registry, the node directory, and this website. Our full legal reasoning — including the primary sources and the questions still open — is published in docs/law.md. This page is the summary; that document is the working.
The Pigeonpost project operates the public nodes at pigeonpost.dev and is the data
controller for them. Contact: privacy@pigeonpost.dev.
An EU legal representative and point of contact under Regulation (EU) 2023/1543 and the Digital Services Act is being designated; this page will name them once notified. Until then, use the address above for any request, including from the EU.
Message content is encrypted on your device and can be decrypted only by the recipient. This is not a promise about our conduct — a loft holds a blob it has no key for.
A loft can see, and stores:
A loft cannot see:
A public key is not a name, but it is a persistent identifier, and under EU law we treat it as personal data where it can be linked to a person.
Our design adds an optional, encrypted attribution block that lets a sender's public key be recovered by the holder of an offline compliance key, under a valid legal order, for named time periods only. It never exposes message content, and the recipient can verify a block without learning anything the message did not already tell them.
This is a deliberate choice, not a legal requirement, and it is not currently running: nothing in the live service asks for or produces an attribution block. When it ships, this page will say so before it is switched on, and the limitations — including that a modified client can simply omit it — are set out in law.md §3.
Claiming a handle such as /gh/yourname writes a permanent, public entry to an
append-only transparency log. That log exists so that nobody — including us — can quietly change
who a name points to. The same property means entries cannot be edited or removed.
Each entry contains, publicly and permanently: the handle, the public key it binds, the
identity the provider vouched for (gh:yourname or google:<subject id>),
and the time of the claim.
We record Google's opaque subject identifier rather than anything derived from your email address. Do not claim a handle you would not want published permanently. Using a key address instead requires no registration and records nothing, anywhere.
Claiming a handle exchanges a one-time code with GitHub or Google to confirm the account is yours. We never receive a password, and we do not keep the access token afterwards.
If you operate a public loft and submit it, its address, advertised capacity, retention, and our measurements of its reliability are published. That is the point: it lets anyone check whether the numbers we weight nodes by are honest.
Our design keeps network records (such as IP addresses) in a sealed store, encrypted under short-lived keys, held separately from any identity data, and readable only through the disclosure process in §9. That separation is a legal requirement in the European Union, not a preference: the Court of Justice permits retaining IP addresses only where the arrangements keep them watertight-separated from civil identity data.
No cookies, no analytics, no trackers, no third-party requests. This page loads two files from this domain and nothing else.
Under the GDPR we rely on the following bases. Turkish users have equivalent protection under KVKK (Law No. 6698), whose lawful-processing grounds we map to the same purposes.
| What | Why | Basis | Kept for |
|---|---|---|---|
| Encrypted messages | To deliver mail you asked us to carry | Performance of the service you requested (GDPR Art. 6(1)(b)) | 30 days, then deleted automatically |
| Name registry entries | To make name bindings publicly auditable | Legitimate interests in an unfalsifiable public record (Art. 6(1)(f)); you choose to claim a handle | Permanent — an append-only log cannot be edited |
| Directory entries and probe results | To let anyone verify how nodes are weighted | Legitimate interests (Art. 6(1)(f)) | While the node participates |
| Network records — Türkiye | Statutory retention for hosting providers | Legal obligation (Art. 6(1)(c)); Law No. 5651 Art. 5 | 1 year |
| Network records — United States | Abuse response and security | Legitimate interests (Art. 6(1)(f)). No US retention mandate exists | 30 days, or longer under a preservation request |
| Network records — European Union | Nothing by default | — | Preservation only. Retained when an order requires it, never routinely |
| Web server access logs | Operating and securing the service | Legitimate interests (Art. 6(1)(f)) | The servers' standard rotation schedule |
Retaining data in the EU "to be helpful" is the failure mode, not the safe choice — under GDPR minimisation, retention without a mandate is itself the violation. That is why the EU row is empty by design.
We answer lawful orders and nothing less. In practice that means:
Every disclosure appends an entry to a public, append-only log with signed checkpoints, so the number and shape of requests we receive is externally verifiable without making any individual order searchable.
Our nodes run in more than one country, and a message may rest on a node outside your own. Turkish network records and the keys that open them stay resident in Türkiye. Because message content is end-to-end encrypted, a transfer of ciphertext exposes nothing that the receiving jurisdiction could compel us to reveal.
In the EU/EEA and the UK you have rights of access, rectification, erasure, restriction, objection, and portability, and the right to complain to your supervisory authority. In Türkiye you have the equivalent rights under KVKK Art. 11, including the right to apply to the Kişisel Verileri Koruma Kurulu.
Two limits we would rather state than bury:
Your practical choices are stronger than any request to us:
Pigeonpost is open infrastructure and anyone can run a loft. This policy covers only the nodes we operate. A node run by someone else is subject to their policy and their jurisdiction — and in some countries its operator carries retention duties of their own. It still cannot read your messages, because no loft can.
Pigeonpost is developer infrastructure for software agents and is not directed at children. We do not knowingly collect data from anyone under 16.
Changes are published here with a new date. The full history of this page is public in the repository, so any revision can be diffed — including this one.
privacy@pigeonpost.dev for privacy requests, legal@pigeonpost.dev for legal process, or open an issue on GitHub.