Skip to main content
These commands cover lower-level operations and edge cases. Most users won’t need them day-to-day, but they’re invaluable for scripting, integrations, and debugging.

Sandboxes (duvo sandboxes)

Sandboxes are isolated file environments where you can stage files before starting a Job. Create a sandbox, upload files into it, then pass the sandbox ID when starting a Job with duvo runs start --sandbox <sandbox-id>.
duvo sandboxes create                              # create a new sandbox
duvo sandboxes files <sandbox-id>                  # list files in a sandbox
duvo sandboxes upload <sandbox-id> <file>          # upload a local file (max 10 MB)
duvo sandboxes prepare-upload-url <sandbox-id> \
  --path /workspace/data.csv                       # get a presigned URL for files over 10 MB
--path is the destination path inside the sandbox. After getting the URL, upload the file directly via HTTP.

Revision integrations (duvo revision-integrations)

Revision integrations control which integrations (Connections) are attached to a specific Revision of an Assignment, and let you pin particular Connection accounts to individual integration slots.
duvo revision-integrations list \
  --agent <agent-id> --revision <revision-id>             # list integrations on a Revision
duvo revision-integrations attach \
  --agent <agent-id> --revision <revision-id> \
  --integration <integration-id>                          # attach an integration (repeat --integration for multiple)
duvo revision-integrations remove <integration-id> \
  --agent <agent-id> --revision <revision-id> [-y]        # remove an integration from a Revision (prompts unless -y)
Use duvo integrations list to find integration IDs and duvo connections list to find Connection IDs.

Pinned Connections

Pin a specific Connection account to an integration slot so the Assignment always uses that account, regardless of who runs it.
duvo revision-integrations connections list \
  --agent <agent-id> --revision <revision-id> \
  --integration <integration-id>                          # list pinned Connections for a slot

duvo revision-integrations connections pin <connection-id> \
  --agent <agent-id> --revision <revision-id> \
  --integration <integration-id>                          # pin a Connection to a slot

duvo revision-integrations connections unpin <connection-id> \
  --agent <agent-id> --revision <revision-id> \
  --integration <integration-id> [-y]                     # unpin a Connection from a slot

Raw API access (duvo api)

Call any Duvo API endpoint directly. Use this when you need an endpoint that doesn’t have a dedicated duvo command yet, or when you want to inspect the raw API response.
duvo api GET /health
duvo api POST /v2/teams/{teamId}/runs --data '{"agent_id":"...","input":"..."}'
duvo api GET /v2/teams/{teamId}/agents --query 'limit=10'
The CLI authenticates the request using your active profile, so you don’t have to handle headers manually.

Deprecation notices

When the CLI detects that an API endpoint is deprecated, it prints a warning to stderr before the command output:
duvo: ⚠  GET /v1/old-endpoint is deprecated (sunset: 2026-08-01)
       See: https://docs.duvo.ai/api-reference/migration-guide
Notices include the sunset date (when the endpoint will stop working) and a link to the replacement or migration guide when available. Each (method, path) pair is only warned once per CLI invocation — repeated calls to the same endpoint won’t repeat the notice. If you see a deprecation notice, update your scripts to use the replacement endpoint shown in the linked documentation before the sunset date.