Skip to content

Organizations & members

An organization is the ownership and billing boundary. It owns repositories, members, API tokens, storage connections, webhooks, storage groups and the subscription. Everything you store belongs to exactly one organization.

  1. Sign in at cavsnode.com. On first sign-in the onboarding flow offers to create your first organization.

  2. Pick a name and a slug. The slug is URL-safe, unique platform-wide, and becomes the first half of every repository reference — acme-ai/vision-models. Choose carefully; renaming it changes every reference your team has written down.

  3. The organization starts on the Free plan. Upgrade from Settings → Billing when you need more — see Plans & quotas.

From the API
curl -sS -X POST https://cavsnode.com/api/v1/organizations \
-H "Authorization: Bearer $CAVS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Acme AI", "slug": "acme-ai"}'

The creator becomes OWNER.

Every member holds exactly one organization role. This is the base grant; a repository collaborator override can raise or lower it for a single repository.

Role In one line
OWNER Everything, including deleting the organization.
ADMIN Everything except deleting the organization and touching billing.
DEVELOPER Create/read/update repositories, push and pull, manage tokens, read usage.
VIEWER Read repositories and pull. No writes.
BILLING Billing and usage only. No repository access.

The complete permission matrix is in Roles & permissions.

  1. Go to Settings → Members → Invite.

  2. Enter the person’s email and the role they should hold. They receive an email with an accept link.

  3. They sign in (creating an account if needed) and accept. The invitation is single-use and the link can be regenerated if the email is lost.

From the API
curl -sS -X POST "https://cavsnode.com/api/v1/organizations/acme-ai/invitations" \
-H "Authorization: Bearer $CAVS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "role": "DEVELOPER"}'

Related endpoints: list invitations, regenerate a link, revoke an invitation — see Organizations API.

  • Change a roleSettings → Members, or PATCH /organizations/{org}/members/{userID}.
  • Remove a memberDELETE /organizations/{org}/members/{userID}. Their personal access tokens for this organization stop working immediately.
  • Leave an organizationPOST /organizations/{org}/leave. An OWNER must transfer ownership first if they are the last one.
Plan Max members
Free 2
Developer 5
Team 25
Business unlimited

Exceeding the limit returns 402 quota_exceeded on the invite.

Once you have repositories, the organization dashboard aggregates them:

View What it shows
Overview Storage, transfer, repository and member counts; recent activity.
Repositories Every repository with its size, dedup ratio and last push.
Storage The storage explorer: usage over time, largest repositories, storage groups.
Registry Every artifact across every repository, filterable by type and name.
Activity The combined event feed.
Settings Members, invitations, tokens, storage connections, storage groups, webhooks, billing, audit log.

The corresponding API calls:

Terminal window
# Aggregated dashboard payload
curl -sS "https://cavsnode.com/api/v1/organizations/acme-ai/dashboard" \
-H "Authorization: Bearer $CAVS_TOKEN"
# Usage totals and a time series
curl -sS "https://cavsnode.com/api/v1/organizations/acme-ai/usage" \
-H "Authorization: Bearer $CAVS_TOKEN"
curl -sS "https://cavsnode.com/api/v1/organizations/acme-ai/usage/series?days=90" \
-H "Authorization: Bearer $CAVS_TOKEN"
# The artifact registry
curl -sS "https://cavsnode.com/api/v1/organizations/acme-ai/artifacts?sort=size&limit=20" \
-H "Authorization: Bearer $CAVS_TOKEN"

From the CLI:

Terminal window
cav storage --org acme-ai
cav artifacts --org acme-ai --type model

OWNER only, from Settings → Danger zone, or DELETE /organizations/{org}.