Multiple Targets
A single repo can manage multiple agents/environments. Each veris env create adds a target to veris.yaml. The target name is the backend environment name.
Set up multiple targets
# First agent — target name derived from --name slug + '-env'
veris env create --name "Billing Assistant" # → target: billing-assistant-env
# Second agent in the same repo
veris env create --name "Customer Support" # → target: customer-support-envAfter two creates, .veris/veris.yaml contains both targets:
version: "1.0"
billing-assistant-env:
services:
- name: postgres
actor:
channels:
- type: http
url: http://localhost:8008/chat
agent:
name: Billing Assistant
entry_point: uv run app
port: 8008
customer-support-env:
services:
- name: zendesk-support
dns_aliases:
- help.example.com
actor:
channels:
- type: email
email_address: support@ea.veris.ai
agent:
name: Customer Support
entry_point: uv run support
port: 8009Set the active target
Rather than passing --target on every command, set an active target once:
veris env targets set customer-support-envAfter this, all commands automatically use customer-support-env:
veris env push # pushes customer-support-env
veris run # runs customer-support-env
veris env vars set API_KEY=sk-... # for customer-support-env
veris env config push # uploads customer-support-env blockManage the active target
veris env targets get # show the active target
veris env targets set NAME # set the active target
veris env targets list # list all targets from veris.yaml
veris env targets clear # clear (revert to auto-detect)Override with --target
For one-off commands, pass --target directly instead of changing the active target:
veris env push --target billing-assistant-env
veris run --target customer-support-envAll veris env commands and veris run accept --target.
Per-target Dockerfile
Each target can specify a custom Dockerfile. If omitted, .veris/Dockerfile.sandbox is used.
customer-support-env:
dockerfile: .veris/Dockerfile.support
agent:
name: Customer Support
...Resolution order
| Priority | Source |
|---|---|
| 1 | --target flag |
| 2 | Active target (veris env targets set) |
| 3 | Auto-detect: sole target in veris.yaml |
| 4 | Error if ambiguous |
When only one target is defined, it’s always auto-detected — no --target or active target needed.
Cross-profile behavior
When you switch profiles (e.g. from dev to staging) and push, the CLI detects that the target exists on another profile and offers to create it on the current one.