Using the Registry
This guide covers day-to-day registry usage from the CLI and web interface.
Configuring registries
Section titled “Configuring registries”Registries are defined in your project’s .duumbi/config.toml:
[registries]duumbi = "https://registry.duumbi.dev"company = "https://registry.acme.com"
[workspace]default-registry = "duumbi"The default-registry is used when a dependency has no explicit registry field. Scoped packages (@scope/name) automatically route to the registry named scope.
You can also manage registries from the CLI:
duumbi registry add company https://registry.acme.comduumbi registry listSearching for modules
Section titled “Searching for modules”From the CLI
Section titled “From the CLI”duumbi search graph-traverseThis searches all configured registries and prints matching modules with their latest version and description.
From the web UI
Section titled “From the web UI”Visit your registry in a browser (e.g., registry.duumbi.dev) and use the search bar. You can also press / to focus the search field.
Installing dependencies
Section titled “Installing dependencies”Add a dependency to your project:
duumbi deps add @duumbi/stdlib-mathOr specify a version range:
duumbi deps add @duumbi/stdlib-math@^1.2To install all dependencies defined in config.toml:
duumbi deps installThis resolves versions according to SemVer, downloads .tar.gz archives to .duumbi/cache/, and writes a deps.lock lockfile.
Using a dependency from a specific registry
Section titled “Using a dependency from a specific registry”When you have multiple registries, specify which one a dependency comes from:
[dependencies]"@duumbi/stdlib-math" = "^1.0""@company/auth" = { version = "^3.0", registry = "company" }Publishing a module
Section titled “Publishing a module”1. Prepare your module
Section titled “1. Prepare your module”Your module directory must contain a manifest.toml with at least name, version, and description:
[module]name = "@yourscope/my-module"version = "1.0.0"description = "A short description of what this module does."2. Authenticate
Section titled “2. Authenticate”If you haven’t already, log in to the registry:
duumbi registry login duumbiSee Authentication for details on login flows.
3. Publish
Section titled “3. Publish”duumbi publishThis validates the graph, packages it as a .tar.gz archive with a SHA-256 integrity hash, and uploads it to the configured registry.
4. Verify
Section titled “4. Verify”After publishing, you can verify your module is available:
duumbi search my-moduleOr visit the module page on the web UI.
Yanking a version
Section titled “Yanking a version”If you published a broken version, you can yank it. Yanked versions are still downloadable (existing lockfiles continue to work) but won’t be selected for new installs:
duumbi yank @yourscope/my-module@1.0.0Dependency resolution order
Section titled “Dependency resolution order”When resolving a module, DUUMBI looks in this order:
- Workspace —
.duumbi/graph/(local project files) - Vendor —
.duumbi/vendor/(pinned, audited copies) - Cache —
.duumbi/cache/(downloaded from registry) - Not found — error
E011
Vendoring for offline builds
Section titled “Vendoring for offline builds”Copy dependencies into your project for reproducible, offline builds:
duumbi deps vendorThis copies all cached modules to .duumbi/vendor/. You can commit these to version control.
To vendor selectively:
[vendor]strategy = "selective"include = ["@company/*"]