Skip to content

ov status

ov status is the one-shot “where am I?” command. It prints the full resolution of the context the CLI is about to use, plus a preflight check against the server that the resolved environment actually exists.

Use it whenever a command gives an unexpected result, or you’ve opened a new terminal and want to confirm the ambient state before running anything destructive.


Terminal window
ov status

Example output:

API: https://api.opaquevault.com
App: my-saas
Env: production
Source: config-default
Env OK: yes
FlagDescription
--app <slug>Override the app slug for this check (without changing the config default)
--env <slug>Override the env slug for this check (without changing the config default)

  • API — the server endpoint the CLI will talk to. Usually https://api.opaquevault.com; self-hosted deployments point this elsewhere via ~/.config/ov/config.toml.
  • User — the email on the API key currently authenticated. (not logged in) means you need ov auth login first.
  • App — the app slug that will be used for secret / env / run commands.
  • Env — the environment slug within that app.
  • Source — where the app/env came from. See Resolution sources below.
  • Env OKyes if the server knows about the resolved env; no if the env doesn’t exist. If no, ov status prints the full remediation hint right below (the same message you’d see from ov secret set or ov run).

The CLI resolves (app, env) through a fixed priority chain. ov status reports whichever rung won:

  1. flag — you passed --app / --env on the command line (or the checks were done for you by another command). Always wins.
  2. .ov.yaml — an .ov.yaml file was found by walking up from the current directory. Source also prints the absolute path to the file that supplied the value.
  3. config-default — your global default from ov app use / ov env use, stored in ~/.config/ov/config.toml.
  4. hard-default — the built-in fallback (default app, production env). Usually only seen on a fresh account with no ov app use call yet.

Means the resolved env doesn’t exist on the server. Most common cause: fresh app created without --with-env. ov status prints the fix inline:

environment "production" does not exist in app "my-saas".
Create it with:
ov env create production --app my-saas
Or pick an existing env:
ov env list --app my-saas
(then re-run with --env <slug>)

“User: (not logged in — run ‘ov auth login’)”

Section titled ““User: (not logged in — run ‘ov auth login’)””

No API key configured. Run ov auth login.

”Source: .ov.yaml (/path/to/.ov.yaml)” when you didn’t expect a project config

Section titled “”Source: .ov.yaml (/path/to/.ov.yaml)” when you didn’t expect a project config”

A .ov.yaml somewhere up the directory tree is overriding your global default. If that’s not what you want, either edit/remove the file or pass --app / --env explicitly for the commands you’re running in that tree.


  • ov app — manage apps (ov app use sets the config default)
  • .ov.yaml — project-local context file
  • ov run — uses the same resolution chain as ov status