CAVS Node logo CAVS Node · command-line client

Push the bytes that changed. Skip the rest.

cav connects your Git repo to CAVS Node and wires Git LFS to a content-defined, deduplicated transfer agent — so pushes and pulls move only the chunks you don't already have.

$ curl -fsSL https://raw.githubusercontent.com/orelvis15/cavs-hub-cli/main/install.sh | sh
Other ways to install →
~/binary-assets — cav
cav login Paste your CAVS access token: cavs_pat_•••••••••••• ✓ authenticated as orelvis · org: defensores-caa cav repo connect defensores-caa/binary-assets → set lfs.url ok → wired cavs-lfs-agent ok ✓ repository connected. push through CAVS is live. git push origin main Uploading LFS objects: chunking 2.4 GB… deduplicated 2.1 GB already on Hub · uploading 318 MB ✓ done in 6.2s ▊
7 commands
The whole surface. No config files to hand-edit.
~1 min
From login to a deduplicated push.
Rust · MIT
A single static binary, open source.
// why cav

A thin client with a heavy payoff.

cav does three jobs well: authenticate, connect a repo, and stay out of the way. The chunking and dedup happen in the transfer agent — cav just wires it up correctly, every time.

01 — transfer

Content-defined dedup, on every push

Once a repo is connected, Git LFS routes through cavs-lfs-agent. Assets are content-defined-chunked and deduplicated, so only bytes the Hub has never seen travel the wire.

  • ▸ Ideal for large binary & media-asset repos
  • ▸ Re-uploads of near-identical files collapse to deltas
  • ▸ Works with the Git LFS you already use — no new verbs to learn
git push
git push chunking level.pak 1.9 GB dedup hit 94% on the wire 118 MB ✓ pushed
02 — setup

One command to connect a repo

cav repo connect points lfs.url at CAVS and installs the transfer agent for that repository. Or wire just the agent with install-lfs.

  • ▸ No manual .lfsconfig surgery
  • ▸ Per-repo — your other repos are untouched
  • ▸ cav status shows exactly what's configured, offline
cav status
cav status config ~/.config/cav/config.toml api http://localhost:8080 login authenticated lfs cavs-lfs-agent wired
03 — auth & upkeep

Token auth, and it keeps itself current

Log in once with a cavs_ access token minted in the dashboard — stored 0600, scoped to what you allow. cav update replaces the binary in place.

  • ▸ Personal / repo / CI tokens, bounded by their scopes
  • ▸ A once-a-day background check nudges you when a release lands
  • ▸ Opt out with CAV_NO_UPDATE_CHECK=1
cav update
cav update current 0.1.0 latest 0.1.0 ✓ already up to date cav update --check a newer release exists: 0.2.0
// reference

Every command cav has.

The complete surface area — nothing hidden behind config files.

cav login

Store & validate a cavs_… access token, created in the dashboard → Tokens.

cav logout

Remove the stored credentials from disk.

cav whoami

Show the authenticated identity and the organizations it belongs to.

cav repo connect <org>/<repo>

Point the current repo's lfs.url at CAVS and wire the transfer agent.

cav install-lfs

Configure just the CAVS LFS transfer agent for the current repo.

cav status

Print the config path, API base and login state — no network calls.

cav update [--check]

Update cav in place to the latest release; --check only reports.

cav --api <url>

Global flag to override the API base for one invocation (or set $CAVS_API).

// install

Get cav in under a minute.

Prebuilt binaries ship on GitHub Releases for macOS, Linux and Windows. Or build from source.

# installs the latest release for your platform curl -fsSL https://raw.githubusercontent.com/orelvis15/cavs-hub-cli/main/install.sh | sh

Then run cav login and paste a token from the dashboard.

# pin to a specific published version curl -fsSL https://raw.githubusercontent.com/orelvis15/cavs-hub-cli/main/install.sh | CAVS_VERSION=0.1.0 sh

Useful for CI where you want a reproducible cav version.

# download cav-x86_64-pc-windows-msvc.exe from Releases, # rename it to cav.exe, and put it on your PATH. Invoke-WebRequest -Uri https://github.com/orelvis15/cavs-hub-cli/releases/latest -OutFile cav.exe

Or grab the asset directly from the Releases page.

# builds cav, plus cavs-lfs-agent from a sibling cavs-oss checkout if present git clone https://github.com/orelvis15/cavs-hub-cli && cd cavs-hub-cli ./build-install.sh

Requires a Rust toolchain (cargo build --release produces target/release/cav).

// ship it

Stop re-uploading bytes you've already pushed.

Connect a repo in one command and let CAVS Node carry only the deltas.

$ curl -fsSL https://raw.githubusercontent.com/orelvis15/cavs-hub-cli/main/install.sh | sh