A repo-config is a catalog resource that defines tenant-wide defaults for a specific repository. When an agent spawns, these defaults apply to every workspace that includes the repo — unless the caller overrides them at spawn time.
Repo-configs are keyed by the repository’s canonical clone URL.
Fields
| Name | Type | Required | Description |
|---|
clone_url | string | yes | Canonical clone URL (e.g. https://github.com/org/repo). This is also the resource key. |
conflict_resolution | string | no | Strategy agents use when the base branch changes while work is in progress. Values: MERGE, REBASE, NONE. Default: MERGE. |
base_branch | string | no | Base branch override for this repo. Empty uses the branch configured on the workspace. |
steering_policy | string | no | Name of the steering policy gating who may steer agents via events from this repo. Empty auto-selects by repo visibility: public repos use murmur-public-steering-policy, private repos use murmur-private-steering-policy. |
description | string | no | Human-readable description shown in the dashboard. Maximum 1024 bytes. |
Conflict resolution strategies
| Value | Behavior |
|---|
MERGE | The agent merges upstream changes into its working branch when files change on the base branch. This is the default. |
REBASE | The agent rebases its working branch onto the updated base branch. |
NONE | The agent is not notified of upstream file changes. No automatic merge or rebase occurs. |
The conflict resolution strategy resolves in this order: an explicit value on the spawn request takes precedence over the repo-config default, which takes precedence over the built-in default of MERGE.
Base branch resolution
When an agent spawns, the base branch for each repo resolves in this order:
- Caller-supplied value on the spawn request.
base_branch from the repo-config for that clone URL.
base_branch from the workspace repo entry.
The first non-empty value wins.
Examples
Setting a repo-config
cat <<'EOF' | murmur set repo-config "https://github.com/acme/backend"
clone_url: "https://github.com/acme/backend"
conflict_resolution: REBASE
base_branch: develop
description: "Acme backend — rebase strategy, develop branch"
EOF
Disabling file-change notifications for a repo
cat <<'EOF' | murmur set repo-config "https://github.com/acme/docs"
clone_url: "https://github.com/acme/docs"
conflict_resolution: NONE
description: "Docs repo — no conflict resolution"
EOF
Listing repo-configs
NAME DESCRIPTION
https://github.com/acme/backend Acme backend — rebase strategy, develop branch
https://github.com/acme/docs Docs repo — no conflict resolution
Reading a single repo-config
murmur get repo-config "https://github.com/acme/backend"
Errors
| Code | Meaning | What to do |
|---|
INVALID_ARGUMENT | clone_url is required | Provide the clone_url field with the full clone URL of the repository. |
INVALID_ARGUMENT | unknown conflict_resolution value <N> | Use a valid conflict_resolution value: MERGE, REBASE, or NONE. |
INVALID_ARGUMENT | description exceeds 1024 byte limit (<N> bytes) | Shorten the description to 1024 bytes or fewer. |
INVALID_ARGUMENT | steering_policy: steering policy "<name>" does not exist | Reference an existing steering policy, or leave steering_policy empty to auto-select by repo visibility. |
- Workspaces — the resource whose repos reference repo-configs at spawn time
- steering-policy — gates who may steer agents via events from this repo
- Catalog — concept overview of catalog resources
murmur set — CLI command for creating and updating catalog resources
murmur get — CLI command for reading catalog resources