CLI

The Rusl CLI

The CLI resolves, locks, and vendors your schema and bundle dependencies into your project — the same workflow you already know from a package manager.

About

The CLI is how a project consumes Rusl. It reads the dependencies you declare, resolves them to exact versions, writes a lockfile, and vendors the schema files into your repo. It also carries the embedded MCP server (rusl mcp) and your authenticated session.

Install

Install it with your platform's package manager:

Homebrew
brew install rusl-labs/tap/rusl
macOS and Linux
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rusl-labs/rusl-cli/releases/latest/download/rusl-installer.sh | sh
Windows
powershell -ExecutionPolicy Bypass -c "irm https://github.com/rusl-labs/rusl-cli/releases/latest/download/rusl-installer.ps1 | iex"
Verify
rusl --help

Sign in with rusl login for write features; reading the registry is open.

Configuration

A project uses up to three files. Only the manifest is required — add the config file only when the defaults don't suit you.

rusl.bundle.toml

The manifest declares the schemas and bundles your project depends on. List Rusl resources under [rusl.resources] — each "account/schemas/slug" or "account/bundles/slug" mapped to a version requirement — and external URLs under [external]. Run dependency commands from the directory that holds it.

rusl.bundle.toml
[rusl.resources]
"acme/schemas/user-profile" = "*"
"acme/bundles/common" = ">=1.2.0"

[external]
"https://json-schema.org/draft/2020-12/schema" = ""

Version requirements. Each value is a Cargo-compatible version requirement: * (any), 1.2.3 (compatible), ~1.2.3 (patch-level), >= 1.2.3 (minimum), = 1.2.3 (exact), or a range like >= 1.0.0, < 2.0.0. Cargo dependency requirements

rusl.config.toml

Optional. Add it only to change where resolved schema files are written. schema_dir defaults to schemas; point it wherever you want vendored schemas committed.

rusl.config.toml
schema_dir = "schemas/vendor"

rusl.lock

Generated by rusl install. It pins the resolved resources and versions — commit it so installs are reproducible.

Usage

The CLI follows a package-manager workflow: declare dependencies, install them, and inspect what resolved. The command set evolves, so run rusl --help for the current commands and treat it as the source of truth.

A typical loop
rusl add acme/bundles/common
rusl install
rusl list --tree