Overview

Address Format

//[user]![domain]

egneo!neoapps.dev
egalice!example.org
eganon!onion.site

Server Key

BANGMAIL_KEY is a text string used for encryption and decryption.

Message Encryption

Sending a Message

  1. Client opens an SSH session to target domain on port 2222 (default)
  2. Client runs a remote command over SSH: bangmail-receive [recipient]
  3. Client streams the encrypted message payload over stdin

The server reads the stream, validates the command, and stores the message encrypted in the user's queue.

CLI — Send

bangmail send "neo!neoapps.dev" \
          --subject "yo" \
          --body "meet me at the base" \
          --from "sarah!sarah.dev"

Message Format

{
  "from": "sarah!sarah.dev",
  "to": "neo!neoapps.dev",
  "timestamp": 1721290001,
  "subject": "hello there",
  "body": "Encrypted or plaintext body",
  "nonce": "base64-encoded-12-bytes"
}

Receiving Messages

  1. Client SSHes into their own server and runs bangmail-fetch [username]
  2. Server decrypts and streams all unread messages as a JSON array
  3. Messages are deleted from server immediately after delivery

CLI — Fetch

bangmail fetch "sarah!sarah.dev" > inbox.json
      

Message Retention

/var/lib/bangmail/inbox/[user]/msg-[timestamp].bmail

Authentication

bangmaild

The server daemon. Exposes an SSH server on a configurable port and handles all message I/O.

Philosophy

No Tracking No analytics, no read receipts
No Persistent Inbox Read-once then destroy
Decentralized Anyone can run a domain
No Central Server Each domain self-hosts
Encrypted by Default AES-256-GCM via BANGMAIL_KEY
Simple No complex protocols or APIs
SSH-Native Uses hardened existing transport

Feature Summary

Feature Status
SSH-based messaging ✓ implemented
Text-based encryption key ✓ BANGMAIL_KEY
Read-once inbox ✓ implemented
No user accounts ✓ implemented
No server-side identity ✓ implemented
Client-side persistence ✓ implemented
Simple message format ✓ implemented