Skip to content
GitHub

bino registry

bino registry manages packages consumed from a bino registry. Dependencies are declared in bino.toml's [dependencies] table, resolved versions are pinned in bino.lock (commit it), and package files are materialized under .bino/registry/ (gitignore it — bino registry install re-creates it from bino.lock).

See the Registry and dependencies guide for the underlying concepts: package names, pin vs. tag semantics, the lockfile, and authentication. The registry URL resolution order (project config, environment, global ~/.bino/config.toml, public default) is described there as well.

bino registry add <package[@version|@tag]>...

Resolves each package (and its transitive dependencies), downloads the verified documents into .bino/registry/, pins the result in bino.lock, and records the dependency in bino.toml.

  • A bare package name follows the latest tag; @1.2.3 pins that exact version.
  • Prints compatibility warnings when a package declares a CLI or engine range that does not match your setup.
# Follow the latest tag
bino registry add @acme/base-layout

# Pin an exact version
bino registry add @acme/quarterly-report@1.2.3
bino registry install

Re-materializes .bino/registry/ from bino.lock without re-resolving anything, so CI and fresh checkouts reproduce the exact locked versions.

  • Errors when bino.toml declares dependencies but no bino.lock exists, or when the lockfile drifted from [dependencies] — run bino registry update in both cases.
bino registry update [package...]

Re-resolves the dependencies declared in bino.toml and rewrites bino.lock. Entries that follow a tag move with it; exact-version pins are held. With package arguments, only those packages are re-resolved and every other direct dependency is held at its locked version.

bino registry remove <package>...

Removes packages from bino.toml's [dependencies] table, then deletes every locked package no longer reachable from the remaining declarations. Works offline. A transitive dependency still required by another package is kept.

bino registry list

Lists the packages pinned in bino.lock with version, tag, kind, origin (direct or transitive), and path. Works offline.

bino registry search <query> [flags]

Searches the registry for packages.

  • --kind – filter by document kind (repeatable).
  • --scope – filter by scope (repeatable).
  • --tag – filter by tag (repeatable).
  • --page – result page, 1-based (default 1).
  • --per-page – results per page (default 20).
bino registry info <package[@version|@tag]>

Shows a package's resolved metadata: version, tag, kind, digest, dependencies, and download URL. Requires network access.

bino registry verify

Re-hashes every package file under .bino/registry/ and compares it with the digest pinned in bino.lock. Works offline; intended as a CI gate. The digest is computed over the canonical document form, so cosmetic reformatting of a file does not fail verification. Exits non-zero on any failure.

bino registry login [flags]

Stores a personal access token in ~/.bino/credentials.json (mode 0600). Subsequent registry commands use the stored token automatically unless bino.toml or BINO_REGISTRY_TOKEN provides one.

Personal access tokens are created and managed in the registry web UI (Settings → Tokens) — create one there first, then paste it when prompted.

  • --registry – registry URL (overrides bino.toml, BINO_REGISTRY_URL, and ~/.bino/config.toml; default https://registry.bino.bi).
  • --with-token – read the personal access token from stdin instead of prompting.
# Interactive: paste the token created in the web UI
bino registry login

# Non-interactive (CI)
echo "$BINO_PAT" | bino registry login --with-token
bino registry logout [--registry <url>]

Removes the stored credential for the registry and revokes it server-side (best effort — the local credential is always removed).