Teams, projects, and roles
The getting-started and tour guides
run everything locally against cryo dev. This page is the other half:
using a shared cryosleep server with your team. It covers signing in,
how work is organised into orgs and projects, and who can do what.
The shape
Section titled “The shape”Two nouns hold everything:
- An org is your team’s tenant. It owns projects, members, an agent fleet, and its own encrypted secrets. Billing and isolation are per org: one org can never see another’s runs, secrets, or members.
- A project is a workspace inside an org, usually one per service
or repo. Runs, secrets, schedules, the event bus, and the webhook
connection all live at the project level. A run id spells out both:
myorg:api:run-3xKq….
You belong to one or more orgs, with a role in each (below), plus optional grants on individual projects.
Signing in
Section titled “Signing in”Get a personal access token from the web UI (sign in, then Settings → Tokens), then point the CLI at the server:
cryo login https://cryo.example.com --token cspat_…That verifies the token, resolves your org and project from your
memberships, and writes config.toml. From then on every command
targets that server; override per command with --org / --project
or $CRYOSLEEP_ORG / $CRYOSLEEP_PROJECT. cryo where shows the
current target, cryo config show the resolved settings.
Projects
Section titled “Projects”List the projects you can see, and create one (org owner or admin):
cryo project lscryo project create api --name "API service"cryo project create web --name "Web app"Submit work to a specific project with --project; the run id it
prints is fully qualified, so you can paste it straight back into any
run command:
run=$(cryo submit ./pipeline.yaml --project api)cryo status "$run"cryo logs "$run" --followDelete a project (and its scoped state) with cryo project rm <slug>;
it refuses while runs are executing.
Members and roles
Section titled “Members and roles”Every membership carries one of four roles. They’re ranked, so a higher role includes everything below it:
| Role | Can |
|---|---|
viewer |
read: list and watch runs, read logs, list secret names |
member |
the above, plus run workflows (submit, cancel, signal) |
admin |
the above, plus manage members, secrets, schedules, webhooks, and caps |
owner |
the above, plus delete the project and change ownership; an org owner also mints agent tokens for the org and its projects |
Roles apply at two levels, and your effective role on a project is the higher of the two:
- An org-wide role (
cryo org members) applies to every project in the org. - A project grant (
cryo project members) admits someone to just that one project, with no org-wide access. Use it to give a contractormemberonwebwithout letting them seeapi. A grant stops atadmin;owneris an org-level role only.
Add people by email (both commands create the user if the email is new, so there’s no separate invite step):
# Org-wide: a teammate who works across all projectscryo org members add dana@example.com --role member
# Project-scoped: a contractor on one project, read-only on nothing elsecryo project members add sam@example.com --role member --project webcryo project members add sam@example.com --role viewer --project apicryo org members ls and cryo project members ls list current
members (admin-gated). The org’s last owner can’t be demoted or
removed, so an org can’t be left ownerless.
When a permission check fails, the error says why: you don't have access to \myorg/api`, or this needs the `member` role on
`myorg/web`; you have `viewer``. Ask an org or project admin to
grant you with the commands above.
What’s project-scoped
Section titled “What’s project-scoped”These all belong to a project and follow the same role rules:
- Secrets - encrypted config, injected into jobs.
- Schedules - recurring runs.
- Events and handlers - the project bus.
- The webhook connection - one endpoint per project, serving as many repos as you point at it.
Agents are matched to work by capability, and their token sets how
wide they reach: an unscoped token is a shared fleet that claims any
org’s work; a token scoped to an org claims that org’s projects; a
token scoped to org/project claims just that one. See
deploying agents.