SDKs
Official client libraries for pulling, verifying, caching, and loading versioned bundles of prompts, skills, toolsets, and agent specs from Musher.
CLI or SDK?
CLI
Use musher to install bundles into your project. Best for loading skills into Claude Code, Codex, or other agent harnesses — one command, no code required.
SDK
Use the Python or TypeScript SDK for programmatic access. Best for custom tooling, CI policy gates, and building on top of bundle content in application code.
Get Started
pip install musher-sdkimport musher
bundle = musher.pull("acme/code-review-kit")
for fh in bundle.files():
print(f"{fh.logical_path} ({fh.media_type or 'unknown'})")npm install @musher-dev/musher-sdkimport { pull } from "@musher-dev/musher-sdk";
const bundle = await pull("acme/code-review-kit");
for (const fh of bundle.files()) {
console.log(`${fh.logicalPath} (${fh.mediaType ?? "unknown"})`);
}Choose Your Language
Python SDK
musher-sdk — requires Python 3.13+. Sync and async clients with Pydantic models.
TypeScript SDK
@musher-dev/musher-sdk — requires Node.js 20+. Zod-validated responses with typed handles.
Feature Comparison
| Feature | Python | TypeScript |
|---|---|---|
| Package | musher-sdk | @musher-dev/musher-sdk |
| Runtime | Python 3.13+ | Node.js 20+ |
| Sync client | Client | — |
| Async client | AsyncClient | MusherClient |
| Pull bundles | pull() / pull_async() | pull() |
| Resolve metadata | resolve() / resolve_async() | resolve() |
| Verification | SHA-256 on pull | SHA-256 integrity |
| Cache management | cache_info(), cache_remove(), cache_clean(), cache_clear() | client.cache.list(), .stats(), .remove(), .has(), .invalidate(), .clean(), .purge() |
| Lockfiles | Planned | writeLockfile() |
| Typed handles | File, Skill, Prompt, Toolset, AgentSpec | File, Skill, Prompt, Toolset, AgentSpec |
| Schema validation | Pydantic | Zod |
| Auth | env, keyring, file, programmatic | env, keyring, file, programmatic |
| Claude integration | Plugin export, skill install | Plugin export, skill install |
| OpenAI integration | Local + inline export | Local + inline |
| VS Code integration | Planned | installVSCodeSkills() |
| Dependencies | httpx, keyring, platformdirs, pydantic | zod |
Features marked Planned exist as method stubs in the SDK but are not yet functional.
Authentication
Both SDKs automatically discover credentials from multiple sources, checked in order:
- Programmatic — pass a token directly via
configure()or the client constructor MUSHER_API_KEYenvironment variable- OS keyring (
musher/<host>) - Credential file (
~/.local/share/musher/credentials/)
The SDK uses the first credential found. For most use cases, setting the MUSHER_API_KEY environment variable is the simplest option.