Connecting to the public directory¶
A short runbook for a mayor whose centre is bootstrapped and who wants prospective members to be able to find and contact them. Joining is by email: the public directory points prospective members at your address. Example University is the worked example; substitute your own values.
1. Update the Murmurent CLI¶
Run this in your copy of Murmurent, shown here in your repositories folder
(~/repos unless you chose another; murmurent config repos-root shows it):
cd ~/repos/murmurent && git pull && uv tool install --reinstall .
2. Set your centre's join email¶
The address prospective members write to. Set it on the centre
(hand-edit ~/.murmurent/lab_info/centre.md frontmatter, or the
/registrar profile editor):
join_email: murmurent-join@example.edu # a shared/role address is ideal
git -C ~/.murmurent/lab_info commit -am "set centre join_email"
murmurent centre-status
3. Generate your age key (for encrypted join requests)¶
Prospective members encrypt their join form to your public key so nothing about them is ever readable in transit or on GitHub. Generate the key once:
murmurent centre-age-keygen
# → private key: ~/.murmurent/age/mayor.key (0600, keep secret)
# → public recipient: age1... (safe to publish)
4. Add your row to the public directory¶
Run:
murmurent centre-hub-publish # writes your row + prints next steps
murmurent centre-hub-publish --submit # …and publishes it for you
It clones murmurent_public
if you don't have it, writes your row (institution, centre name, join
email, and your age1... public key) into both join/directory.tsv
and the README table, and (with --submit) publishes it the right way
for you specifically:
- You maintain the public directory (own or have write access): it commits and pushes.
- You're at any other institution (the normal case): it forks
the public directory, pushes a branch to your fork, and opens a
pull request against it. The public directory's maintainer reviews
and merges it: that merge is what lists you. (
--submitneeds the GitHub CLI:gh+gh auth login.)
Either way, only the directory row gets published: institution, registrar email, and age public key, with member data staying local to your own machine.
5. Handle requests as they arrive¶
A prospective member emails you an encrypted join-request.age.
Decrypt and file it in one step, then approve:
murmurent join-request decrypt join-request.age # decrypts + files a pending request
murmurent join-request list
murmurent join-request approve 1 # provisions Slack + GitHub + FS
(You can also file a plaintext request by hand with murmurent
join-request submit … if someone emails you unencrypted.)
Everything about the requester stays on your machine and the centre's
private lab_info, kept local to your own infrastructure. See
docs/hub_setup.md for the wider model and
docs/slack_setup.md for the Slack fabric.