lock
aesmsg
Documentation
GuidesUpdated May 2026·5 min read

Introduction to aesmsg

aesmsg is a privacy-first encryption layer over the communication channels you already use. Encrypt sensitive content locally, share an opaque link through any app, and only the intended recipient can ever open it.

info
aesmsg is not a messenger. It's a zero-knowledge transmission utility. We never see your plaintext, your keys, or your attachments — only opaque ciphertext lives on our servers.

What is aesmsg?

The channels people use to send credentials, files, and confidential notes — Slack, WhatsApp, email — were never designed to keep that content private from the channel itself. aesmsg sits one layer above: it encrypts before you send, so the channel only ever transports an opaque link to ciphertext.

lock
Encrypt locally
AES-256-GCM sealing on your device, before anything is uploaded.
share
Share anywhere
Paste the link into Slack, WhatsApp, email, SMS — any channel.
key
Only they open it
Decryption needs the recipient's private key, which never leaves their device.

How it Works

Every message follows the same six-step path from your device to your recipient's — and at no point does plaintext touch our servers.

1
Compose & attach. Write your message or attach a file in the aesmsg client.
2
Encrypt locally. The client seals the payload to the recipient's public key with AES-256-GCM.
3
Upload ciphertext. Only the encrypted blob and minimal metadata are uploaded. Plaintext never leaves your device.
4
Get a secure link. The backend returns an opaque pointer to the ciphertext — not the secret itself.
5
Share the link. Paste it into whatever app you already use to reach your recipient.
6
Recipient decrypts. They open the link, download the ciphertext, and decrypt locally after biometric unlock.

Quickstart

Send your first encrypted message in under a minute.

terminal
# Install the CLI
$ npm install -g @aesmsg/cli
# Encrypt and get a link
$ aesmsg send "my secret" --to alice.pub
→ https://aesmsg.app/l/x7Kp9...

Encryption Model

aesmsg uses HPKE (RFC 9180) — DHKEM(X25519, HKDF-SHA256) for key encapsulation, AES-256-GCM for the payload, and HKDF-SHA256 as the KDF. Every message gets a fresh symmetric key.

LayerPrimitive
Key encapsulationDHKEM(X25519, HKDF-SHA256)
Payload encryptionAES-256-GCM
Key derivationHKDF-SHA256

Keys & Identity

Every user has a PKI keypair generated on-device. Your private key never leaves your device unless you explicitly export an encrypted backup. Trust between users is established by manual fingerprint verification or QR scan.

verified_user
Fingerprint example. Compare this out-of-band with your contact:
AM-7f3a 9c2e 4b8d 1a6f

A secure link is a pointer, not a secret. Without the recipient's private key it is useless. Public link previews are safe — messaging apps that auto-fetch the URL never consume an open or expose ciphertext.

Expiry & Revocation

Links can self-destruct after a set time (10m, 1h, 24h, 7d, or custom), cap the number of opens (1, 3, or unlimited until expiry), and be manually revoked at any time. Revocation purges the ciphertext from the server immediately.

Threat Model

aesmsg protects the confidentiality and integrity of your message contents against the server, the transport channel, and anyone with later access to the conversation. It does not hide that communication occurred, nor protect a device already compromised at the OS level.

Zero-Knowledge

The server stores only: message ID, ciphertext, creation time, expiry, max opens, and status. It never stores plaintext, private keys, message previews, or unencrypted attachments. This is the core guarantee — everything else follows from it.