crab ship
Ship files to cloud storage in a single command.
Synopsis
crab ship [OPTIONS] -m <MESSAGE> <PATTERNS>...Description
crab ship combines crab add, git commit, and crab push into a single
command. It's designed for ML/data workflows where you want files staged,
committed, and uploaded without running three separate commands.
Under the hood, crab ship performs these steps:
- Stage — Runs
crab addwith the given patterns (parallel chunking + dedup) - Commit — Creates a git commit with the provided message
- Push — Runs the native
crab pushpipeline (concurrent xorb uploads, faster thangit push)
If no tracking patterns exist in .gitattributes, crab ship auto-detects
large file extensions and tracks them before staging — the same auto-track
behavior as crab add.
Arguments
| Argument | Required | Description |
|---|---|---|
<PATTERNS> | Yes | Glob patterns to ship (e.g. *.safetensors, .) |
Options
| Option | Default | Description |
|---|---|---|
-m, --message | (required) | Commit message |
-j, --jobs | 8 | Maximum concurrent file-processing tasks |
--remote | origin | Git remote to push to |
-b, --branch | current branch | Branch to push |
--no-push | false | Skip the push step (just add + commit) |
--json | false | Structured JSON output |
Examples
Ship model files
crab ship '*.safetensors' -m "fine-tuned model v2"Ship everything
crab ship . -m "weekly checkpoint"Ship without pushing (local commit only)
crab ship '*.bin' -m "WIP: training in progress" --no-pushShip with higher parallelism
crab ship -j 16 'data/**' -m "updated training data"Performance
crab ship uses the native crab push pipeline rather than git push. This
means xorb uploads happen concurrently (default 16 parallel uploads) and the
push bypasses git's serial remote helper protocol. For repositories with many
large files, this can be significantly faster than the equivalent
crab add && git commit && git push sequence.
When to Use crab ship vs Individual Commands
| Scenario | Recommended |
|---|---|
| Quick upload of model/data files | crab ship |
| Selective staging across multiple commits | crab add + git commit |
| Need to review changes before committing | crab add → crab status → git commit |
| CI/CD pipelines with custom logic | Individual commands |
| First-time setup with many file types | crab ship . -m "init" (auto-tracks everything) |
Error Handling
- If
crab addfails (no tracked patterns, no matching files), the command stops before committing - If there's nothing to commit (files already up to date), the command reports this and exits cleanly
- If
crab pushfails (network error, auth issue), the local commit is preserved — re-runcrab pushto retry