Skip to main content
Agents are the workflows your team has built in Duvo. The CLI lets you list, inspect, create, and update Agents, organize them into folders, and manage their Revisions (versioned Setup snapshots).

Listing and inspecting Agents

duvo agents list                        # list all Agents
duvo agents get <agent-id>              # get a specific Agent
Add --json to any command for machine-readable output.

Creating, updating, and deleting Agents

duvo agents create \
  --name "Invoice Processor" \
  --input "Process incoming invoices…" \
  --config path/to/config.json
# --input is optional (AOP text); --config is optional (full Setup)

duvo agents update <agent-id> \
  --name "New Name" \
  --enable-slack \
  --enable-microsoft-teams \
  --enable-agentic-memory
# --name renames the Agent
# --enable-slack / --enable-microsoft-teams toggle delivery (--disable-* to turn off)
# --enable-agentic-memory toggles agentic memory (--disable-agentic-memory to turn off)

duvo agents delete <agent-id>           # delete an Agent (prompts for confirmation)
duvo agents delete <agent-id> --yes     # delete without prompting

Starting Runs automatically

Agents can start Runs on their own — on a schedule, when an external event fires, or when a Case lands on a Queue. These live on their own page: see Scheduling and Triggers for duvo agents schedules, duvo agents triggers, and duvo agents case-triggers.

Organizing with folders

Group Agents into folders for easier navigation.
duvo agent-folders list                              # list all folders
duvo agent-folders create --name "Finance"           # create a top-level folder
duvo agent-folders create --name "EMEA" \
  --parent <folder-id>                               # create a nested folder
duvo agent-folders update <id> --name "New Name"    # rename a folder
duvo agent-folders update <id> --parent <id>        # move folder under a parent
duvo agent-folders update <id> --move-to-root       # move folder to root level
duvo agent-folders delete <id>                      # delete a folder (prompts for confirmation)
duvo agent-folders delete <id> --yes                # delete without prompting
duvo agent-folders move-agents \
  --agent <id> --agent <id> \
  --folder <folder-id>                              # move Agents into a folder
duvo agent-folders move-agents \
  --agent <id> \
  --to-root                                         # move Agent to root level

Revisions

A Revision is a versioned Setup snapshot of an Assignment. Each time you publish changes, a new Revision is created. Most workflows don’t need to manage Revisions directly — Runs always use the latest Revision automatically. Use these commands when you need to roll back, compare versions, or update a specific Revision in place.
duvo revisions list --agent <agent-id>                  # list all Revisions
duvo revisions get <revision-id> --agent <agent-id>     # get a specific Revision
duvo revisions create \
  --agent <agent-id> \
  --name "v2" \
  --config-file path/to/config.json                     # use `-` to read Setup from stdin
duvo revisions update <revision-id> \
  --config-file path/to/config.json                     # update an existing Revision's Setup

Memory

When an Agent has agentic memory enabled, it persists notes across Runs as memory files. Use these read-only commands to see what an Agent has remembered.
duvo agents memory files <agent-id>             # list the memory files stored for an Agent
duvo agents memory file-get <agent-id> <path>   # print the contents of one memory file
Toggle agentic memory itself with duvo agents update <agent-id> --enable-agentic-memory / --disable-agentic-memory.

Scripting examples

Create an Agent from a JSON config

AGENT_ID=$(duvo agents create \
  --name "Invoice Processor" \
  --config-file ./invoice-processor.json \
  --json | jq -r '.agent.id')

echo "Created Agent: $AGENT_ID"

Roll out a config change across multiple Agents

for AGENT in agent-1 agent-2 agent-3; do
  duvo revisions create \
    --agent "$AGENT" \
    --name "memory-enabled-$(date +%Y%m%d)" \
    --config-file ./shared-config.json
done
For commands that bind specific Connections or integrations to a Revision, see Advanced commands.