Sheldon

ID

sheldon

Home page

https://sheldon.cli.rs

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

📦 manager: sheldon

Source

meta_package_manager/managers/sheldon.py

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

installed

outdated

orphans

search

install

upgrade

upgrade_all

remove

sync

cleanup

doctor

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, then mpm restore sheldon.toml on the next one.

  • Export a compliance SBOM: mpm --sheldon sbom (CycloneDX by default, --spdx for 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 upgrade and remove support. It declares no installed (Sheldon prints no listing) and no install (sheldon add needs both a local name and a source flag).