Skip to content

FAQ

A managed platform for storing, versioning, deduplicating and distributing large files — models, datasets, media, images, game and build artifacts — that is fully Git LFS compatible and transfers only what actually changed.

Git LFS moves large files out of the Git object database but still stores and transfers every version whole. CAVS chunks files with content-defined chunking, so consecutive versions share nearly all their chunks. Change 3 MiB inside a 22 MiB file and you pay for about 3 MiB, not 22.

No. Your source, history, pull requests and CI stay where they are. CAVS replaces the LFS storage and transfer layer and builds a read-only index of your Git metadata so the dashboard can show files, commits, branches and releases.

No. The direct API, the SDKs and the CLI work with no Git involved — useful for pipeline outputs that shouldn’t be in Git at all.

The engine is: chunking, packing, formats, the transfer agent, the local toolkit and the engine SDKs live at github.com/orelvis15/cavs under Apache 2.0. The client SDKs and the CLI are public too. The managed platform itself is not.

Quickstart — about five minutes. Sign up, create a repository, make a token, then pick the CLI, the Python SDK or curl.

No. The Free plan gives one repository and 10 GiB with no card.

Choosing an integration has a decision table. Short version: files in Git → CLI + transfer agent. Files from a pipeline → Python SDK. Files from CI → the GitHub Action or the shell recipes.

It ships configured for local development. Run cav config set api https://cavsnode.com once.

Depends entirely on your format. Formats with stable byte layouts (safetensors, Parquet, uncompressed TAR, disk images) dedup extremely well — often 90%+ on incremental changes. Solid archives and re-encoded media dedup poorly. See Deduplication explained.

Usually the transfer agent isn’t installed — cav doctor will say — or you’re shipping a solid archive. Ship a plain .tar instead of .tar.gz and let CAVS compress it: you keep the compression and gain near-total reuse on later pushes.

Physical — post-dedup, post-compression. Deduplication is a direct discount.

Yes. Bring Your Own S3 supports AWS S3, Cloudflare R2, Wasabi, Backblaze B2, MinIO and any S3-compatible endpoint. Your bytes, your credentials, your policies. CAVS holds only metadata — and doesn’t bill you for the bytes.

Can I move a repository between managed storage and BYOS?

Section titled “Can I move a repository between managed storage and BYOS?”

Not in place. storage_mode is fixed at creation; create a new repository with the target mode and re-push.

Not yet. Garbage collection currently coordinates rather than reclaims — unreferenced chunks are not deleted automatically. Plan capacity on what you’ve written. See Lifecycle & maintenance.

Per plan: 5 GiB (Free) → 1 TiB (Business). See Plans & quotas.

Managed storage: Cloudflare R2 in CAVS’s account. BYOS: your own bucket. Either way, transfers run against short-lived presigned URLs rather than through the API.

API tokens: SHA-256 hash only — the secret is shown once and can’t be recovered. BYOS credentials: AES-256-GCM encrypted at rest under a master key held outside the database, never returned by any API response. Passwords: never — Firebase handles authentication.

Its blast radius is bounded by design. Token scopes are a hard cap, and billing, audit reads, token management, storage-connection management and organization deletion are unreachable by any token scope. A leaked repo:write token can push and pull; it can’t change your plan, mint more tokens, read your audit trail or repoint your storage.

Still: revoke first, investigate second. API tokens.

No. Dedup is scoped to a repository’s namespace. Cross-tenant dedup would be a side channel on content.

Can I share one repository with someone outside my organization?

Section titled “Can I share one repository with someone outside my organization?”

Yes — a repository invitation. They get access to that repository only and never become an organization member. It also doesn’t consume a member slot.

On the Business plan.

Team and Business. Admin-only, with actor, IP and user agent. Note it returns the last 100 events and isn’t an archive — export it if you have a retention obligation.

Not published yet. The endpoint index is generated from the router and is the most complete reference available.

30 requests/second sustained, burst 60, keyed per token. Bulk transfers run against object storage and don’t consume that budget.

Python and TypeScript today. Go and .NET are on the roadmap. For anything else, plain HTTP is four calls to upload and one to download.

Why doesn’t client.artifacts.download(reference) work?

Section titled “Why doesn’t client.artifacts.download(reference) work?”

Logical-reference resolution needs a /resolve endpoint that isn’t deployed. Use an oid or an immutable @sha256: reference. The full list of not-yet-available features is in Choosing an integration.

Can I get notified when something is pushed?

Section titled “Can I get notified when something is pushed?”

Yes — webhooks, signed with HMAC-SHA256. Nine public event types.

Is there an MLflow / Kubeflow / Airflow integration?

Section titled “Is there an MLflow / Kubeflow / Airflow integration?”

On the roadmap, not built. Both SDKs work fine inside any of those today.

Free $0, Developer $19/mo, Team $99/mo, Business contact sales. Full limits in Plans & quotas.

On a paid plan, overage is metered per GB and nothing is cut off. On Free the limits are hard and the write is refused with 402. You get storage.quota.warning before either.

No. Your provider bills you directly; CAVS reports the figures but doesn’t charge for them.

OWNER and BILLING only. ADMIN cannot — administering the platform and spending money are deliberately separate. No API token scope reaches billing either.

The engine is open source and the platform is designed to be run yourself — see Self-hosting & operations. Licensing for the managed platform’s code is a separate conversation; contact the maintainers.

Area Status
Service accounts / cavs_sk_ keys not deployed — use cavs_ci_ tokens
Runs API not deployed — use /graph/edges
GET /resolve not deployed
GET /artifacts/{id} (unscoped) not deployed — repository-scoped exists
POST …/lfs/verify not routed
GC / repack reclaiming bytes coordinator only
MLflow, Kubeflow, Airflow roadmap
Go / .NET SDKs roadmap
Unity / Unreal plugins untested reference implementations
Azure Blob / native GCS BYOS roadmap
OpenAPI document not published

What’s the most important operational caveat?

Section titled “What’s the most important operational caveat?”

A git push can succeed while CAVS never registers the objects. The agent reports objects complete during ingest and finalizes at the end; if finalize fails — most often a 429, which the agent doesn’t retry — Git is satisfied and the Hub isn’t. Verify by checking the generation bumped, not the push exit code. Details in Troubleshooting.