
Shelve CLI
The Shelve CLI serves as a command-line interface designed for the Shelve platform. This tool enables users to authenticate with Shelve, facilitating the seamless transfer of environment variables for project collaboration within a team directly through the terminal interface.
Installation
Install the package locally:
bun a -d @shelve/cli
Configuration
Configuration is loaded from cwd. You can use either shelve.json, shelve.config.json, but running the CLI without any configuration will create a shelve.json file.
The CLI also has a json schema for the configuration file. that can be used to validate the configuration file. (see it here)
Configuration example
{
"slug": "nuxtlabs",
"project": "@nuxt/ui",
"confirmChanges": true,
"autoCreateProject": true
}
Monorepo configuration
If you are using a monorepo, Shelve will automatically detect the root of the monorepo and look for the global shelve.json file. You can define here common configurations for all the projects in the monorepo (the team slug for example).
Usage
Global flags (usable before or after the subcommand):
--json— machine-readable stdout / structured stderr errors--quiet/-q— minimal output (no spinners)--yes/-y— skip confirmations--non-interactive— fail instead of prompting (also auto-enabled in CI / AI agent shells)--debug— verbose logging (SHELVE_DEBUG=1)
See CLI agents & automation on shelve.cloud for the full contract (JSON shapes, exit codes, env vars). Install the agent skill: npx skills add https://shelve.cloud.
Shelve CLI (shelve v5)
USAGE shelve run|push|pull|login|logout|me|init|create|config|generate|upgrade|doctor
COMMANDS
run Inject secrets into a child process (no .env on disk)
push Push variables for specified environment to Shelve
pull Pull variables for specified environment from Shelve
login Login to Shelve
logout Logout from Shelve locally
me Show the currently logged-in user
init Add agent ignore files and shelve-managed .gitignore block
doctor Validate CLI setup (config, auth, API, cache)
create Create a new project and its config
config Show the current configuration
generate Generate resources for a project
upgrade Upgrade the Shelve CLI to the latest version
Use shelve <command> --help for more information about a command.
Agents & automation
Prefer shelve run -- <cmd> over shelve pull. Set SHELVE_TOKEN, SHELVE_TEAM_SLUG, and SHELVE_PROJECT for non-interactive use. Example:
shelve --json config
shelve --non-interactive --yes push --env staging
shelve run -- pnpm dev
Monorepo usage
In a monorepo, local shelve.json is merged with the root config (shared team slug, etc.). Commands run in the current package directory; they do not automatically iterate all packages.
Local development
Contributing
To start contributing, you can follow these steps:
- First raise an issue to discuss the changes you would like to make.
- Fork the repository.
- Create a branch using conventional commits and the issue number as the branch name. For example,
feat/123orfix/456. - Make changes following the local development steps.
- Commit your changes following the Conventional Commits specification.
- If your changes affect the code, run tests using
pnpm run test. - Create a pull request following the Pull Request Template.
- To be merged, the pull request must pass the tests/workflow and have at least one approval.
- If your changes affect the documentation, make sure to update it.
- If your changes affect the code, make sure to update the tests.
- Wait for the maintainers to review your pull request.
- Once approved, the pull request will be merged in the next release !
Sponsors
Published under the APACHE license.
Made by @HugoRCD and community
auto updated with automd (last updated: Sat Apr 05 2025)