Skip to main content

revos init

Scaffold a new RevOS data engineering project.

Usage

revos init [destination]

The destination can be a project name, relative path, or absolute path. If omitted, the current directory name is used as the project name.

Requires: revos auth login first.

Flags

FlagDescription
-y, --yesNon-interactive mode — skip confirmation prompts
--dry-runPreview what would be created without making changes

What It Does

  1. Organization selection — Fetches your organizations and prompts you to select one (auto-selects if only one). The selected org must have a BigQuery dataset configured.
  2. Service account provisioning — Creates a GCP service account for your org (idempotent) and writes the key to ~/.revos/{project}-gsa-creds.json.
  3. Directory structure — Creates a medallion-architecture dbt project:
    project/
    ├── .devcontainer/
    ├── .claude/skills/
    │ ├── explore-lakehouse/
    │ └── create-semantic-model/
    ├── dbt/models/
    │ ├── bronze/
    │ ├── silver/
    │ └── gold/
    └── semantic/
  4. Dev Container — Generates .devcontainer/devcontainer.json and Dockerfile with Python 3.13, Node.js, Google Cloud CLI, and dbt-bigquery pre-installed. The container mounts the service account key and RevOS CLI credentials automatically.
  5. dbt configuration — Generates dbt/profiles.yml and dbt/dbt_project.yml pre-configured for BigQuery with medallion materialization settings.
  6. Standard files.gitignore and README.md.
  7. AI companion filesCLAUDE.md, AGENTS.md, and .claude/skills/ with skills for exploring your data lakehouse and creating Cube.dev semantic models.
  8. Semantic layer — Creates semantic/ for Cube.dev overlay definitions.

Example

# Scaffold into a new directory
revos init my-data-project
cd my-data-project

# Preview without creating anything
revos init my-data-project --dry-run

# Non-interactive mode
revos init my-data-project --yes

After scaffolding, open the project in VS Code and click Reopen in Container to start developing.

Organization Binding

During revos init, you select an organization. That choice is baked into the scaffolded project — every generated file is configured for that specific org. There is no post-init way to rebind the project to a different organization.

Where the Org Is Stored

FileSettingPurpose
.devcontainer/devcontainer.jsoncontainerEnv.REVOS_ORG_IDAll CLI commands inside the container target this org
.devcontainer/devcontainer.jsoncontainerEnv.REVOS_BQ_DATASETBigQuery dataset belonging to the org
.devcontainer/devcontainer.jsoncontainerEnv.GOOGLE_CLOUD_PROJECTGCP project associated with the org
~/.revos/<project>-gsa-creds.jsonMounted service-account keyGCP credentials scoped to the org's resources
dbt/profiles.ymlproject and datasetBigQuery target generated from the org's configuration

Implications

  • revos overlays push always targets the bound org — the REVOS_ORG_ID env var is set automatically inside the container.
  • Different org = separate project. If you need to work with another organization, scaffold a new project with revos init.
  • Sharing a project folder across orgs won't work without re-scaffolding, because the service-account key, dbt profile, and container environment all reference the original org.
tip

To see which org you are currently targeting, run revos org current inside the Dev Container.

Next Steps

  • Concepts — understand how Projects and Organizations relate