Skip to content

Latest commit

 

History

196 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

apm - Audio Package Manager

apm is a macOS-first command-line package manager for audio producers. It browses, installs, updates, removes, repairs, and tracks AU/VST3 plugins from Git-backed registries.

The repository contains the Rust CLI and its reusable package-manager core. The registry catalog includes 8,000+ entries covering installable plugins, product bundles, DAWs, utilities, upgrades, expansions, preset packs, sample libraries, and vendor-managed products.

See Architecture for the CLI/core boundary.

Current status

  • Available: CLI management for AU/VST3 plugins, including registry sync, search, install/remove, scan, diagnostics, pinning, upgrades, and portable setup export/import.
  • Experimental: audio-AI model manifests, lockfiles, the ~/.apm model store, verified weight pulls, and runtime adapter preparation.
  • Planned: privileged PKG installation hardening and executable local audio-AI runtimes.

apm should be understood as an audio package manager, not only an audio plugin installer. Plugins are the first useful package type; utilities, sample/preset packs, and local audio-AI model packages belong in the same long-term product model.

CLI installation

brew tap andreanjos/apm https://github.com/andreanjos/apm
brew install apm

Or build from source with the current stable Rust toolchain:

cargo install --path crates/apm-cli

Claude Code

cp -r .claude/skills/apm ~/.claude/skills/

Then use /apm search reverb or /apm install surge-xt directly in Claude Code.

CLI quick start

apm sync                        # Pull latest catalog definitions
apm search reverb               # Find plugins by keyword
apm info valhalla-supermassive  # View plugin details
apm install tal-noisemaker      # Install a plugin
apm list                        # See what's installed
apm uninstalled                 # Browse installable products not yet installed
apm outdated                    # Check for updates
apm upgrade                     # Upgrade everything

Commands

Sync and search

apm sync                              # Pull latest registry
apm search reverb                     # Search by keyword
apm search --category instruments     # Filter by category
apm search --vendor "Valhalla DSP"    # Filter by vendor
apm info surge-xt                     # Plugin details

apm info shows the product type and access mode so it is clear whether a record is a standalone plugin, bundle, upgrade, or vendor-managed product.

Install and remove

apm install tal-noisemaker                    # Install (AU + VST3)
apm install tal-noisemaker --format vst3      # VST3 only (also supports au/app)
apm install tal-noisemaker --version 4.3.2    # Specific version
sudo apm install tal-noisemaker --system      # System-wide (/Library/)
printf "vital\nsurge-xt\n" | apm install --stdin
apm install --dry-run surge-xt                # Preview without installing
apm --json install surge-xt --dry-run         # Machine-readable install plan
apm install massive-x                         # Opens Native Access when required

apm remove tal-noisemaker                     # Remove a plugin

Audio plugins install to ~/Library/Audio/Plug-Ins/ by default. App-format entries install to ~/Applications/ unless --system is used.

apm supports three install modes:

  • Direct: apm downloads the archive and installs it itself.
  • Managed: apm opens the required vendor installer app, such as Native Access, Arturia Software Center, Waves Central, iLok License Manager, or UA Connect. After installing there, run apm scan.
  • Manual: apm opens the product or download page. Install outside apm, then run apm scan so apm can detect the plugin on disk.

Updates and versioning

apm outdated            # List plugins with newer versions
apm upgrade             # Upgrade all
apm upgrade surge-xt    # Upgrade one

apm pin vital           # Pin to current version (skip upgrades)
apm pin vital --unpin   # Unpin
apm pin --list          # List pinned plugins

Portable setup

Export your entire setup as a shareable string - paste it in Slack, a README, or a terminal on another machine:

apm export                          # Outputs apm1://... string to stdout
apm export -o setup.apmsetup        # Save to file instead

apm import apm1://dGFsLW5v...        # Import from string (preview + confirm)
apm import setup.apmsetup            # Import from file
apm import --dry-run apm1://...      # Preview what would change
apm import --yes apm1://...          # Skip confirmation (for scripts)

The string encodes installed plugins, versions, pins, registry sources, and preferences. Use apm export --format toml or --format json when you want an editable file instead of the portable apm1://... string.

System and diagnostics

apm list                # apm-managed plugins
apm scan                # All AU/VST3 on the system; tracks matched external installs
apm doctor              # Run diagnostic checks
apm cleanup             # Clear download cache
apm rollback <slug>     # Restore from pre-upgrade backup

apm scan is the bridge for manual and vendor-managed installs: it records what is already on disk without asking you to re-enter file paths.

Registry sources

apm supports multiple Git-backed registries.

apm sources list
apm sources add https://github.com/your-org/apm-registry --name my-registry
apm sources remove my-registry

Audio-AI model package foundation

The audio-AI runtime is incomplete, but the CLI already supports model package manifests that declare metadata, runtime mode, weights, typed IO, parameters, license, and hardware requirements. It can validate and cache manifests, manage the local model store, pull verified weights, prepare runtime metadata, and produce explicit blocked results while executable adapters remain unavailable.

apm model validate examples/models/demucs.toml
apm model info examples/models/demucs.toml
apm model lock examples/models/demucs.toml -o apm.lock
apm model store --init
apm model list
apm model search stems
apm model search --available stems
apm model pull path/to/model-with-direct-weights.toml
apm model pull name@version
apm model install demucs@4.0.1
apm model run demucs@4.0.1 --input mix.wav --output stems/ --param stems=4
apm model rm demucs@4.0.1

This is the start of the "Ollama for audio" layer: native Apple Silicon where possible, managed Python fallback where necessary, one content-addressed model store, and reproducible apm.lock files.

Optional setup

Shell completions

# Bash
apm completions bash > ~/.local/share/bash-completion/completions/apm

# Zsh
apm completions zsh > ~/.zsh/completions/_apm

# Fish
apm completions fish > ~/.config/fish/completions/apm.fish

Registry format

The published registry is a Git repo with:

  • registry/index.toml
  • registry/installers.toml
  • registry/bundles/*.toml
  • registry/plugins/<vendor>/<slug>.toml

registry/installers.toml defines vendor manager apps that plugin records can reference with installer = "<key>". Example:

[native-access]
name = "Native Access 2"
vendor = "Native Instruments"
app_paths = [
  "/Applications/Native Access 2.app",
  "/Applications/Native Access.app",
]
download_url = "https://www.native-instruments.com/en/specials/native-access/"
homepage = "https://www.native-instruments.com/"

Curated install bundles live separately in registry/bundles/*.toml; product bundle SKUs still live in registry/plugins/<vendor>/<slug>.toml with product_type = "bundle".

slug         = "valhalla-supermassive"
aliases      = ["supermassive"]
name         = "Valhalla Supermassive"
vendor       = "Valhalla DSP"
version      = "5.0.0"
product_type = "plugin"
description  = "Massive reverb and delay with lush modulation."
category     = "effects"
subcategory  = "reverb"
license      = "freeware"
tags         = ["reverb", "delay", "free"]
homepage     = "https://valhalladsp.com/shop/reverb/valhalla-supermassive/"

[formats.vst3]
url          = "https://example.com/ValhallaSupermassiveOSX_5_0_0.dmg"
sha256       = "eaac6d0a24ffed0a02afd1dd06124d12f94716d32a8ac376606aa2d701a70c3e"
install_type = "dmg"
download_type = "direct"
bundle_path  = "ValhallaSupermassive.vst3"

[formats.au]
url          = "https://example.com/ValhallaSupermassiveOSX_5_0_0.dmg"
sha256       = "eaac6d0a24ffed0a02afd1dd06124d12f94716d32a8ac376606aa2d701a70c3e"
install_type = "dmg"
download_type = "direct"
bundle_path  = "ValhallaSupermassive.component"
Field Required Description
slug yes Unique identifier used in CLI commands
aliases no Alternate slugs that resolve to this record
name yes Display name
vendor yes Developer or company
version yes Semver or freeform version string
product_type yes plugin, bundle, expansion, preset_pack, sample_library, daw, utility, upgrade, subscription, template, or ebook
description yes One or two sentence description
category yes Registry category such as "effects", "instruments", or "daws"
subcategory no e.g. "reverb", "synthesizer", "eq"
license yes SPDX identifier or "freeware"
tags yes Search keywords
installer no Vendor manager key from registry/installers.toml
homepage no Official product page URL
purchase_url no Product purchase page
releases no Historical versions for explicit installs
bundle_ids no Known CFBundleIdentifier prefixes for scanner matching
formats.* at least one Format-specific download info such as au, vst3, or app
url yes Direct archive URL for direct downloads, or the official product/download page for manual and managed entries
sha256 for direct downloads SHA256 hex digest of the direct archive; manual and vendor-managed entries may leave this blank
install_type yes "dmg", "pkg", "zip", or "mas"
download_type yes "direct", "manual", or "managed"
bundle_path for dmg/zip Path inside the archive to the plugin bundle

Contributing plugins

  1. Fork this repo.
  2. Add or update the relevant registry records:
    • registry/plugins/<vendor>/<slug>.toml
    • registry/installers.toml when a vendor manager is needed
    • registry/bundles/*.toml when bundle membership changes
  3. Compute the SHA256 of the macOS installer:
    shasum -a 256 /path/to/installer.dmg
  4. Open a pull request.

Guidelines:

  • Only include products that are genuinely installable and not temporary trials.
  • Use the official developer download URL, not a mirror.
  • If a download requires account signup, note it with a comment in the TOML.
  • Mark non-standalone catalog entries with product_type so search results stay honest.

License

apm is released under the MIT License. See LICENSE for details.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages