Local CLI Workflows
Nebi manages Pixi workspace specs locally, and syncs them to remote servers. This guide covers local workflows.
Note: Nebi currently only supports
pixi.tomlmanifests. Pixi projects usingpyproject.toml(with[tool.pixi.*]tables) are not yet supported.
Track a New Workspace
Section titled “Track a New Workspace”Create a new Pixi workspace and start tracking it with Nebi:
mkdir my-data-project && cd my-data-projectnebi initIf no pixi.toml exists, Nebi automatically runs pixi init for you.
The workspace name comes from the [workspace] name field in pixi.toml:
No pixi.toml found; running pixi init...✔ Created /home/user/my-data-project/pixi.tomlWorkspace 'my-data-project' initialized (/home/user/my-data-project)Track an Existing Pixi Workspace
Section titled “Track an Existing Pixi Workspace”Already have a Pixi project? Just run nebi init in the directory:
cd existing-pixi-projectnebi initWorkspace 'existing-pixi-project' initialized (/home/user/existing-pixi-project)List Your Workspaces
Section titled “List Your Workspaces”See all workspaces tracked by Nebi:
nebi workspace listNAME PATHmy-data-project /home/user/my-data-projectml-pipeline /home/user/ml-pipelinedata-science /home/user/data-scienceUse (activate) Workspaces
Section titled “Use (activate) Workspaces”Activate by Name
Section titled “Activate by Name”Tracked workspaces can be activated from any directory by name or by path
# Activate a Pixi shell with the workspace's namenebi shell data-science
# Run a (Pixi) task from a workspace (stays in current directory)nebi run data-science jupyter-labIf multiple workspaces share the same name, an interactive picker is shown.
Activate by Path
Section titled “Activate by Path”# Activate a workspace by relative pathnebi shell ./my-project
# Or, by absolute pathnebi shell /home/user/data-sciencePass Arguments to Pixi
Section titled “Pass Arguments to Pixi”Anything after the workspace name is forwarded to Pixi:
# Activate a specific pixi environmentnebi shell data-science -e cuda
# Run a task with extra argumentsnebi run ml-pipeline train -- --epochs 100Publish a Workspace Bundle
Section titled “Publish a Workspace Bundle”nebi publish packages your workspace and pushes it to an OCI registry.
Every bundle includes pixi.toml and pixi.lock, plus any other
workspace files (READMEs, source code, data) as additional layers.
nebi publish --registry my-registry --tag v1Selecting what goes into the bundle
Section titled “Selecting what goes into the bundle”By default, the bundle includes everything in your workspace except
.git/ and .pixi/. pixi.toml and pixi.lock are always included
no matter what.
To customize what gets bundled, add a [tool.nebi.bundle] table to
pixi.toml:
[tool.nebi.bundle]include = ["src/**", "assets/**", "README.md"]exclude = ["*.log", "secrets/**", "notes.md"]include: turn the default into a strict allowlist. Only files matching these patterns are kept.exclude: drop additional files (for example,nebi.db*) from what’s been kept so far.
.gitignore rules also apply: files git ignores are kept out of
bundles. Symlinks, device files, and named pipes are skipped silently.
Parallelism
Section titled “Parallelism”--concurrency N sets how many files upload or download at the same
time. Default is 8. Raise it (e.g., 16 or 32) when the registry is slow
to respond. Lower it (e.g., 2 or 4) on slow or rate-limited networks.
Import from an OCI Registry
Section titled “Import from an OCI Registry”Pull a workspace bundle from an OCI registry. The core files (pixi.toml,
pixi.lock) are always restored; any asset layers in the bundle are
extracted to the output directory at their original relative paths.
nebi import quay.io/nebari/data-science:v1.0 -o ./my-projectTracking workspace 'data-science' at /home/user/my-projectImported quay.io/nebari/data-science:v1.0 -> /home/user/my-project (3 asset file(s))Use --concurrency N to set how many files download at the same time (default 8).
Referring to a configured registry by name
Section titled “Referring to a configured registry by name”Prefix a reference with the name of a registry you added with
nebi registry add --local to pull from it, or use a bare one-segment name to
pull from the default registry. This is the same lookup nebi publish --local
uses for its target:
# Pull from the registry named "myreg"nebi import myreg:my-env:v1
# Reach a nested repository through that registrynebi import myreg:myorg/my-env:v1
# Pull from the default registrynebi import my-env:v1Everything else names its own host and is pulled directly, with no lookup, so
nebi import quay.io/nebari/data-science:v1.0 works on a machine that has no
registries configured.
Remove Tracking
Section titled “Remove Tracking”To stop tracking a workspace (without deleting any files):
# Remove the workspace in the current directorynebi workspace remove .
# Remove by namenebi workspace remove data-science
# Remove by pathnebi workspace remove /home/user/data-scienceTo clean up all workspaces whose directories no longer exist:
nebi workspace prune