Skip to content
Musher Docs

Pulling Bundles

Musher bundles are OCI artifacts hosted at bundles.musher.dev. You can pull them with the Musher CLI, an SDK, or any HTTP client.

Quick start

bash
musher load acme/code-review

Authentication

Public bundles can be pulled without credentials. Private bundles require an API key or access token.

bash
# Interactive login (stores credential in keyring)
musher auth login

# Or set an environment variable
export MUSHER_API_KEY="mush_..."
musher load acme/private-bundle

All tools discover credentials automatically in this order:

  1. MUSHER_API_KEY environment variable
  2. OS keyring (set by musher auth login)
  3. Credentials file (~/.local/share/musher/credentials/)

Version pinning

Append a version tag with : to pull a specific version. Without a tag, latest is used.

bash
# Latest version (default)
musher load acme/code-review

# Specific version
musher load acme/code-review:1.0.0

# Specific tag
musher load acme/code-review:stable

CLI options

FlagDefaultDescription
--output-dir, -oLocal cacheExtract bundle to a specific directory instead of the cache
--forcefalseRe-download even if the bundle is already cached
--jsonfalseOutput structured JSON with bundle metadata and file paths

SDK configuration

python
import musher

musher.configure(
    cache_dir="/tmp/musher-cache",  # Custom cache location
    verify_checksums=True,          # SHA-256 verification (default: True)
    timeout=30.0,                   # Request timeout in seconds (default: 30)
    max_retries=2,                  # Retry count (default: 2)
)

What happens when you pull

When you pull a bundle, the tool performs these steps:

  1. Resolve — looks up the bundle in the registry to find the matching version and its OCI manifest.
  2. Download — fetches any assets not already in the local cache from the registry.
  3. Verify — computes SHA-256 checksums and compares them against the manifest to ensure integrity.
  4. Cache — stores the verified assets locally so subsequent pulls are instant.

Troubleshooting

Authentication errors (401 / 403)

Verify your API key is set correctly and has not expired. Run musher auth login to re-authenticate, or check MUSHER_API_KEY.

Version not found

Ensure the version tag exists. Use musher hub info acme/code-review to check available versions.

Network timeouts

Increase the timeout in your SDK configuration. For the CLI, check your network connectivity and retry.