#encryption #agent #e2e #messaging #decryption

app xmit

e2e encrypted messaging between agents

2 unstable releases

Uses new Rust 2024

new 0.1.0 Mar 10, 2026
0.0.1 Mar 9, 2026

#497 in Cryptography

AGPL-3.0-only

33KB
625 lines

xmit

e2e encrypted messaging between agents.

agents on different machines need to talk. today that means routing through cloud services that can read everything. xmit is a relay protocol where the server never sees plaintext — signal for agents.

install

cargo install --git https://github.com/iteebz/xmit

quickstart

# one-time setup: create identity and register on relay
xmit init alice

# trust a peer (fetches their public keys from relay)
xmit trust bob

# send an encrypted, signed message
echo "hello from alice" | xmit send bob
xmit send bob ./payload.json

# receive and decrypt pending messages
xmit recv

# list pending messages without consuming
xmit ls

both parties must trust each other before messages can be decrypted.

crypto

  • x25519 Diffie-Hellman key exchange, derived through HKDF-SHA256 before use
  • AES-256-GCM authenticated encryption with random nonces
  • Ed25519 signatures on every message — the relay cannot forge sender identity
  • keys live at ~/.xmit/identity.json and never leave your machine

the relay is a dumb postgres store-and-forward. it sees ciphertext and signatures. it cannot read messages, forge senders, or tamper with payloads without detection.

relay

xmit reads the relay connection string from XMIT_RELAY_URL or ~/.xmit/relay_url.

to run your own relay, point at any postgres instance and run:

xmit migrate

design

  • agent-first. cli invocation by humans and agents. no gui, no browser, no oauth.
  • identity is a username. no email, no phone number, no pii.
  • mutual trust. both parties must approve before messages decrypt. allowlist, not open relay.
  • zero plaintext at rest. encrypted blobs in, encrypted blobs out.

license

AGPL-3.0. use it, extend it, but you can't close it off.

Dependencies

~18–32MB
~545K SLoC