entire-<name> that add commands to Entire. For example, an executable named entire-graph runs when you enter entire graph. This system is separate from the Agent Integration Protocol, which uses entire-agent-<name> executables to integrate coding agents.
Command Tree
Discovery and Precedence
When you run a command such asentire graph build, Entire:
- Checks whether
graphis a command included with Entire. - Looks for an executable named
entire-graphon$PATH. - Runs that executable with
buildas its argument and passes stdin, stdout, stderr, and its exit code through unchanged.
entire-version, for example, entire version still runs the command included with Entire.
Entire temporarily prepends the managed plugin directory to $PATH during plugin discovery. Therefore, a managed plugin takes precedence over an entire-<name> executable with the same name elsewhere on your shell’s $PATH. Entire keeps the managed directory on $PATH while a plugin runs so it can invoke other managed plugins.
Entire reserves names beginning with entire-agent- for agent integrations and does not dispatch them as CLI commands. Follow the Agent Integration Protocol to build or install one.
Run an Unmanaged Plugin
You do not needentire plugin install to run a plugin. Make the binary executable and place it anywhere on your $PATH:
entire plugin list. entire plugin upgrade does not update them, and you must remove them from $PATH manually.
Managed Directory
entire plugin install uses the first managed root that applies:
ENTIRE_PLUGIN_DIR must be an absolute path. Under the root, Entire uses this layout:
pkg/, then link the binary into bin/. Local path installs link the source executable directly into bin/, so rebuilding the source normally updates the command immediately. When symbolic links are unavailable, Entire falls back to a hard link and then a copy.
Each plugin receives:
Entire passes common operating system, terminal, locale, CI, proxy, SSH agent,
ENTIRE_*, LC_*, and XDG_* variables. Entire excludes other variables by default to reduce accidental credential exposure. You can explicitly pass additional names or prefixes with ENTIRE_PLUGIN_ENV, for example:
Install a Plugin
Install a plugin from the synced index, a git repository URL, or a local executable.
Local paths must be explicit: include a directory separator or begin with
./. The executable’s basename must be entire-<name> so Entire can derive the command name.
For a remote install, Entire:
- Uses the tag supplied with
--pin, or tries the newest stable semantic version tag. Without--pin, Entire tries up to two older stable tags when newer tags lack a compatible release asset. - Reads
entire-plugin.ymlfrom that tag when the repository provides it. - Downloads the matching release asset over HTTPS.
- Verifies the asset against the release’s checksum manifest.
- Stores the binary and install manifest in the managed directory.
- Resolves and offers to install declared dependencies.
--yes to skip the prompt; a run without a terminal requires this flag for an unlisted URL.
Checksum Verification
Remote installation looks forchecksums.txt or a supported plugin checksum filename in the release. When the manifest covers the release asset, Entire computes its SHA-256 digest and refuses the install if it does not match. Entire also records a digest of the installed binary so entire plugin doctor can detect later changes.
If the release asset has no published checksum covering your platform, installation stops. --allow-unverified bypasses that requirement and records the install as unverified; plugin doctor continues to report it. Future upgrades preserve the original choice: a verified install cannot silently become unverified, while an unverified install remains allowed to upgrade without a new flag.
Dependencies
A plugin repository can declare runtime dependencies inentire-plugin.yml:
min_version accepts an optional minimum semantic version. Entire does not support version ranges. Entire resolves dependencies by name through the plugin index, including transitive dependencies. A plugin author cannot supply a dependency repository URL in entire-plugin.yml.
Entire shows the dependencies it plans to install or upgrade and asks once for confirmation. Use --yes in a run without a terminal or --no-deps to install only the requested plugin. If a dependency already comes from a local path or your shell’s $PATH, Entire treats it as present but cannot verify its minimum version. Run entire plugin doctor to inspect the resulting state.
List Managed Plugins
List plugins installed in the managed directory.entire-<name> executables elsewhere on $PATH.
Search the Plugin Index
Search the synced plugin index. Run the command without a term to list everything available. A* marks a managed plugin that is already installed.
--index, ENTIRE_PLUGIN_INDEX_URL, then Entire’s default index.
Inspect a Plugin
Show index metadata and managed install details for a plugin, including its repository, version, pin, and dependencies.Browse the Plugin Index
Browse the plugin index in an interactive picker and install a selection.This command needs a terminal. Use
entire plugin search and entire plugin install NAME in scripts and runs without a terminal.Upgrade Plugins
Upgrade one plugin installed from a remote repository, or use--all to upgrade every eligible plugin. Entire tries the newest stable semantic version first and uses the same release asset fallback as installation.
--pin.
Remove a Plugin
Remove a plugin from the managed directory.--force. This command does not remove unmanaged executables elsewhere on $PATH.
Diagnose Plugin Problems
Check managed plugins for:- broken managed entries
- dangling links to local paths
- missing or outdated dependencies
- unverified installs
- changes to a binary installed from a remote repository
- the macOS quarantine attribute
Update the Plugin Index
Force a refresh of the plugin index from its Git repository.plugin search does not show a newly published plugin or when you need to refresh the index before the cached copy becomes stale.
Troubleshooting
entire NAME Reports an Unknown Command
- Confirm the executable is named
entire-NAME, including theentire-prefix. - Run
entire plugin listfor a managed install. - For an unmanaged install, run
command -v entire-NAMEon Linux or macOS, orwhere entire-NAMEon Windows. - On Linux or macOS, make the file executable with
chmod +x /path/to/entire-NAME. - Run
entire plugin doctorto check managed entries.
The Wrong Copy Runs
Entire prepends the managedbin/ directory during discovery, so it wins over matching executables elsewhere on $PATH. Run entire plugin list to see the managed entry. Remove it with entire plugin remove NAME if you intend to use the copy from your shell’s $PATH.
If the name matches a command included with Entire, Entire runs that command. Rename the plugin executable and invoke it under the new name.
A Plugin Is Missing from Search
Refresh and search the index:Installation Needs a Terminal
An unlisted repository URL and dependency installation require confirmation. In CI or another environment without a terminal, review the source and itsentire-plugin.yml dependencies first, then add --yes.
Checksum Verification Fails
Do not bypass a checksum mismatch. A mismatch means the downloaded asset differs from the published digest. If no checksum covers your platform, ask the plugin author to publish one.--allow-unverified is an explicit choice for a missing checksum, not a remedy for a mismatch.
A Local Plugin Does Not Update
Local installs use a symbolic link when the platform allows it, so rebuilding the source updates the command. On systems that require the hard link or copy fallback, reinstall with--force after rebuilding:
Dependencies Are Missing or Outdated
Runentire plugin doctor and follow its suggested install or upgrade commands. Reinstall the parent plugin without --no-deps if you want Entire to plan the transitive dependency set again.