Skip to main content

Cmail — capsulated email + command hub for HumoticaOS. Light + Sealed Mode + friendly TimeoutError + opt-in cap-bus runtime POST. 0.2.4: gateway-event.v1 records now carry top-level `kind=cmail.message.event.v1` and `sealed: bool` so evidence-adapters (tibet-audit cockpit) can count Light vs Sealed accurately without falling back to content_hash duck-type.

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: tibet_cmail-0.2.4.tar.gz
  • Upload date:
  • Size: 19.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.4.tar.gz
Algorithm Hash digest
SHA256 8990e972b02826ff6b744900bc1aa813e5b2dc5b5cf60f69d05e404c495beef1
MD5 8ae7a0170df65a19665877693a1d588a
BLAKE2b-256 92c2d1072690f105910f4a182b53aa78638283d6d57f52b12b7bd6c26e28c79b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tibet_cmail-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 18.3 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2554dfca322a81c037b8caa43e19bfe1d07f70ee0760e004ad20d149c90d6252
MD5 1108ec1e670d8e41d799f6d6bd2b1ed5
BLAKE2b-256 eec9a88119cdff5e8f7802426f83ccccc65ad9e4fa1545299ae3d0f51984552d

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