-
Notifications
You must be signed in to change notification settings - Fork 0
02 prereqs operator
From here on, this guide speaks to you, the person who will run the vibedata CLI and
deploy Studio. If you forwarded any of the admin request pages, you can start this page
before those requests come back — nothing here depends on them, except the one kubeconfig
noted below.
By the end of this page you have a working vibedata binary on your PATH and, if you
chose Local Docker, an authenticated gh CLI session.
Applies to: Local Docker. Skip if you chose Kubernetes on Azure.
Install Docker Engine with the Compose plugin, so that docker compose works from your
shell. The CLI shells out to docker compose to bring Studio up; without the plugin,
vibedata install compose has nothing to drive.
Install the GitHub CLI, gh, as well. The sign-in section below uses it, and the install
depends on it. You do not need the Azure CLI on your machine for any data platform: Studio
carries az inside its own container, and the Azure sign-in section below runs it there.
Three more things the installer checks before it pulls any image, each of which stops the install if it is not true:
- Docker must be running, not only installed. If the daemon is not up, the install stops and tells you to start Docker Desktop and wait for the whale icon to stop animating.
-
Port
5173must be free. This is the port Studio's web interface uses. It is also Vite's default port, so another local development server is the usual cause. Stop whatever holds the port, then run the install again. -
Docker needs enough CPU and memory if you plan to use an observability flag on
03-deploy-docker. Installing with
--with-observabilityor--full-observabilitystops if Docker Desktop is sized too small; raise the limits under Settings > Resources, or install without the flag.
Applies to: Kubernetes on Azure. Skip if you chose Local Docker.
Install kubectl and helm, and have your kubeconfig for the AKS cluster ready — the
AKS_KUBECONFIG value from
01d-prereqs-azure-infra. The CLI checks for both tools on
PATH before it will proceed, and exits with a clear error naming whichever one it
cannot find.
vibedata install kubernetes asks you to confirm the kubeconfig path, even when you pass
--kube-context. If you script the install, pipe a newline into it — yes "" | vibedata install kubernetes … — because a closed input stream makes the prompt read as Aborted
instead of accepting the default.
Run the public installer:
curl -fsSL https://github.com/accelerate-data/vibedata-official/releases/latest/download/install.sh | shIt detects your platform and downloads the matching binary from the latest
vibedata-official release, into ~/.local/bin by default — set VIBEDATA_INSTALL_DIR
before running it to install somewhere else. Binaries are published for darwin-arm64,
linux-arm64, linux-x86_64, and windows-x86_64.
On an Intel Mac, the installer still downloads the darwin-arm64 binary — it maps every
macOS host to that one asset, and no Intel build is published. The download and the
chmod +x both succeed, so the first sign of trouble is vibedata version failing to run.
Use an Apple Silicon Mac, a Linux host, or Windows instead.
On Windows, the installer above needs a POSIX shell and does not run there. Download
vibedata-windows-x86_64.exe directly from the vibedata-official release page instead,
rename it to vibedata.exe, and put it on your PATH — the POSIX installer above renames
the downloaded asset to plain vibedata for the same reason, so vibedata version below
resolves; without the rename, Windows will not find a vibedata command on PATH.
There is no Homebrew formula for the vibedata CLI. The accelerate-data/homebrew-tap
repository describes itself as a tap for the VibeData CLI, but the only formula it
publishes is ad-migration. brew install vibedata fails — use the installer above
instead.
Confirm the install:
vibedata versionIf your shell reports vibedata: command not found, the install directory
(~/.local/bin, unless you overrode it) is not on your PATH yet — add it and open a new
shell.
To check whether your binary is current, compare vibedata version against the
vibedata-official releases, and only those:
gh release list --repo accelerate-data/vibedata-official --limit 1CLI releases carry a v prefix, such as v0.1.26. Do not compare against any other
repository's release list — they run on their own numbering, so a higher number elsewhere
does not mean your CLI is out of date.
Applies to: Local Docker with Microsoft Fabric. Skip if your data platform is DuckDB or MotherDuck, or your deployment style is Kubernetes on Azure.
Under Local Docker, Studio acts on Microsoft Fabric using the Azure CLI session inside its own
api container. That session is how Studio acquires tokens for Fabric.
It is also the identity Studio's workspace read check runs as. That check does run here, so
this identity needs at least Viewer access on the domain's workspace — without it the domain
lands Failed at binding validation. What is skipped under Local Docker is the separate
service-principal grant check described in
01b-prereqs-fabric-admin step 5, and the per-user connect check,
neither of which applies when there is no signed-in Studio user.
Sign in inside Studio's api container, not on this machine, and do it after you
deploy. Studio's backend runs inside that container and calls az there. The container
reads its Azure sign-in state from /data/azure-config, which is Studio's own
azure-config folder under DATA_DIR — not from your ~/.azure. Nothing copies one into
the other, so an az login run in your own shell never reaches Studio.
This means the step has to wait until 03-deploy-docker has brought the containers up. Once it has, run:
docker compose -f ~/.vibedata/studio/docker-compose.yml exec -it api az login --use-device-codeUse --use-device-code. The container has no browser, so the normal interactive sign-in
cannot complete there. If you set a non-default DATA_DIR, point -f at that path instead.
Confirm the container is signed in:
docker compose -f ~/.vibedata/studio/docker-compose.yml exec api az account show --output tableIf you have several Azure subscriptions, pick the right one without signing in again:
docker compose -f ~/.vibedata/studio/docker-compose.yml exec -it api az account set --subscription <subscription-id>Tell your Fabric workspace administrator which identity this is, so they can grant it access to the domain's workspace.
If you sign in on this machine instead of inside the container, Studio cannot see the
session at all. The sign-in succeeds and looks correct, but Studio acquires no token. That
appears as a token failure, not as a permissions problem — so run the az account show command
above before you go looking for a missing workspace grant. See
90-troubleshooting.
Applies to: Local Docker. Skip if you chose Kubernetes on Azure — Kubernetes on Azure signs users in through Microsoft Entra SSO instead, and
vibedata install kubernetesnever asks for aghsession.
Local Docker Studio has no separate sign-in step of its own: it takes your identity from a
GitHub CLI session. vibedata install compose makes sure Studio's api container has one.
Sign in before you install:
gh auth login --scopes repo,read:org,workflowWhat this step actually does. It is a bridge, not a simple check. Studio's GitHub work
happens inside the api container, so the installer:
- Looks for a GitHub token inside the container first. If one is there, the step passes and your own machine is never consulted.
- Otherwise reads the token from your machine's
ghsession. Only a failure here produces the "not signed in" block. - Imports that token into the container, which keeps its own copy in the
gh-configfolder underDATA_DIR. - Configures git inside the container.
Two consequences worth knowing. First, a later install can pass with no gh session on
your machine at all, because step 1 finds the container's stored copy — so a green install
is not proof that your own session is still valid. Second, steps 3 and 4 can fail on their
own, and all three failures report the same MISSING_CLI_AUTH reason; read the message, not
just the reason, because "signed in on your machine" does not rule these out.
Because Studio uses the token stored in the container, replacing the token on your machine changes nothing until a later install imports the new one.
The installer does not inspect which scopes your token
carries, and it does not check whether you belong to any GitHub organisation. But Studio's
GitHub features do need the scopes above: repo for reading and pushing to your
repositories, read:org for listing the organisations you belong to, workflow for pushing
the CI files Studio seeds into a domain repository. A token missing one of these fails
quietly rather than with an error — for example, a repository dropdown that silently shows
only your personal repos — so grant all three now to avoid a confusing partial failure
later. A personal GitHub account with no organisation membership at all is enough to
complete this step and sign in to Studio.
This check runs at the end of the install, not before it. Compose brings your
containers up first; the GitHub session check runs only after they report ready, so a
blocked install still leaves Studio's containers running — it is not a pre-flight gate.
If it blocks, the CLI exits with code 3 (BLOCKED) and prints no service URLs — do
not go looking for them. Sign in with gh, then run vibedata install compose again.
Bringing up already-running containers is safe, so the whole flow — pull, up, readiness —
repeats without harm, and the service URLs print once the check passes.
Applies to: Local Docker. Skip if you chose Kubernetes on Azure — there, durable storage is the Azure Files share from 01d-prereqs-azure-infra, not a local directory.
vibedata install compose writes durable state to a directory on your machine —
DATA_DIR. It defaults to ~/.vibedata/studio, and you can point it elsewhere by setting
the DATA_DIR environment variable before you run the CLI. Make sure whichever path you
use is writable by your user.
Treat this directory as the durable part of your install: the containers themselves are
replaceable, but DATA_DIR is not — back it up the way you would any other data you cannot
regenerate.
Replaceable does not mean replaced every time. vibedata install compose and vibedata update compose both run docker compose up, which recreates a container only when its
image or its rendered configuration changed. Re-running the install with nothing changed
leaves your running containers as they are. If you hand-edit
~/.vibedata/studio/docker-compose.yml or .env and re-run the install, the CLI rewrites
those files from its own stored state, so your edit does not survive and no container is
replaced on its account.
Whichever deployment style you chose, the CLI keeps a small local directory of its own at
this same default path, ~/.vibedata/studio: vibedata login and vibedata logout both
resolve it unconditionally, before looking at which deployment style or Studio instance you
are signing in to. This is separate from Studio's own durable storage — on Kubernetes on
Azure it holds nothing but this record, not any Studio data.
The credential itself is not in that directory. The file it writes,
credentials.json, records only which keyring entry to look in. The credential is stored
in your operating system's keyring — Keychain on macOS, Credential Manager on Windows, a
Secret Service provider on Linux.
Two things follow from that:
-
A usable keyring is a prerequisite for
vibedata login, on both deployment styles. A headless Linux host with no Secret Service running has none, andvibedata loginstops with a message asking you to unlock or configure the OS keyring. Check before you need it:vibedata auth keyring-check
It prints the backend it found and exits
0when the keyring works. -
Copying
~/.vibedata/studioto another machine does not move your CLI credential. It moves only the record pointing at a keyring entry that does not exist there. Nothing fails at copy time; the credential is simply missing at first use. Runvibedata loginagain on the new machine.
- Overview
- 01a · Microsoft Entra admin
- 01b · Microsoft Fabric admin
- 01c · GitHub organisation owner
- 01d · Azure infrastructure owner
- 01e · MotherDuck organisation admin
- 02 · Operator setup
- 03 · Deploy: Local Docker
- 04 · Deploy: Kubernetes on Azure
- 05 · Configure the organisation
- 06 · Create your first domain
- 07 · Confirm you are done
- 08 · Domain contributor
- 09 · Worked example
- 90 · Troubleshooting