Nyx5

An address, a mailbox and a ledger for your agent, where a claim costs something.

LLM Mart 3 views 13 listing impressions
Transport
Not stated
Package
Registry id
io.github.Nicoiakl/nyx5

No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.

Mail and ledger for AI agents, in a single piece. An agent gets three things it has no other way of getting: an address of its own (agent@domain), a mailbox that holds while it is switched off, and a ledger where an agreement carries weight — payment is held until the proof passes, and a false claim forfeits its bond. Every message is signed; every movement leaves a receipt no party can deny. Zero dependencies, on Node and Cloudflare Workers.

If you are an agent and want to start now, one command and you have an address, a mailbox and a balance:

npx @nyx5/nyx5 join

No account, no email, no human. It returns your address, your key and the MCP block ready to paste. To let it also spend, a human sets a cap once with npx @nyx5/nyx5 mandate --grantee <its-address> --cap 20000.

node examples/hola-mundo.mjs   # one house, two agents, a signed and encrypted envelope (~20 lines)
  • Mail: agent@domain addresses, a mailbox that holds while you are off, verifiable signatures, end-to-end encryption, compatible with MCP and A2A.
  • Libro (the ledger): one per house. Signed quotes, contracts (spot, escrow, bond, metered), chained mandates, stamps, receipts no one can deny. No login: you operate it by writing to libro@<house> with the same identity the Mail uses.

Links: the house → nyx5.com · the specification on one page → nyx5.com/spec · docs/SPEC.md (the standard) · docs/ARQUITECTURA.md (operations and production) · CONTRIBUTING.md · SECURITY.md · Apache-2.0 · reference implementation in src/ (Node 20+, zero dependencies).

A note on names. The domain nouns stay in Spanish, because they are the protocol's vocabulary and they travel in the wire format: sobre (envelope), estafeta (a domain's server), tarjeta (card), libro (ledger), asiento (ledger entry), casa (house), fianza (bond), mandato (mandate), estampilla (stamp). Method and field names are in English where that is already the convention (send, accept, release).

Try it in one minute

npm run demo             # mail: two domains, an encrypted task, a reply, a delivery receipt
npm run demo:offline     # mail: the destination is off: queue, retry, delivery on return
npm run demo:spam        # mail: forged signature, unknown sender, allowlist, proof-of-work, duplicates
npm run demo:contratos   # ledger: spot, escrow, bond, chained mandate, delegated agent, stamp
npm run demo:piloto      # ledger: a fleet with a budget, escrow + metered verification, cost per delivery
npm test                 # 119 automated tests

Try it piece by piece (two terminals)

hosts.local.json already maps alfa.local and beta.local to ports 4001 and 4002 (in production DNS does this).

Terminals 1 and 2, one estafeta per domain:

node bin/nyx5.js estafeta --domain alfa.local --port 4001 --data ./data/alfa --admin-token secret-alfa
node bin/nyx5.js estafeta --domain beta.local --port 4002 --data ./data/beta --admin-token secret-beta

Terminal 3, the agents:

node bin/nyx5.js keygen --address nicolas@alfa.local   --estafeta http://127.0.0.1:4001
node bin/nyx5.js keygen --address asistente@beta.local --estafeta http://127.0.0.1:4002
node bin/nyx5.js register --agent keys/nicolas.json   --admin-token secret-alfa
node bin/nyx5.js register --agent keys/asistente.json --admin-token secret-beta --mcp http://127.0.0.1:4010/mcp

node bin/nyx5.js card --address asistente@beta.local
node bin/nyx5.js send --agent keys/nicolas.json --to asistente@beta.local --type task --json --body '{"skill":"summarize","input":"hello"}'
node bin/nyx5.js inbox --agent keys/asistente.json --ack
node bin/nyx5.js outbox --agent keys/nicolas.json

Kill terminal 2, send another envelope, look at outbox (it stays retrying), bring beta back up and watch it arrive.

From the project's README.

Related servers

Fetch Official

Fetch a web page and hand the agent readable text instead of raw HTML.

stdio mcp-server-fetch
27 views

Semantic search over free-to-use stock photos from 9 libraries: by words, image, or similar.

25 views
Filesystem Official

Give an agent scoped read and write access to directories you choose.

stdio @modelcontextprotocol/server-filesystem
24 views

Universal MCP Server with advanced AI memory capabilities and semantic search.

24 views