FAQ
The product
Section titled “The product”What is CAVS Node, in one sentence?
Section titled “What is CAVS Node, in one sentence?”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.
How is it different from Git LFS?
Section titled “How is it different from Git LFS?”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.
Does it replace GitHub or GitLab?
Section titled “Does it replace GitHub or GitLab?”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.
Do I have to use Git?
Section titled “Do I have to use Git?”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.
Is it open source?
Section titled “Is it open source?”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.
Getting started
Section titled “Getting started”What’s the fastest way to try it?
Section titled “What’s the fastest way to try it?”Quickstart — about five minutes. Sign up, create a repository, make
a token, then pick the CLI, the Python SDK or curl.
Do I need a credit card?
Section titled “Do I need a credit card?”No. The Free plan gives one repository and 10 GiB with no card.
Which integration should I use?
Section titled “Which integration should I use?”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.
Why does the CLI point at localhost?
Section titled “Why does the CLI point at localhost?”It ships configured for local development. Run
cav config set api https://cavsnode.com once.
Storage and deduplication
Section titled “Storage and deduplication”How much will it actually save?
Section titled “How much will it actually save?”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.
Why is my dedup ratio near zero?
Section titled “Why is my dedup ratio near zero?”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.
Am I billed on logical or physical bytes?
Section titled “Am I billed on logical or physical bytes?”Physical — post-dedup, post-compression. Deduplication is a direct discount.
Can I keep the data in my own bucket?
Section titled “Can I keep the data in my own bucket?”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.
Does deleting free space?
Section titled “Does deleting free space?”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.
Is there a file size limit?
Section titled “Is there a file size limit?”Per plan: 5 GiB (Free) → 1 TiB (Business). See Plans & quotas.
Security
Section titled “Security”Where do my bytes live?
Section titled “Where do my bytes live?”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.
How are credentials stored?
Section titled “How are credentials stored?”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.
Can a leaked CI token do real damage?
Section titled “Can a leaked CI token do real damage?”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.
Is data deduplicated across tenants?
Section titled “Is data deduplicated across tenants?”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.
Is there SSO?
Section titled “Is there SSO?”On the Business plan.
Is there an audit log?
Section titled “Is there an audit log?”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.
API and integrations
Section titled “API and integrations”Is there an OpenAPI spec?
Section titled “Is there an OpenAPI spec?”Not published yet. The endpoint index is generated from the router and is the most complete reference available.
Are there rate limits?
Section titled “Are there rate limits?”30 requests/second sustained, burst 60, keyed per token. Bulk transfers run against object storage and don’t consume that budget.
Which languages have SDKs?
Section titled “Which languages have SDKs?”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.
Billing
Section titled “Billing”What does it cost?
Section titled “What does it cost?”Free $0, Developer $19/mo, Team $99/mo, Business contact sales. Full limits in Plans & quotas.
What happens when I exceed a limit?
Section titled “What happens when I exceed a limit?”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.
Do I pay for BYOS bytes?
Section titled “Do I pay for BYOS bytes?”No. Your provider bills you directly; CAVS reports the figures but doesn’t charge for them.
Who can change the plan?
Section titled “Who can change the plan?”OWNER and BILLING only. ADMIN cannot — administering the platform and spending
money are deliberately separate. No API token scope reaches billing either.
Can I self-host?
Section titled “Can I self-host?”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.
Limits and known gaps
Section titled “Limits and known gaps”What isn’t built yet?
Section titled “What isn’t built yet?”| 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.
- Troubleshooting — symptom-first diagnosis.
- Glossary — terminology.
- Quickstart — if you’re still reading instead of trying it.

