Skip to main content
Updated May 10, 2026 raff configure walks you through writing a YAML config at ~/.raff/config.yaml (%USERPROFILE%\.raff\config.yaml on Windows). The CLI reads this on every command unless overridden by environment variables or per-command flags.

Authenticating with Raff

To use raff, you need an API key. Generate one in the dashboard at rafftechnologies.com under Team & Projects → API Keys. Run the configure command to set up a profile:
You’ll be prompted for three fields, each with the existing value as the default (just press Enter to keep it):
When you finish, you’ll see:
The active profile becomes the one you just configured. Subsequent raff commands read credentials from this file.
configure does not currently validate the key against the API — it just saves to disk. The first real call (e.g. raff project list) will surface an auth error if the key is wrong.

Switching between multiple profiles

raff supports multiple profiles in the same config file so you can keep separate keys (e.g. staging vs production):
Other commands (vm list, vpc list, …) do not take a --profile flag — they always use whichever profile is set as current-profile in ~/.raff/config.yaml. To use a non-active profile for a single command, override with environment variables:
Or with command-line flags:

Configuring Default Values

The raff configuration file stores your API key and default values for command flags. The file is created automatically the first time you run raff configure. The file ends up looking like:
You can edit it directly if you prefer — current-profile selects which profile every command (other than configure) uses.

Authentication precedence

Every command resolves credentials in this exact order:
  1. CLI flag--api-key, --api-url, --project-id on the command line
  2. Environment variableRAFF_API_KEY, RAFF_API_URL, RAFF_PROJECT_ID
  3. Config file — the profile named in current-profile in ~/.raff/config.yaml
If a credential isn’t set in any of those, the command fails with a clear error. The CLI never prompts for credentials mid-command — that’s a one-time configure thing.

CI/CD without a config file

For CI/CD where there’s no interactive shell, env vars work without configuring anything:

Verify your setup

If this returns a project list, you’re authenticated correctly. If it errors with 401 Unauthorized, double-check the API key. If it errors with 403 Forbidden, the key is valid but doesn’t have account.projects.view permission — see the role assigned to the key on the API Keys page.

Generate an API key

Get the key you need before configuring.

VM commands

Start using the CLI.

Roles, scopes, and the Owner

Why you may see a 403 even with a valid key.
Last modified on May 11, 2026