Docs / Project
Contributing to Rendezvous
On this page
Thanks for helping. Rendezvous is a draft protocol (SPEC.md) with a
TypeScript reference implementation in impl/. Both are open to change,
and a second implementation in another language is the most valuable thing
anyone can build right now.
Where to start#
- Open issues: https://github.com/omernesh/rendezvous/issues
- The spec's open problems: SPEC.md §11 (key recovery, forward secrecy, Sybil, consent UX). Proposals welcome as issues.
- Ports: Python, Go, Rust, anything. Reproduce the interop test vectors in
impl/packages/core/vectors/v1.json(keys, IDs, discovery topics, a signed card and request, an envelope you should be able to open) and you interoperate.impl/NOTES.mdpins every wire-format choice the spec leaves open. - Relays: run a Nostr relay and tell us how it handles kind 30417 events.
- Integrations: wire
rdv-mcpor@rendezvous/coreinto an agent or framework.
Dev setup#
Node.js 20 or newer. Everything runs from impl/, the same in bash and PowerShell:
cd impl
npm install
npm run typecheck # every workspace
npm test # core, a2a, cli, mcp; in-memory relay, no network
npm run build # tsc -b -> packages/*/dist
One package or one test: npm test -w @rendezvous/core, or
cd packages/core && npx vitest run test/unit.test.ts -t envelope.
Live relay tests are opt-in: RDV_LIVE_RELAYS=wss://… npm run test:live.
See impl/README.md and CLAUDE.md for the architecture.
Tests are the gate#
There is no CI. Before every commit, run:
npm run typecheck && npm test
and enable the pre-push hook once per clone (from the repo root), which runs the same:
git config core.hooksPath .githooks
Please don't add CI workflows. Add a regression test with every bug fix.
Pull requests#
- One PR per change, kept small. PRs are merged with rebase-merge, so keep commits clean and each one meaningful.
- Keep
@rendezvous/corefree of A2A, CLI, MCP and LLM dependencies. - Regenerate the test vectors (
npm run test:vectors:update) only for a deliberate wire-format change, and say so in the commit message.
Spec deltas#
If implementing turns up a gap, ambiguity or unsafe spot in the spec, record it
in impl/NOTES.md, marked spec change if SPEC.md must
change. Read NOTES.md before touching any wire format.
Personas#
Examples, tests and docs use anonymized personas only: Omer
(omer@example.com) and John (john@doe.com, doe.com). Never put real
people, email addresses, phone numbers or other personal data in the spec,
code, tests or docs.
Security#
Please report vulnerabilities privately, not in a public issue. See
SECURITY.md for how (GitHub private vulnerability reporting),
what to include and what is in scope. Consent bypasses, injection through peer text and anything
that lets a relay read or alter content are in scope.
License#
By contributing you agree that your contributions are licensed under the Apache License 2.0.