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.

Murmur supports layered configuration: a shared murmur.yaml committed to the repo, a gitignored murmur.local.yaml for per-developer credentials, and environment variable overrides for CI or special cases.

murmur.local.yaml

The primary local overlay lives at .murmur/murmur.local.yaml. This file is gitignored and contains per-developer settings that should not be committed to the repository. It is created automatically by murmur install or murmur setup.
developer: jdoe
encrypted_profile: |
  eyJhbGciOiJFQ0RILUVTIiwiZW5jIjoiQTI1NkdDTSIsImVway...
ssh_public_keys:
  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ... jdoe@laptop
  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK... jdoe@desktop

Fields

developer

developer: jdoe
Type: string Your GitHub username. Used to associate agents with your identity, scope agent listings, and determine authorization.

encrypted_profile

encrypted_profile: <base64-encoded data>
Type: string Your encrypted developer profile, generated during murmur install or murmur setup. This blob contains your Anthropic API credentials and other sensitive configuration, encrypted with the tenant’s KMS key. It is transported to agent VMs where the control plane re-seals it with per-VM ephemeral keys and decrypts it in memory only.
Never share or copy your encrypted_profile value between machines. While it is encrypted, it is bound to your identity via additional authenticated data (AAD). Run murmur setup on each machine to generate a fresh profile.

ssh_public_keys

ssh_public_keys:
  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ... jdoe@laptop
  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK... jdoe@desktop
Type: array of strings SSH public keys authorized for connecting to your agent VMs via murmur ssh or murmur attach. Add a key for each machine you work from. Keys are injected into the VM’s authorized_keys at boot time.

Explicit path overrides

For maximum control, bypass walk-up discovery entirely with explicit file paths:

MURMUR_CONFIG

export MURMUR_CONFIG=/path/to/custom/murmur.yaml
Replaces walk-up discovery. Murmur loads the shared config from this exact path instead of searching for .murmur/murmur.yaml up the directory tree.

MURMUR_LOCAL_CONFIG

export MURMUR_LOCAL_CONFIG=/path/to/custom/murmur.local.yaml
Overrides the local overlay path. Useful when your local settings live outside the repository, for example in ~/.config/murmur/.

Environment variable reference

The full set of environment variables that affect Murmur configuration:
VariablePurposeExample
MURMUR_CONFIGExplicit path to shared config file (bypasses walk-up discovery)/etc/murmur/config.yaml
MURMUR_LOCAL_CONFIGExplicit path to local overlay file~/.config/murmur/local.yaml
MURMUR_API_ADDRESSOverride API server address (equivalent to api.address in config)api.murmur.example.com:443
MURMUR_WORKSPACEOverride workspace namemy-workspace
MURMUR_DEVELOPEROverride developer usernamejdoe

Precedence rules

When the same setting appears in multiple sources, the highest-precedence source wins:
Environment variables       (highest priority)

Local overlay               (.murmur/murmur.local.yaml)

Shared config               (.murmur/murmur.yaml)

Built-in defaults           (lowest priority)
For named contexts, context-specific files replace the defaults entirely — murmur.dev.yaml is loaded instead of murmur.yaml, not merged with it. Similarly, murmur.dev.local.yaml replaces murmur.local.yaml. Environment variables always take highest precedence, regardless of which context is active. This makes them ideal for CI pipelines:
# CI pipeline — no config files needed
export MURMUR_WORKSPACE=ci-workspace
export MURMUR_DEVELOPER=ci-bot
export MURMUR_API_ADDRESS=api.murmur.example.com:443
murmur spawn --description "Run integration tests"

Common patterns

CI setup

In CI, avoid creating config files. Use environment variables:
# GitHub Actions example
env:
  MURMUR_WORKSPACE: my-workspace
  MURMUR_DEVELOPER: github-actions
  MURMUR_CONFIG: /dev/null  # skip file loading

Shared team settings with individual credentials

This is the default pattern. The shared murmur.yaml is committed and defines the workspace. Each developer runs murmur setup to create their murmur.local.yaml with their encrypted profile:
# One-time setup per developer
murmur setup
# Creates .murmur/murmur.local.yaml with your encrypted_profile
Keep murmur.local.yaml and all murmur.*.local.yaml files in .gitignore. The murmur install command adds these patterns automatically.