Skip to content
Musher Docs

Musher Configuration

Environment variables, credential storage, and file locations for the musher CLI.

Environment Variables

VariableDescriptionDefault
MUSHER_API_KEYAPI key for authentication (overrides stored credentials)None
MUSHER_API_URLBase URL for the Musher APIhttps://api.musher.dev
Example
export MUSHER_API_KEY="mush_sk_abc123..."
musher publish

Credential Storage

When you run musher login, your API key is stored securely. The CLI checks for credentials in this order:

  1. Environment variableMUSHER_API_KEY (highest priority)
  2. OS keyring — the system's native credential store
  3. Fallback file~/.config/musher/api-key

OS Keyring

The CLI uses your operating system's native credential manager:

PlatformKeyring Backend
macOSKeychain
Linuxsecret-service (GNOME Keyring, KWallet)
WindowsCredential Manager

The keyring service name is dev.musher.musher. If no keyring is available (e.g., in a headless server), credentials fall back to the config file.

File Locations

PurposePath
Configuration~/.config/musher/
Logs~/.local/state/musher/logs/musher.log
Pack cache~/.cache/musher/pack/
OCI store~/.local/share/musher/oci/

These follow the XDG Base Directory convention on Linux and macOS. On macOS, ~/.config is used rather than ~/Library.

musher.yaml Reference

The musher.yaml file defines a bundle and lives in your project directory — it is not a global configuration file.

Top-Level Fields

FieldTypeRequiredDescription
kindstringYesAlways "bundle"
namespacestringYesOrganization namespace to publish under
slugstringYesURL-safe bundle identifier (lowercase, hyphens)
versionstringYesVersion string for this release
namestringYesHuman-readable display name
descriptionstringNoShort description of the bundle
keywordsstring[]NoTags for discovery and search
assetsobject[]YesArray of asset definitions

Asset Fields

FieldTypeRequiredDescription
idstringYesUnique identifier within the bundle
srcstringYesSource file path relative to musher.yaml
kindstringYesAsset type (e.g., skill, prompt, rule, config)
installsobject[]NoInstall mappings for target runners

Install Mapping Fields

FieldTypeRequiredDescription
harnessstringYesTarget runner identifier
pathstringYesDestination path in the runner's workspace

Full Example

musher.yaml
kind: bundle
namespace: acme
slug: code-review-kit
version: 1.0.0
name: Code Review Kit
description: Skills, prompts, and rules for consistent code reviews.
keywords:
  - code-review
  - skills

assets:
  - id: code-review-skill
    src: skills/code-review/SKILL.md
    kind: skill
    installs:
      - harness: claude-code
        path: .claude/skills/code-review/SKILL.md

  - id: pr-summary-prompt
    src: prompts/pr-summary.md
    kind: prompt
    installs:
      - harness: claude-code
        path: .claude/rules/pr-summary.md

  - id: review-standards
    src: rules/review-standards.md
    kind: rule
    installs:
      - harness: claude-code
        path: .claude/rules/review-standards.md

Supported Harnesses

HarnessDescriptionTypical Install Paths
claude-codeClaude Code (Anthropic's CLI).claude/skills/*/SKILL.md, .claude/rules/*.md, CLAUDE.md

The harness value determines which runner knows how to install the asset. Each runner expects files in specific locations — the path field in your install mapping should match the runner's conventions.