Configuration
ev.yaml
ev.yaml is created by ev init at the root of your git repository and should be checked into version control. It defines the project boundary and provides default context so you don't have to pass flags on every command.
Minimal Config
That is all you need for a single-app project. ev treats the repo root as the one app.
All Fields
| Field | Type | Required | Description |
|---|---|---|---|
project | string | Yes | Project ID assigned by the ev server during ev init. |
default_env | string | No | Environment used when no environment is specified. Defaults to dev. |
apps | map | No | Named apps for monorepos. Each entry has a path field. |
backend | object | No | Storage backend configuration (type, region, prefix). |
environments | map | No | Per-environment backend overrides. |
Monorepo Config
When you run ev commands from packages/backend/, ev automatically resolves the app to backend. You can override with colon syntax:
Backend Config
See Storage Backends for all backend types and options.
Per-Environment Backend Override
Keep dev on ev's encrypted storage while prod uses AWS Secrets Manager:
Context Resolution
When you run an ev command, it resolves context in this order:
- Explicit argument —
ev push backend:stagingsets app tobackend, env tostaging - Partial argument —
ev push stagingsets env tostaging, app from cwd orev.yaml - Working directory — if cwd matches an app
pathinev.yaml, that app is used default_env— fromev.yaml- Global default —
dev
Local Files
ev stores per-user state in ~/.config/ev/:
| File | Contents |
|---|---|
~/.config/ev/auth.json | Auth token from ev login |
~/.config/ev/keys.json | Your local keypair (Curve25519 public + private key) |
~/.config/ev/config.json | API URL and other client settings |
These files are created automatically and should never be checked into version control. ev adds them to .gitignore during ev init.