Concepts
Key terms used throughout RevOS and the CLI.
Organization
An Organization is the top-level tenant in RevOS. It owns:
- Data lake — BigQuery dataset where all project data lands
- Integrations — connected data sources and destinations
- Members — users and their roles
- Billing — subscription and usage tracking
Organizations are created and managed through the RevOS web UI. The CLI can list and switch between organizations you belong to — see Organizations.
Project
A Project is a local working directory scaffolded by revos init. It is bound to exactly one Organization and contains:
- dbt models — medallion-architecture SQL transformations (bronze / silver / gold)
- Semantic overlays — Cube.dev overlay definitions in
semantic/ - Dev Container config —
.devcontainer/with pre-installed tooling - Credentials — GCP service account key written to
~/.revos/{project}-gsa-creds.json
A Project is a developer's local view into the Organization's data platform.
Relationship
One Organization can have many Projects. Each Project points to exactly one Organization.
Organization (source of truth)
├── Project A (developer laptop)
├── Project B (CI runner)
└── Project C (another developer)
The Organization holds the canonical data, integrations, and configuration. Projects are local checkouts that read from and write to it.
Practical Implications
All CLI commands target the bound Organization
Every revos command run inside the Dev Container targets the bound Organization — overlays, tables, segments, integrations, and so on. The target org is determined by the REVOS_ORG_ID env var baked into the container config. Override it per-command with --org <id> or by setting REVOS_ORG_ID.
Where credentials live
- CLI auth token — stored globally by
revos auth login; shared across all Projects. - Service account key — per-Project, written to
~/.revos/{project}-gsa-creds.jsonduringrevos init. The Dev Container mounts this key automatically.
Switching organizations
Use revos org switch to change the active Organization for CLI commands. This does not rebind an existing Project — it only affects commands that rely on the global org context (e.g., revos tables list).
To work against a different Organization from within a Project, pass --org <id> or set REVOS_ORG_ID. See Organizations for details.