| name | aube-package-manager |
| description | Expert guidance for using aube, a fast Rust-based Node.js package manager compatible with pnpm, npm, yarn, and bun lockfiles. |
| triggers | ["use aube to install packages","aube package manager","fast node.js package manager","replace pnpm with aube","aube install dependencies","aube workspace setup","aube ci install","aube run scripts"] |
Aube Package Manager
Skill by ara.so — Daily 2026 Skills collection.
Aube is a fast Node.js package manager written in Rust. It drops into existing projects by reading and writing existing lockfiles (pnpm-lock.yaml, package-lock.json, yarn.lock, bun.lock), uses a global content-addressable store to reduce disk usage, and delivers dramatically faster installs than pnpm or Bun — especially on warm CI.
Installation
Via mise (recommended)
mise use -g aube
mise use aube
aube --version
Via npm
npm install -g @endevco/aube
Via Homebrew (beta tap)
brew install endevco/tap/aube
Core Concepts
- Lockfile compatibility: Reads and writes existing lockfiles in place — no forced migration.
- Global store: Package files live in
~/.local/share/aube/store/ (XDG) and are shared across projects.
- Isolated layout: Packages link through
node_modules/.aube/ — phantom dependencies are blocked.
- Secure defaults: New package releases wait a minimum age; lifecycle scripts require explicit approval.
Key Commands
Install & Dependency Management
aube install
aube install -r
aube install --prod
aube install --lockfile-only
aube add react
aube add -D vitest
aube add zod --filter @acme/api
aube remove react
aube update
CI
aube ci
Use aube ci in CI pipelines where the lockfile must be the source of truth.
Running Scripts and Binaries
aube run build
aube run test
aube test
aube dev
aube build
aube lint
aube exec vitest
aube dlx cowsay hi
Multicall Shims
aubr build
aubx cowsay hi
Inspection & Maintenance
aube list
aube why react
aube outdated
aube audit
aube store path
aube store prune
aube config get registry
Publishing
aube pack
aube publish
aube link
aube unlink
Lockfile Compatibility
| File | Reads | Writes in place |
|---|
aube-lock.yaml | ✅ | ✅ |
pnpm-lock.yaml v9 | ✅ | ✅ |
package-lock.json v2/v3 | ✅ | ✅ |
npm-shrinkwrap.json | ✅ | ✅ |
yarn.lock (v1 classic + v2+ berry) | ✅ | ✅ |
bun.lock | ✅ | ✅ |
Not supported:
- pnpm v5/v6 lockfiles (upgrade with pnpm first)
- Yarn PnP projects (switch to
node_modules linker first)
Workspaces
aube install -r
aube run test -r
aube add zod --filter @acme/api
aube add -D typescript --filter @acme/shared
Workspace config files:
pnpm-workspace.yaml — read and written if present
aube-workspace.yaml — used for aube-first projects
Example aube-workspace.yaml:
packages:
- "packages/*"
- "apps/*"
Dependency Lifecycle Scripts
Aube skips lifecycle scripts by default for security.
aube ignored-builds
aube approve-builds
After approval, the allowed packages are recorded in your project config so teammates get the same behavior.
Configuration
Aube reads config from package.json under "aube" key or from .auberc / aube.config.yaml.
{
"name": "my-app",
"aube": {
"registry": "https://registry.npmjs.org/",
"store-dir": "/custom/store/path"
}
}
aube config get registry
aube config set registry https://my-private-registry.example.com
CI/CD Patterns
GitHub Actions
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install mise
uses: jdx/mise-action@v2
- name: Install aube
run: mise use -g aube
- name: Cache aube store
uses: actions/cache@v4
with:
path: ~/.local/share/aube/store
key: aube-store-${{ hashFiles('**/pnpm-lock.yaml', '**/aube-lock.yaml') }}
restore-keys: |
aube-store-
- name: Install dependencies
run: aube ci
- name: Run
Docker
FROM node:22-slim
# Install aube via npm
RUN npm install -g @endevco/aube
WORKDIR /app
# Copy lockfile and package.json first for layer caching
COPY package.json pnpm-lock.yaml ./
# Frozen install — fail if lockfile would change
RUN aube ci
COPY . .
RUN aube run build
CMD ["node", "dist/index.js"]
Lockfile-only update (for Docker layer caching)
aube install --lockfile-only
Migrating from pnpm
mise use -g aube
cd my-project
aube install
aube approve-builds
Migrating from npm/yarn
cd my-npm-project
aube install
cd my-yarn-project
aube install
cd my-bun-project
aube install
Common Patterns
Monorepo with filtered commands
aube run build --filter @acme/api
aube run test --filter '...[origin/main]'
aube exec vitest --run
Global store management
aube store path
aube store prune
Checking why a package is installed
aube why lodash
Troubleshooting
aube ci fails with lockfile mismatch
The lockfile is out of sync with package.json. Fix locally:
aube install
git add pnpm-lock.yaml
git commit -m "chore: update lockfile"
Build scripts not running
Aube skips lifecycle scripts by default. Check what was skipped:
aube ignored-builds
aube approve-builds
Package phantom dependency errors
Aube uses an isolated layout — packages can only import their declared dependencies. Fix by adding the missing dependency explicitly:
aube add <missing-package>
Slow first install / cold cache
The first install populates the global store. Subsequent installs (same or other projects with shared deps) will be significantly faster. Cache ~/.local/share/aube/store in CI for warm-cache performance.
pnpm v5/v6 lockfile not supported
pnpm install
aube install
Yarn PnP projects
Aube writes node_modules, not .pnp.cjs. Switch the Yarn linker first:
nodeLinker: node-modules
yarn install
aube install
Links