Murmurent
Shared AI infrastructure for researchers, labs, core facilities and research centres. Murmurent gives a research group a set of AI assistants, called agents, that know the group's data, its conventions and its accumulated findings. Each group works independently, and can pool its agents and data with other groups when collaboration helps.
There are three ways to use it: on your own, as a way of working with the other members of your lab, or as shared infrastructure across many labs and core facilities at an institution.
Documentation: https://hallettmiket.github.io/murmurent/
Stuck on any step? Once Claude Code is installed, ask it. Murmurent puts its own documentation and commands inside Claude Code, so questions such as "walk me through installing Murmurent", "did my install work?" or "how do I issue a member card?" are answered directly, and it can run many of these steps for you.
Contents
- Install it
- Say who you are
- Set up a folder to work in
- Keep it up to date
- What to do next, according to what you are doing
- Getting help
1. Install it
You need Python 3.12 or newer, but you do not have to install it yourself:
uv fetches the right version. If you do not have
uv, one line installs it.
curl -LsSf https://astral.sh/uv/install.sh | sh
Then install Murmurent.
uv tool install murmurent
murmurent install
murmurent doctor
Those three commands download Murmurent, connect it to Claude Code, and check
that it worked. Run murmurent doctor whenever something looks wrong: it
reports each problem it finds together with the command that corrects it.
If your shell cannot find murmurent afterwards, close the terminal and open a
new one. uv puts the command in ~/.local/bin.
Alternative: install with a single command
This needs only git, and it installs uv for you if it is missing.
curl -fsSL https://raw.githubusercontent.com/hallettmiket/murmurent/main/scripts/bootstrap.sh | bash
To read the installer before running it, clone this repository first and run
scripts/bootstrap.sh from inside it.
2. Say who you are
murmurent init
This records your name, your email, your institutional username, and your GitHub and Slack accounts. Everything else is built on it, whether or not you ever join a lab.
It also asks which of three roles you hold, so decide before you start.
| Role | Who it is |
|---|---|
| member | You use Murmurent for your own work, perhaps as part of a lab |
| PI | You lead a lab or a core facility, and issue identities to its members |
| mayor | You run a centre, meaning several labs and core facilities together |
murmurent whoami shows what was recorded.
3. Set up a folder to work in
The agents are available in every folder on your machine as soon as you install, so setting up a particular folder is not what gives you them. It does something different: it turns on Murmurent's check on sensitive data, which removes personal identifiers from anything leaving your machine, such as a web search or a fetched page. That check does not run in folders you have not set up. Setting up a folder also allows it to join a Murmurent project later.
Do this for any folder holding research data, and for every folder holding sensitive data.
Murmurent works in folders that git tracks and that live under ~/repos/. Ask
what state your folder is in.
murmurent repo status ~/repos/<folder>
Then run the command beside the answer you get.
| Answer | What it means | What to run |
|---|---|---|
✗ no such folder |
the path is wrong | check the path |
✗ not tracked by git |
the folder exists, but git is not tracking it | git -C ~/repos/<folder> init, then read the next row |
• not set up yet |
git tracks it, and Murmurent has never set it up | murmurent repo adopt ~/repos/<folder> |
± half set up |
an earlier attempt stopped partway | the same adopt command, which completes it |
✓ ready, older version |
set up by an earlier version of Murmurent | murmurent repo upgrade ~/repos/<folder> |
✓ ready, current |
nothing to do | open Claude Code in it |
Neither command needs options, and neither alters anything already in the
folder. Your files, your history and any Claude Code settings of your own are
left as they are. What is added is a .murmurent.yaml file recording the
setup, a CLAUDE.md template, and VS Code settings. Commit the first two, and
everyone else working in that folder has the same setup.
To mark a folder as holding sensitive data, add one line to .murmurent.yaml.
sensitivity: clinical
murmurent repo list shows the state of every folder on your machine at once.
Setting up a folder is separate from creating a Murmurent project, which is a different thing and does not happen automatically. See Making a repo Murmurent-ready.
4. Keep it up to date
uv tool upgrade murmurent
murmurent install
Run murmurent install with no options. It completes the update everywhere it
is needed, including in the folders you have already set up, and it is safe to
run when nothing has changed.
Changes to the wording of an agent or a rule take effect with no command at
all. A newly added agent arrives with the murmurent install above. There is
never anything to run folder by folder.
If you installed from a clone rather than from PyPI, replace the first command
with git pull inside that clone, followed by
uv tool install --python 3.12 --reinstall -e .. Use uv rather than pip
here. The pip on your path often belongs to a different Python installation,
such as a conda environment, and then the upgrade either lands in the wrong
place or stops with an error about the Python version.
5. What to do next
Find the row that describes you.
| What you are doing | Where to go |
|---|---|
| Working on your own, and want to see what Murmurent is for | Five worked examples |
| Joining a lab whose head already uses Murmurent | Membership IDs and the trust chain for the identity card your lab head signs for you, then The lab records repository for the copy of the lab's records you also need |
| Running a lab or core facility, and adding members to it | Membership IDs and the trust chain for issuing identities, then Group Slack setup so that identities can be sent by direct message |
| Joining your lab to a centre that already exists | Membership IDs and the trust chain, under "Registering your lab or core with an existing centre". You find your centre in the public directory, then send its mayor an encrypted request. |
| Starting a centre at your institution | What a centre is, which includes the full setup procedure |
| Reading about the agents themselves | The reference agents |
| Looking for one particular command | The command manual |
6. Getting help
Ask Claude Code first. It has Murmurent's documentation and commands available, and can usually diagnose and repair an installation problem directly.
Failing that, TROUBLESHOOTING.md covers the common installation problems. Bug reports and requests for new features go to the development repository, where the work happens. Issues are turned off here deliberately, so that the discussion stays in one place.
The three repositories
murmurent |
This one. Released versions, one entry per release. It is what you install. |
murmurent_dev |
Where Murmurent is written: issues, proposals, and the full history of every change. Its README is written for people working on Murmurent rather than using it. |
murmurent_public |
The public directory: which institutions run Murmurent and how to request to join one, plus an index of shared workflows, called choreographies, that anyone can install. |
Authors
Mike Hallett — michael.hallett@uwo.ca
Licensed under Apache-2.0. See LICENSE.
Release files for murmurent 2026.9.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| murmurent-2026.9.9.tar.gz | 2.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| murmurent-2026.9.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.5 MB
Release files / murmurent-2026.9.9.tar.gz
| Download URL | murmurent-2026.9.9.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
828d7fb1afb4dbe8940743ccd6f69785b01c21e33d3b89b84629e1ae4d844bbb
|
|
BLAKE2b-256 checksum How to use checksums |
5551ea9dd96474df3101f84fd7d96439bec4e0b01bfb989966d46e395d771f62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / murmurent-2026.9.9-py3-none-any.whl
| Download URL | murmurent-2026.9.9-py3-none-any.whl |
|---|---|
| Size | 1.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
337b37382111c3ec0136e37b006c036d7f6c9d1a490052b468b83437efd02a44
|
|
BLAKE2b-256 checksum How to use checksums |
d541823759b5003bc580e0930651b68c5fd6eb1f45377fe4786d2812749da33a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log