> ## Documentation Index
> Fetch the complete documentation index at: https://docs.murmur.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# repo-config

> Catalog resource that configures a GitHub repository for Murmur — branch policy, event subscriptions, base branch, and bake settings.

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](/concepts/workspaces) 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](/concepts/workspaces).                                                                                                                                              |
| `steering_policy`     | string | no       | Name of the [steering policy](/catalog/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.                             |

<Note>
  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`.
</Note>

## Base branch resolution

When an agent spawns, the base branch for each repo resolves in this order:

1. Caller-supplied value on the spawn request.
2. `base_branch` from the repo-config for that clone URL.
3. `base_branch` from the [workspace](/concepts/workspaces) repo entry.

The first non-empty value wins.

## Examples

### Setting a repo-config

```bash theme={null}
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

```bash theme={null}
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

```bash theme={null}
murmur get repo-config
```

```
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

```bash theme={null}
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](/catalog/steering-policy), or leave `steering_policy` empty to auto-select by repo visibility. |

## Related

* [Workspaces](/concepts/workspaces) — the resource whose repos reference repo-configs at spawn time
* [steering-policy](/catalog/steering-policy) — gates who may steer agents via events from this repo
* [Catalog](/catalog/overview) — concept overview of catalog resources
* [`murmur set`](/cli/set) — CLI command for creating and updating catalog resources
* [`murmur get`](/cli/get) — CLI command for reading catalog resources
