Skip to main content

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.

These catalog resources define the compute infrastructure that agents run on. They control where VMs are provisioned, what size they are, what software is pre-installed, and how repositories are handled.

workspace

The top-level resource that ties together repos, environment, and agent defaults. Every agent spawn targets a workspace.

Fields

FieldTypeRequiredDescription
namestringYesWorkspace identifier. Must be unique within the tenant.
image_refstringNoReference to a custom image resource. Overrides the base image.
reposarrayNoList of repository configurations to clone on VMs.
repos[].clone_urlstringYesGit clone URL for the repository.
repos[].branchstringNoDefault branch to clone. Defaults to the repo’s default branch.
placementstringNoReference to a placement resource. Defaults to platform-managed placement.
min_idleintegerNoMinimum number of warm (idle) VMs to keep in the pool for this workspace.
environment_refstringNoReference to an environment resource defining VM specs.
secret_refsarrayNoList of secret resource names to inject into VMs.
portsarrayNoPort configurations for tunneled services.
ports[].portintegerYesTCP port number.
ports[].namestringNoHuman-readable name for the port.
descriptionstringNoHuman-readable description of the workspace’s purpose.

Example

name: acme-backend
image_ref: custom-go-image
repos:
  - clone_url: https://github.com/acme/backend.git
    branch: main
  - clone_url: https://github.com/acme/shared-libs.git
placement: platform
min_idle: 2
environment_ref: large-env
secret_refs:
  - npm-token
  - database-url
ports:
  - port: 8080
    name: api-server
description: "Backend API service workspace"

placement

Defines where VMs are provisioned — which cloud provider, project, and service account to use.

Fields

FieldTypeRequiredDescription
namestringYesPlacement identifier.
platformbooleanNoIf true, this is a platform-managed placement. Default: false.
substratestringNoCloud substrate type (e.g. gce, aws).
targetstringNoCloud target specification.
target.projectstringNoGCP project ID or AWS account.
target.regionstringNoCloud region.
target.zonestringNoCloud zone.
target.subnetstringNoVPC subnet for the VMs.
target.tagsarrayNoNetwork tags applied to VMs.
service_accountstringNoService account for VMs to use.

Example

name: customer-gcp
platform: false
substrate: gce
target:
  project: acme-agents-prod
  region: us-central1
  zone: us-central1-a
  subnet: projects/acme/regions/us-central1/subnetworks/agents
  tags:
    - agent-vm
service_account: agent-sa@acme-agents-prod.iam.gserviceaccount.com
Platform-managed placements (platform: true) use Murmur’s own infrastructure. Customer placements run VMs in your own cloud project, giving you control over networking, IAM, and compliance boundaries. See the Customer Placements guide for setup instructions.

environment

Defines the VM specification — machine type, disk size, and substrate.

Fields

FieldTypeRequiredDescription
namestringYesEnvironment identifier.
substratestringNoCloud substrate type (e.g. gce, aws).
machine_type_refstringNoReference to a machine-type resource.
disk_size_gbintegerNoBoot disk size in GB. Default varies by platform.

Example

name: large-env
substrate: gce
machine_type_ref: large
disk_size_gb: 100

pool-config

Controls VM pool behavior. This is a singleton — there is exactly one pool-config resource per tenant, always named default.

Fields

FieldTypeRequiredDescription
namestringYesAlways default.
max_vmsintegerNoMaximum total VMs across the tenant.
reap_stranded_agentsstringNoAuto-cleanup mode for agents whose VMs have disappeared: enabled, dry_run, or disabled. Default: dry_run.

Example

name: default
max_vms: 50
reap_stranded_agents: enabled
The max_vms limit is tenant-wide. If you hit it, new agent spawns will wait in provisioning until existing VMs are released. Monitor pool status with murmur pool status or the dashboard’s pool view.

machine-type

Named VM sizes for reuse across environments.

Fields

FieldTypeRequiredDescription
namestringYesMachine type identifier (e.g. small, large, gpu-enabled).
vcpusintegerYesNumber of virtual CPUs.
memory_gbintegerYesMemory in gigabytes.
architecturestringNoCPU architecture: amd64 (default) or arm64.
has_gpubooleanNoWhether the machine type includes GPU. Default: false.
platformbooleanNoIf true, this is a platform-provided builtin. Immutable to tenants.

Example

name: large
vcpus: 8
memory_gb: 32
architecture: amd64
has_gpu: false

image

Records of VM or container images, typically created by the bake process.

Fields

FieldTypeRequiredDescription
namestringYesImage identifier.
architecturestringNoTarget architecture: amd64 or arm64.
sourcestringNoImage source type: docker, aws, or gce.
source.dockerobjectNoDocker image reference.
source.awsobjectNoAWS AMI reference.
source.gceobjectNoGCE image reference with project and family/name.

Example

name: custom-go-image
architecture: amd64
source:
  gce:
    project: acme-agents-prod
    family: murmur-custom-go

recipe

Image build recipes used by murmur bake to produce custom images.

Fields

FieldTypeRequiredDescription
namestringYesRecipe identifier.
base_image_gce_refstringNoBase GCE image to build on. Typically the platform’s default image.
base_image_aws_refstringNoBase AWS AMI to build on.
provisioning_scriptstringNoShell script to run during the image build. Installs your toolchain.
provisioning_timeoutstringNoMaximum time for the build to complete (Go duration). Default: 30m.
secret_allowlistarrayNoList of secret names that can be accessed during the build (e.g. for private package registries).

Example

name: go-docker-recipe
base_image_gce_ref: default
provisioning_script: |
  #!/bin/bash
  set -e
  
  # Install Go
  wget -q https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
  tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
  rm go1.22.0.linux-amd64.tar.gz
  export PATH=$PATH:/usr/local/go/bin
  
  # Install Docker
  curl -fsSL https://get.docker.com | sh
  
  # Verify installations
  go version
  docker --version
provisioning_timeout: 20m
secret_allowlist:
  - npm-token
To build: murmur bake go-docker-recipe

repo-config

Per-repository configuration overrides. Applied to repos matching the clone_url.

Fields

FieldTypeRequiredDescription
namestringYesRepo config identifier (typically the repo name).
clone_urlstringYesGit clone URL this config applies to.
conflict_resolutionstringNoHow to handle merge conflicts: rebase (default) or merge.
base_branchstringNoDefault base branch. Overrides the repository’s default branch.

Example

name: backend-repo
clone_url: https://github.com/acme/backend.git
conflict_resolution: rebase
base_branch: main