Sheldon¶
- ID
sheldon- Home page
- Version requirement
>= 0.6
- Platforms
🐧 Linux · 🍎 macOS
- Operations
upgrade_all·remove- purl types
pkg:sheldon- CLI name
sheldon- Forced environment
NO_COLOR=1- Issues and PRs
- Source
Sheldon is a fast, configurable plugin manager for any shell.
Plugins are declared in a plugins.toml config file, each under a unique
local name, and materialized into a plugins.lock file that Sheldon
generates. Packages are identified by that local name, which is what every
command below takes.
Unlike the other shell plugin managers mpm wraps, Sheldon is a real
compiled binary rather than a sourced shell function, so it needs no
interpreter wrapper: mpm calls sheldon directly.
Caution
No installed: Sheldon ships no command that prints its plugins. The
inventory does exist, in the plugins.toml config file, but reaching it
would mean mpm reading and parsing a configuration file instead of calling
a CLI, which is not how a manager gathers packages here. The upstream
command set is init, add, edit, remove, lock, source,
completions and version: none of them lists anything.
Caution
No install: sheldon add requires two values, a unique local name and
a source flag naming where the plugin comes from (--github, --git,
--gist, --remote or --local). mpm’s install carries a single package
id, which cannot supply both, and guessing a source from the id would be
inventing a mapping Sheldon never defined. The operation is therefore not
implemented rather than faked, and mpm auto-skips it.
Note
No outdated: Sheldon compares nothing against its remotes short of
performing the update. upgrade --all still works, and mpm auto-skips the
operation.
Documentation: sheldon.
What mpm adds to sheldon¶
mpm reaches across every manager at once, not sheldon alone: mpm installed and mpm outdated cover sheldon alongside every other manager you run in one table, mpm upgrade --all updates them together, and mpm sbom exports the whole machine as one bill of materials.
Every mpm command also gains --dry-run and --plan previews, cross-scheme version comparison and purl identifiers. See manager augmentations for how each one is built.
Operations¶
Operation |
Supported |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
✓ |
|
✓ |
|
|
|
|
|
Selecting and configuring sheldon¶
Deselect sheldon for a single run with --no-sheldon, or persist the choice in your configuration:
[mpm]
sheldon = false
The arguments and environment variables listed in the box atop this page are forced on every sheldon call, so runs stay quiet, non-interactive and reproducible: the defaults you would set in CI anyway.
Keep it enabled but tune how mpm drives it with a per-manager override:
[mpm.managers.sheldon]
timeout = 900
mpm config-template sheldon prints every overridable attribute as a ready-to-paste block.
Recipes¶
A few jobs you would otherwise script around sheldon, one mpm command each:
Snapshot and clone a machine:
mpm --sheldon dump sheldon.toml, thenmpm restore sheldon.tomlon the next one.Export a compliance SBOM:
mpm --sheldon sbom(CycloneDX by default,--spdxfor SPDX).
Privilege escalation¶
mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.
See privilege escalation for the full policy.
Cooldown¶
State of Sheldon’s release-age gating, from the cooldown support table:
Status: ❌ None (clones a Git branch or tag, no release feed)
A cooldown only pays off where a compromised release can be withdrawn while the clock runs, and can only be emulated where the registry dates its releases. From the retraction table:
Registry: Upstream Git clones
Retraction: None: a plugin is cloned straight from its upstream repository, so withdrawing a bad revision is its author force-pushing, retagging or deleting it themselves. No index sits in between
Publish date: ❌ a commit or tag date is set by the author and freely rewritable
With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.
Version probe¶
The version is probed by running:
$ sheldon --version
sheldon 0.8.2
and extracted with:
r"sheldon\s+(?P<version>\S+)"
Changelog¶
7.7.0.dev0(unreleased)Add the Sheldon shell plugin manager with
upgradeandremovesupport. It declares noinstalled(Sheldon prints no listing) and noinstall(sheldon addneeds both a local name and a source flag).