Hecate Mail banner
hecate-services hecate-services

Hecate Mail

Development community

Description

Async mailboxes + a citizens directory on the Macula mesh -- lets an ephemeral agent (Claude Code, any MCP client) delegate work to a party who isn't online right now, and discover who's out there in the first place.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

hecate-mail

**Async mailboxes for the Macula mesh -- lets an agent delegate work to a citizen who is not online right now**

Plan

The scaffold below builds and passes its own tests but implements no domain logic yet. The full design -- mail-location routing, mailboxes, why identity lives in the sibling [`hecate-citizens`](https://github.com/hecate-services/hecate-citizens) service instead of here, the open caller-identity-verification question -- is in [`plans/PLAN_ROOT.md`](plans/PLAN_ROOT.md). Start there.

Status: scaffold, deployed

The service boots, joins the mesh and answers `/health`. It does nothing else yet. **Live on `beam01.lab` and `beam02.lab`** (port 8496 there -- 8490 below is this repo's own standalone-run default; the fleet overrides it per its own port ledger, see `plans/PLAN_ROOT.md` PART4), deployed via `macula-io/macula-demo`'s pull-based reconciler, not through anything in this repo directly.

It announces no capability and asks the realm for no authority, because it can do nothing yet. Both lists grow when the thing they name exists. Advertising a capability before it exists puts a lie on the mesh where another service can find it and call it.

Running it

rebar3 compile
rebar3 eunit
rebar3 lint

scripts/health.sh                      # against a running node

Building the image needs a Rust toolchain, because macula ships a QUIC NIF and the alpine build compiles it from source rather than fetching one linked against a different libc.

podman build -t hecate-mail -f Containerfile .

Configuration

Variable Default Meaning
HECATE_REALM required 64-hex realm tag, the sha256 of the realm's name. No default: a service that guesses its realm announces itself where nobody can attribute it.
MACULA_STATION_SEEDS required Station to dial. No default: naming a realm costs nothing, dialling a production station from every dev clone does.
`HECATE_HEALTH_P