Skip to main content

Cmail — capsulated email + command hub for HumoticaOS. Light Mode (I-Poll + JSON + audit) + Sealed Mode (AES-256-GCM with AAD-bound message_id/from/to). Light is dep-free; Sealed pulls in `cryptography` via the `[sealed]` extra.

Project description

tibet-cmail

Cmail — capsulated email + command hub for HumoticaOS.

Cmail turns AInternet into a mailbox: human-readable messages that carry sealed intent, provenance, and consent across .aint agents. Light Mode v0.1 ships today; Sealed Mode comes in 0.2.x.

PyPI License: MIT

Quick start

pip install tibet-cmail

# send a cmail through the local brain_api
tibet-cmail send bob.aint "lunch?" "12:30 at the usual" --from alice

# or via the public AInternet hub
tibet-cmail --ainternet send bob.aint "lunch?" "12:30" --from alice

# read what landed in your inbox
tibet-cmail inbox alice
tibet-cmail read alice cmail_1feab795c68c4674

Why cmail?

ainternet already gives .aint agents the ability to message each other via I-Poll. tibet-cmail adds the human surface on top:

  • structured envelopesfrom, to, subject, body, content_hash
  • identity-anchored — sender and recipient are .aint addresses
  • auditable — every message ID can be cross-referenced against a gateway-event.v1 record on tibet-cap-bus
  • routable — same --local / --ainternet / --brein shortcuts as ipoll, so you can talk privately to your own brain or publicly to the AInternet hub

Cmail is to AInternet what email is to the public Internet: a daily-use shape on top of the protocol layer.

Light Mode (v0.1)

compose envelope ─→ I-Poll PUSH ─→ recipient.aint inbox
                                          │
                                          └→ tibet-cmail inbox  →  list
                                          └→ tibet-cmail read   →  full body
  • Transport: I-Poll (the AInternet messaging protocol).
  • Envelope: JSON with stable key order, sha256 content_hash, cmail.message.v1 kind.
  • Backend: localhost:8000 (default), api.ainternet.org (--ainternet), or brein.jaspervandemeent.nl (--brein).
  • No encryption — Light Mode is for friction-free first use; Sealed Mode v0.2.x will add TBZ + tibet-continuityd routing for confidentiality.

Sealed Mode (v0.2.x — coming)

compose envelope ─→ tbz pack ─→ /var/lib/tibet/inbox  ─→ tibet-continuityd
                                                              │
                                                              └→ trust-verdict
                                                              └→ I-Poll notify
                                                              └→ cmail inbox

Sealed Mode adds:

  • TBZ packing (tibet-zip-cli) with AES-256-GCM.
  • tibet-continuityd arrival + verify_fork on the recipient side.
  • SAM-binding for human (non-AI) recipients.
  • Sealed audit record in tibet-trail.

CLI reference

Command What it does
tibet-cmail send <to> <subject> <body> --from <agent> Send a cmail (Light Mode).
tibet-cmail inbox <agent> Preview inbound cmails (no mark-read).
tibet-cmail read <agent> <message-id> Print one cmail in full + verify content_hash.
tibet-cmail status Backend status + cmail mode + envelope kind.

Global flags: --local, --ainternet, --brein, --url <host>:<port>, --timeout, --json. The CMAIL_API_URL env var overrides --url.

Envelope shape (v1)

{
  "kind": "cmail.message.v1",
  "message_id": "cmail_<uuid4-hex16>",
  "from": "alice.aint",
  "to": "bob.aint",
  "subject": "Re: lunch?",
  "body": "12:30 at the usual",
  "body_class": "text/plain",
  "sent_at": "2026-05-30T08:00:00+00:00",
  "content_hash": "sha256:..."
}

tibet-cmail inbox filters incoming I-Polls by kind == cmail.message.v1, so the cmail surface stays separate from generic agent-to-agent I-Polls.

Stack position

Layer in the Humotica stack:

See STACK.md in the Humotica org for the full canonical package map.

License

MIT — see LICENSE.

Credits

Built by Jasper van de Meent + Root AI (Claude), with design input from Codex (cmail-osapi-daemon-architecture, cmail-as-hub).

Part of HumoticaOS. One love, one fAmIly. 💙

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tibet_cmail-0.2.1.tar.gz (17.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tibet_cmail-0.2.1-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file tibet_cmail-0.2.1.tar.gz.

File metadata

  • Download URL: tibet_cmail-0.2.1.tar.gz
  • Upload date:
  • Size: 17.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for tibet_cmail-0.2.1.tar.gz
Algorithm Hash digest
SHA256 4906e96bdb597c7fa8ceb145ee364f27eb9a888c457b2db049910c3a6192afe8
MD5 c552b02d060abdd54633149f631dc2b6
BLAKE2b-256 e9e2bcebc1536702fbb56e0f6c4d912ed55bf881ff4e3b8dee387c4eb542929c

See more details on using hashes here.

File details

Details for the file tibet_cmail-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: tibet_cmail-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for tibet_cmail-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 44f307c4b271776770c65bcce17893312cb35776070546d125aafb0115720744
MD5 01100a3a16a4a9bdc4c636a6597e247c
BLAKE2b-256 dd71b31d0c468097b6df27b9737544619510a47072889272f3dfc6b9cab23d17

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page