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.0.tar.gz (17.1 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.0-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tibet_cmail-0.2.0.tar.gz
  • Upload date:
  • Size: 17.1 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.0.tar.gz
Algorithm Hash digest
SHA256 c24726f04405117e0d32ba5cea92e82de1245d731b375f25872ca8c3330b5255
MD5 d0ed9f472139bd6a627e042432a7c988
BLAKE2b-256 c49f9775f483dc9a231be05a843a437fdc679281221fecbc5b5861db015e2f51

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tibet_cmail-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 17.1 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cc7edf316bdc0caadb0b7944290c22697e1a0fb2652738b28cea4c28374bb3bf
MD5 78b99f1f212aad99fd77c99f3ac9121e
BLAKE2b-256 88b4bf7b3cebbe92082236d8bb9a46e98b67270313ce73e90554ea76955d1ef2

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