Skip to main content
Creates or fully replaces a catalog resource. The complete resource definition is read from stdin. For markdown kinds (agent personas, flights), pipe markdown. For all other kinds, pipe YAML.

Synopsis

Arguments

Input format

The command queries the server to determine whether the kind expects YAML or markdown input.
  • YAML kinds (e.g. workspace, environment, pool-config) — pipe a YAML document to stdin.
  • Markdown kinds (e.g. agent-persona, flight) — pipe a markdown document with YAML frontmatter to stdin. When the input starts with ---, the entire input becomes the resource content. Otherwise it is parsed as YAML.
Stdin is required unless at least one --file-field is given. When --file-field is provided, the file content is injected at the specified field path. This is useful for fields that contain large text content — like provisioning scripts — that are easier to maintain as separate files. Dotted paths set nested fields, and intermediate maps are created as needed. The generation: and managed_by: keys that murmur get emits may stay in the piped document. The server drops them.
This is a full replace. Every field in the existing resource is overwritten by the payload. To update individual fields without replacing the resource, use murmur patch.

Conditional writes

With --if-generation N, the write commits only if the resource’s current generation equals N. murmur get prints the current generation as the document’s first key. On a mismatch the server fails with FAILED_PRECONDITION and writes nothing: re-run murmur get, re-apply your edit, and retry.

Managed resources

A write is a manual edit and declares no manager, so it is refused when the resource is managed by another system (Terraform, or your own automation), because that system may overwrite the change on its next run. murmur get prints the managed_by marker beside the generation. --force-ownership writes anyway. It does not remove the resource from whatever manages it: if the resource is still in Terraform configuration, the next terraform apply reverts the value and reclaims the marker. To keep the edit, remove the resource from configuration (or terraform state rm it) first.

Builtins

Names starting with murmur- (and the name murmur) are reserved for platform builtins and cannot be written. Running murmur set <kind> <builtin-name> with no stdin and no --file-field re-enables a builtin that was disabled with murmur rm.

Output

On success, the command prints a confirmation with the resource’s new generation to stderr:
Re-enabling a builtin prints Re-enabled builtin <kind> "<name>". With --propose, nothing is written. The command prints a summary line to stderr and the new change-request ID to stdout:
Review pending proposals with murmur get change-request. Apply one with murmur change-request approve <id>.

Examples

Set a pool config

Set an agent persona from a markdown file

Read, modify, and write back

Write only if nothing changed since the read

Create only if the resource does not exist

Inject a provisioning script from a file

Propose a change for review

Errors

The CLI rejects these flag combinations before contacting the server: