Photon screenshot

Photon

Decentralized Messenger with Social Key Recovery

Zero servers • Rolling-chain encryption • UDP + TCP

Install

Version: Stel Stela · Updated: 2026-10-14

One-line installer downloads pre-built binaries and creates shortcuts.

Release (Recommended)

Linux/macOS/Redox:

curl -sSfL https://brobdingnagian.holdmyoscilloscope.com/photon/install-release.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy Bypass -c "irm https://brobdingnagian.holdmyoscilloscope.com/photon/install-release.ps1 | iex"

Android:

Enable "Install unknown apps" in Settings if prompted

Development

Pre-release build for testing, visually tagged so it's never mistaken for release.

Linux/macOS/Redox:

curl -sSfL https://brobdingnagian.holdmyoscilloscope.com/photon/install-development.sh | sh

Windows (PowerShell):

powershell -ExecutionPolicy Bypass -c "irm https://brobdingnagian.holdmyoscilloscope.com/photon/install-development.ps1 | iex"

Android:

Enable "Install unknown apps" in Settings if prompted

After install, find Photon Messenger
in your program list
(Start Menu on Windows, app launcher on Linux).
Or run photon-messenger from terminal.

Why cryptographic signatures?
Every binary is signed with Ed25519 and
self-verifies on startup. This mostly protects against data corruption (bit flips, incomplete writes, storage failures) and tampering. If even a single bit is wrong, the binary won't run—ensuring you're always running the exact code as designed. You'll also know who signed the distribution, establishing cryptographic provenance and an immutable audit trail.

Verify It

A download page that says "trust me" is a password with extra steps. Do not trust this page. Check it.

Every platform, direct
linux x86_64 · linux arm64 · windows x86_64 · windows arm64 · macos x86_64 · macos arm64 · redox · android

Yes, Redox. An operating system most people have never run has a build, and most billion-user messengers do not.

Every release binary carries its own signature.
The last 64 bytes are an Ed25519 signature over the BLAKE3 hash of everything before them. The matching public key is published in the source (src/crypto/self_verify.rs) and again right here, so the two channels can vouch for each other:

dff3af0c127c0bebe539c421da37993a517bfd78d2f5ee491d52fbf616444747

The quick check.
The binary verifies that signature at startup and refuses to run if it fails; photon-messenger verify runs only the check. That catches corruption and tampering. It cannot catch substitution, because a counterfeit would happily vouch for itself. That is what the next rung is for.

The independent check.
Verify the signature without running anything you downloaded. Any Ed25519 verifier works; the recipe is verify(last 64 bytes, BLAKE3 of the rest) against the key above (pip install blake3 cryptography first):

python3 - photon-messenger-linux-x86_64-release <<'EOF'
import sys, blake3
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
d = open(sys.argv[1], 'rb').read()
k = bytes.fromhex('dff3af0c127c0bebe539c421da37993a517bfd78d2f5ee491d52fbf616444747')
Ed25519PublicKey.from_public_bytes(k).verify(d[-64:], blake3.blake3(d[:-64]).digest())
print('valid: signed by the key published in the source')
EOF

Keys this binary trusts: 1.
The author's, the one printed above. Today, one person signs every release, and that count is stated here rather than hidden behind a company name. The plan on record is for that list to grow under democratic governance; until it does, the honest number is 1, and you deserve to know whose 1 it is.

Deepest rung.
Skip every binary on this page and build the source yourself. A source build makes you generate your own signing key and sign your own binary. Deliberate friction, because if you build it, you should know what you are signing.

Self-updates are checked the same way, automatically.
Each release ships a signed manifest (BLAKE3, size, version and commit for every binary, Ed25519-signed), and the client verifies before it ever swaps itself. You never need to read VSF by hand to verify a download; the signature on the binary is the check. The one-tap page at passless.org/photon streams these same bytes from the same store, so nothing there can drift from what the signatures cover.

See It In Action

Watch how rolling-chain encryption evolves with each message. Every message is cryptographically bound to
all previous messages—no replay attacks, no reordering,
no tampering. The chain state only advances once the
sender receives confirmation that the message was
received and decrypted successfully. Multiple messages
can be sent using the same chain state, and they're
processed in order once receipts arrive—keeping both
sides synchronized even during network disruptions.

T
A

What is Photon?

Photon is a decentralized messaging system that eliminates corporate servers, phone numbers, and centralized control. All messages are end-to-end encrypted with rolling-chain cryptography.

Abstract technical illustration of a decentralized peer-to-peer mesh network with glowing nodes interconnected by luminous lines, dark background with neon cyan and green accents, isometric view, minimalist geometric style, digital art

Peer-to-Peer

No company servers. No data centers. Messages route peer-to-peer thru distributed hash tables. Can't be shut down, can't be subpoenaed.

Conceptual illustration of a cryptographic key fragmenting into glowing shards distributed among silhouettes of people in a circle, digital particles connecting them, warm amber and cyan lighting, holographic aesthetic, cyberpunk style

Social Key Recovery

Your identity is distributed as encrypted shards across trusted friends. Lose all devices? They reconstruct your identity.

Abstract visualization of a cryptographic chain with interconnected blocks, each message affecting the next, glowing hash connections flowing like electricity thru linked nodes, dark background with electric blue and purple gradients, technical blueprint aesthetic

Rolling-Chain Encryption

Each message affects encryption of all subsequent messages. Position-bound cryptography prevents replay and reordering attacks.

Split-screen technical illustration showing encrypted network traffic blending seamlessly with normal web traffic and BitTorrent streams, data packets flowing thru glowing pathways, indistinguishable streams merging, matrix-style green code overlay, dark tech aesthetic

Direct P2P

Messages, transfers and calls travel directly between devices over UDP. No servers in the middle, no routing thru data centers, no third-party metadata collection.

Minimalist illustration of digital messages fading away with timestamp markers (1h, 24h, 7d, 30d), leaving geometric tombstone placeholders, dissolving particle effects, clean interface design with cyan and orange accents, modern UI aesthetic

Expiring Messages

Set custom expiration times or delete messages manually. Deleted/expired messages replaced with tombstones to preserve chain integrity.

Abstract representation of privacy controls with toggle switches, shield icon glowing softly, minimalist UI elements, dark interface with subtle green 'protected' indicators, clean modern design, security-first aesthetic operating system

Privacy by Default

Read receipts, typing indicators, online status are disabled by default. Features that reveal behavior or identity require opt-in.

Messaging Matrix

Property SMS Signal WhatsApp Telegram Messenger Matrix Photon
Authentication count >1 >1 >1 >1 >1 >1 1
E2EE by default ✗ ✓ ✓ ✗ ✗ ✓ ✓
Decentralized ✓ ✗ ✗ ✗ ✗ ✓ ✓
Social recovery ✗ ✗ ✗ ✗ Partial* ✗ ✓
Metadata privacy ✗ Partial ✗ ✗ ✗ Partial ✓
Self-sovereign data Local*** ✗ ✗ ✗ ✗ Partial ✓
Multi-device sync ✗ ✗ Cloud Cloud Cloud Federation Decentralized
Phone number required Yes Yes Yes** Yes No No No
Open source N/A ✓ ✗ Client only ✗ ✓ ✓
Immutability Local*** ✗ ✗ ✗ ✗ Partial Full

* Partial social recovery: Facebook Messenger allows selecting 3-5 "trusted contacts" who can help recover your account. They receive codes to give you. This requires Facebook account access and doesn't work if Facebook locks you out. Facebook controls the keys.

** WhatsApp phone-only recovery: Account tied to phone number via SMS. If carrier invalidates your SIM (account closure, porting hijack, lost abroad), you're permanently locked out. No alternative recovery. Worse than no recovery system because it creates false sense of backup.

*** SMS local-only: Messages stored only on device. No cloud backup, no server storage, no synchronization. Messages immutable on your device but can be deleted by carrier, lost with device, modified on recipient's device, or trivially spoofed (sender ID is not authenticated).

About Immutability:

Message immutability means conversations cannot be altered, deleted, or reordered after transmission without cryptographic evidence of the modification. This prevents gaslighting, protects against retroactive censorship, and establishes verifiable provenance for disputes.

Most platforms let senders delete messages from both sides, edit history silently, or revoke entire conversations. "Unsend" features sound convenient until someone deletes evidence of harassment, agreements, or admission of wrongdoing. Courts can't subpoena deleted Signal messages. Businesses can't prove contract terms discussed over WhatsApp if the other party unsends them.

Photon supports deletion as a convenience feature, but rolling-chain encryption makes any modification cryptographically detectable—each message is mathematically bound to all previous messages. Deleting or editing requires consent from both parties and leaves verifiable proof in the chain. Your conversation history becomes cryptographic evidence. No "he said / she said"—the mathematics documents everything, and maths don't lie.

How It Works

Rolling-Chain Encryption

For a conversation between Ada and Turing, each party maintains two independent unidirectional chains:

Unlike Signal's Double Ratchet (which advances immediately), rolling-chain requires completing the loop before advancing thus guaranteeing message order and immutability.

Social Key Recovery

Your 256-bit private key is split into overlapping shards distributed across trusted friends:

Network Discovery

Photon uses a custom distributed hash table for discovery:

Identity is human-readable: message fractal decoder instead of 68325246092135005593188004702279567398142131080053653706547690190910173287891. Names are bound cryptographically to public keys via deterministic DHT addressing—no DNS, no blockchain, no registration fees.

↓
Deep Dive
Identity System
↑

Project Status

Mainnet is live — install, pick a handle, and message. Early and rough in places, but real and running.

Linux
x86_64 + ARM64
Windows
✓
macOS
Intel + ARM
Android
✓
Redox
✓
iOS
blocked

What Works

  • ✓ Cross-platform app: Linux, Windows, macOS, Android, Redox
  • ✓ CLUTCH key ceremony (8 algorithms, quantum-resistant)
  • ✓ Rolling-chain encrypted messaging, device to device
  • ✓ Multi-device fleet: add by near-tap or phrase; contacts, settings and history converge
  • ✓ Waves: end-to-end encrypted voice, direct, kept as recordings
  • ✓ Files of any type, byte-exact, with previews; every device keeps a copy
  • ✓ The bridge: drive one of your devices from another, drop files into it
  • ✓ Self-updating signed builds, release notes in the app
  • ✓ Sixteen languages; dozenal, hexadecimal or arabic numbers
  • ✓ Handle registration and DHT discovery

In Progress

  • ◐ Beams (video)
  • ◐ Social key recovery
  • ◐ Molecules (group conversations)
  • ◐ Off-grid Wi-Fi Direct (built, field test pending)
  • ◐ Relay carriage for waves between two carrier-NAT phones

Open to everyone: FGTW is up, so anyone can install Photon, register a handle and start messaging. The network will not be wiped; handles lock in fully once ferros is running and has been in use for a while.

License: MIT OR Apache-2.0 (dual)

Repository: github.com/nickspiker/photon

What's new

Stel Stela

Stel Stel

Stel Lunor