@duvoai/cli

中文文档
1.107.0发布于 2026/11/09ES Module近 30 天下载 1.1万

Command-line interface for the Duvo public API

原始使用文档
文档目录12 节
  1. Install
  2. Update
  3. Deprecation notices
  4. Quick start
  5. Authentication
  6. Workflows
  7. Start a run and stream messages
  8. Scripting with --json
  9. Set up connections for an agent revision
  10. Work with queues
  11. Human-in-the-loop responses
  12. Commands

@duvoai/cli

Command-line interface for the Duvo public API.

Install

npm install -g @duvoai/cli

Requires Node.js ≥ 22.22.0.

Or install the standalone binary (no Node.js required):

curl -fsSL https://duvo.ai/install-cli.sh | sh

Update

duvo update

duvo update detects how the CLI was installed and updates in place: npm installs run npm install -g @duvoai/cli@latest; the standalone binary downloads the latest release, verifies its checksum, and replaces itself. Use duvo update --check to see whether a newer version exists without installing it.

Deprecation notices

When the API marks an endpoint as deprecated, this CLI prints a short warning to stderr (with the sunset date and a link if the server provides them). Deprecation warnings always show — they don't affect stdout and can't be silenced.

Quick start

# 1. Log in (prompts for your API key and saves it to a profile)
duvo login --name default

# 2. Verify you're logged in
duvo whoami

# 3. Create your first agent (interactive)
duvo agents create

# ...or create one non-interactively with flags
duvo agents create --name "My agent" --input "What this agent should do"

# ...optionally pick the LLM the agent runs on
duvo agents create --name "My agent" --model claude-opus-4-7

# 4. Kick off a run and watch it complete
duvo runs start --agent <agent-id> --follow

# Switch an existing agent to a different model later
duvo agents set-model <agent-id> --model claude-opus-4-7

Grab an API key from your team settings: https://app.duvo.ai/settings/api-keys.

Authentication

You can keep multiple profiles and switch between them:

duvo login --name acme         # prompts for the API key
duvo login --name team-2       # prompts for the API key

duvo profiles list             # show saved profiles
duvo profiles use acme         # set the default profile
duvo --profile team-2 whoami   # one-off override for a single command

Workflows

Start a run and stream messages

# Start a run and tail messages until it completes
duvo runs start --agent <agent-id> --message "Process this week's reports" --follow

# Tail messages on a run that's already in progress
duvo runs messages <run-id> --follow

--follow polls for new messages every 2 s and exits when the run reaches a terminal state (completed, failed, stopped, or error). The final line always shows the run's status, e.g. Run completed.

To consume the stream programmatically, combine --follow --json: each new message is printed as a JSON object on its own line (NDJSON).

duvo runs messages <run-id> --follow --json | while IFS= read -r line; do
  echo "$line" | jq -r '.text_content // empty'
done

Scripting with --json

Every command accepts --json to emit the raw API response instead of a table or key/value view — useful for piping to jq.

# Start a run and capture the ID
RUN_ID=$(duvo runs start --agent "$AGENT_ID" --message "Go" --json | jq -r '.run.id')

# Follow messages on that run
duvo runs messages "$RUN_ID" --follow

Set up connections for an agent revision

Integrations represent slots in a revision that need live credentials (a connection). Use revision-integrations to see the slots and revision-integrations connections to pin your connections to them.

# 1. See the integration slots on a revision
duvo revision-integrations list --agent <agent-id> --revision <revision-id>
# INTEGRATION ID  TYPE   NAME   SLOT ID   CREATED
# 22222222-...    gmail  Gmail  slot-1    2026-04-15…

# 2. List your available connections
duvo connections list --type gmail

# 3. Pin a connection to the slot (use SLOT ID or INTEGRATION ID from step 1)
duvo revision-integrations connections pin <connection-id> \
  --agent <agent-id> --revision <revision-id> --integration slot-1

# 4. Verify
duvo revision-integrations connections list \
  --agent <agent-id> --revision <revision-id> --integration slot-1

Note: The --integration flag accepts either the SLOT ID or the INTEGRATION ID column from revision-integrations list.

Work with queues

# Create a queue
duvo queues create --name "support-tickets"

# On a team that has moved to the Automations workspace, a queue has to be
# created inside an automation — `duvo automations list` gives you the id
duvo queues create --name "support-tickets" --automation-id <automation-id>

# `duvo agents create` takes the same flag; without it a new agent gets an
# automation of its own rather than joining an existing one
duvo agents create --name "Ticket triage" --automation-id <automation-id>

# Create cases in bulk from a JSON file (up to 100)
duvo cases create --queue <queue-id> --from-file cases.json

# List pending cases
duvo cases list --queue <queue-id> --status pending

# Count pending cases without fetching Case rows
duvo cases list --queue <queue-id> --status pending --count-only

# Get case status counts for several queues in one call
duvo queues stats --queue-ids <id1>,<id2>,<id3>

# Bulk re-process pending cases on an agent
duvo cases bulk-reprocess --queue <queue-id> --agent <agent-id> \
  --ids <id1>,<id2>,<id3>

Human-in-the-loop responses

When a run pauses and asks a question, respond directly from the CLI:

duvo runs get <run-id>              # shows pending_human_request details
duvo runs respond <run-id>          # defaults to the current pending request

Commands

Clarity commands auto-detect process version where possible. The legacy v1 format uses a single analysis payload, while v2 is snapshot-based with current-process and transformation-proposal versions. Use v2-specific commands such as versions, current, proposal, compare, gaps, evidence, and readiness only for v2 processes.

Default output is summary-first and compact. JSON output also includes a compact summary block, while capture transcripts and media URLs are omitted unless --include-transcripts is passed.

duvo agents schedules list --all-users returns at most one response's worth of rows. On an agent with more schedules than that, the CLI warns that some are missing, and the rows it does return are the oldest by creation date.

CommandDescription
duvo loginStore an API key under a named profile
duvo logoutRemove a profile
duvo whoamiShow the active profile, authenticated user, team ID, and auth type
duvo profiles <subcmd>list, use, rename, remove
duvo updateUpdate the CLI to the latest version (--check to check without installing)
duvo agents listList agents on your team
duvo agents get <id>Show details for one agent
duvo agents createCreate a new agent (--model to pick the LLM)
duvo agents update <id>Update an agent's name or settings
duvo agents move <id> --to-team <id>Move an agent (and its connected workspace) to another team (--all-together, --dry-run, -y, --json)
duvo agents duplicate <id> (alias clone)Duplicate an Agent into a "Copy of …" Agent; Memory is not copied (--no-connections, --no-queue, --no-skills-files, --no-logins-secrets, --no-plugins, --no-aop, --json)
duvo agents modelsList the LLM models available for agents
duvo agents set-model <id> --model <model>Switch the LLM model used by an agent's latest revision
duvo agents eval-scores <agent-id>Show aggregate evaluation scores for an agent's jobs (--since, --scope)
duvo agents eval-rubrics <agent-id>List an agent's active evaluation rubrics (--build)
duvo agents schedules list <agent-id>List schedules you own for an agent (duvo agents schedules <agent-id> also works; --all-users lists every member's, with who created each one, for elevated team roles)
duvo agents schedules create <agent-id> --frequency <f> --timezone <tz>Create a schedule for an agent (--time, --day, --day-of-month, --cron)
duvo agents schedules update <agent-id> <schedule-id>Update a schedule (--enable/--disable, --frequency, --time, --clear-*, ...)
duvo agents schedules delete <agent-id> <schedule-id>Delete a schedule
duvo agents case-triggers list <agent-id>List case triggers configured for an agent
duvo agents case-triggers create <agent-id> --queue <id>Create a case trigger for an agent
duvo agents case-triggers get <agent-id> <trigger-id>Get a case trigger by ID
duvo agents case-triggers update <agent-id> <trigger-id>Update a case trigger (--enable / --disable, --queue, --concurrency)
duvo agents case-triggers delete <agent-id> <trigger-id>Delete a case trigger
duvo agents triggers list <agent-id>List the event triggers you own on an agent
duvo agents triggers types <agent-id>List the event trigger types available for an agent
duvo agents triggers set <agent-id> --integration <slug> --trigger-type <type>Create or update an event trigger (--filter-config, --disabled to pause it)
duvo agents triggers delete <agent-id> <trigger-id>Delete an event trigger and its filter config (-y, --json)
duvo agents memory files <agent-id>List an agent's memory files (duvo agents memory <agent-id> also works)
duvo agents memory file-get <agent-id> <path>Print the contents of one memory file (streams to stdout)
duvo agent-folders listList agent folders for your team
duvo agent-folders createCreate an agent folder
duvo agent-folders update <id>Rename or move an agent folder
duvo agent-folders delete <id>Delete an agent folder
duvo agent-folders move-agentsMove agents into a folder or to root
duvo automations listList automations for your team
duvo automations get <id>Get an automation by ID
duvo automations create --name <name>Create an automation (its first agent is created alongside it)
duvo automations rename <id> --name <name>Rename an automation
duvo automations duplicate <id> (alias clone)Duplicate an automation into a "Copy of …" automation from its live agents, queues and routing; your triggers and schedules are copied switched off (--json)
duvo automations delete <id>Delete an automation (its agents and queues stop dispatching)
duvo automations current <id>Show what an automation is set up to do right now (agents, queues, triggers, schedules)
duvo automations flow <id>Show an automation's current flow graph (agents, queues, handovers)
duvo automations readiness <id>Show what still has to be set up before an automation can run on real work
duvo automations dashboard-data <id>Show a Module's dashboard figures, computed as the dashboards compute them (--dashboard, --range, --time-zone)
duvo automations roles <id>List an automation's process roles and who holds them
duvo automations add-member <id> --email <email> --role <key>Put someone in a process role (emails them; asks first unless --yes)
duvo automations policy <id>Show an automation's whole Policy, the same one Ask Duvo reads
duvo automations assign-interview <id>Assign a Policy interview (--email, --context; asks first unless --yes)
duvo automations tabs <id>Show an automation's tab arrangement and pinned Pulse dashboards
duvo attributes listList the team's attributes (like Severity or Cost), their values and how many processes hold each
duvo attributes create --name <n> --type <t>Create a select (--value, repeatable), number (--unit) or text attribute
duvo attributes update <attribute-id>Rename an attribute, change its unit, or add and remove select values
duvo attributes delete <attribute-id>Delete an attribute, clearing it from every automation (asks first unless --yes)
duvo attributes values --automation <id>Show the attribute values an automation holds (or --process <id>)
duvo attributes automationsList the team's automations with their values (--attribute, --value to keep only holders)
duvo attributes set <attribute-id> --automation <id>Set an automation's value (--value, --number or --text)
duvo attributes clear <attribute-id> --automation <id>Clear an automation's value for an attribute
duvo runs start --agent <id>Start a new run for the given agent; add --follow to stream messages until it ends
duvo runs listList Runs for your team. Add --count-only to return only the matching total.
duvo runs get <id>Get an agent run by ID
duvo runs evaluation <run-id>Get the latest evaluation for a run, with Agent-specific rubrics labelled by title (resolves the agent automatically)
duvo runs messages <id>List messages for a run; add --follow to poll for new messages until the run ends
duvo runs send-message <id> --message <text>Post a message to an agent run
duvo runs respond <run-id> [request-id]Respond to a human-in-the-loop request on a run (defaults to the pending request)
duvo runs stop <id>Stop a running agent run
duvo suggestions list <agent-id>List an Agent's suggestions (--status pending is the inbox; --status history shows resolved)
duvo suggestions consume <suggestion-id>Apply a suggestion: stage its change onto the Agent's draft revision
duvo suggestions reject <suggestion-id>Dismiss a pending suggestion
duvo sandboxes createCreate a sandbox for staging files
duvo sandboxes files <id>List files in a sandbox directory
duvo sandboxes upload <id> <file>Upload a local file (max 10MB)
duvo sandboxes prepare-upload-url <id> --path <p>Get a presigned upload URL
duvo cases list --queue <id>List Cases in a Queue. Add --count-only to return only the matching total.
duvo cases search --queue <id>Search Cases in a Queue with richer filters than list: --label "<key=value|value>" (repeatable; values for the same key are ORed, different keys ANDed) and structured --field filters, all ANDed with list's other filters
duvo cases get <id>Get a case by ID with its event history
duvo cases create --queue <id>Create one or more cases (--title for one or --from-file with a JSON array)
duvo cases delete <id>Delete a case (interrupts any associated active runs)
duvo cases clear --queue <id>Delete every case in a queue (interrupts active runs first)
duvo cases bulk-delete --queue <id> --ids <list>Delete multiple cases from a queue (1-100; interrupts active runs first)
duvo cases bulk-reprocess --queue <id> --agent <id> --ids <list>Re-process cases on a queue consumer agent (1-100; interrupts active runs; see duvo queues agents)
duvo cases bulk-update-status --queue <id> --ids <list>Update the status of multiple cases to completed or failed (1-100)
duvo cases runs <case-id>List runs (agent runs) that have worked on a case
duvo cases labels list <case-id> --queue <id>List labels assigned to a case
duvo cases labels assign <case-id> --queue <id> --label "<key=value|value>" [...]Assign labels to a case (--label repeatable, accepts key=value or tag-only value)
duvo cases labels unlink <case-id> --queue <id> --label-id <label-id> [...]Remove labels from a case (--label-id repeatable)
duvo notifications listList notifications for your team, most recent first (--type, --unread, --important, --severity, --batch, --sort, cursor pagination)
duvo notifications get <id>Get a notification by ID
duvo notifications feedList the notification feed for your team (individual notifications interleaved with per-agent batches), most recent activity first (--type, --unread, cursor pagination)
duvo notifications get-batch <id>Get a notification batch by ID, with per-type live-member counts, unread count, and worst severity
duvo notifications countsGet per-type notification counts for your team (--unread to count unread only)
duvo notifications unread-countGet the unread notification count for your team
duvo notifications mark-read <id>Mark a notification as read
duvo notifications mark-batch-read <id>Mark every unread live member of a notification batch as read (--types to narrow)
duvo notifications mark-all-readMark all notifications as read for your team
duvo notifications dismiss <id>Dismiss an important (unresolved connection_broken) notification
duvo notifications delete-readDelete all read notifications for your team
duvo notifications delete-allDelete all notifications, read and unread, for your team
duvo clarity listList Clarity processes
duvo clarity search <query>Search Clarity processes
duvo clarity status <process-id>Show process status, generation progress, and selected version IDs
duvo clarity overview <process-id>Show a summary-first Clarity overview with health, counts, warnings, and next commands
duvo clarity versions <process-id>List v2 current/proposal histories, selected versions, and proposal anchors
duvo clarity current <process-id>Read a v2 current-process snapshot
duvo clarity proposal <process-id>Read a v2 transformation-proposal snapshot
duvo clarity compare <process-id>Compare selected v2 current-process and proposal snapshots
duvo clarity captures <process-id>List captures attached to a Clarity process
duvo clarity capture <process-id> <capture-id>Read one capture attached to a Clarity process
duvo clarity gaps <process-id>Group v2 proposal gaps and extra-capture requests by step
duvo clarity evidence <process-id>Print v2 current-process evidence sources; add --citation <id> to resolve one source
duvo clarity readiness <process-id>Summarize v2 automation-readiness ratings
duvo clarity facets <process-id>Build structured cost, risk, lineage, and automation facets for agents
duvo clarity export <process-id>Export Clarity context as Markdown or JSON
duvo clarity doctor [process-id]Check auth/API/tool readiness and, when provided, process context health
duvo clarity toolsList Clarity tools with CLI commands and underlying public API endpoints
duvo clarity artifact-chat-conversations <process-id> --snapshot-kind <kind>List artifact-chat conversations for a current-process or transformation-proposal view
duvo clarity artifact-chat-messages <process-id> <conversation-id>Read messages for one artifact-chat conversation
duvo clarity generate-current-process <process-id>Start current-process generation
duvo clarity generate-transformation-proposal <process-id>Start transformation-proposal generation or regeneration
duvo clarity promote-current-process <process-id> <snapshot-id>Promote a current-process snapshot to live
duvo clarity promote-transformation-proposal <process-id> <proposal-id>Promote a transformation-proposal snapshot to live
duvo clarity revert-current-process <process-id> <snapshot-id>Delete a current-process snapshot
duvo clarity revert-transformation-proposal <process-id> <proposal-id>Delete a transformation-proposal snapshot
duvo clarity assign-extra-capture-request <process-id> <proposal-id> <request-id>Assign or unassign an extra-capture request
duvo clarity postprocess <process-id> <snapshot-type> <snapshot-id>Re-run postprocessing for a current-process or transformation-proposal snapshot
duvo clarity build-automation <process-id>Start automation generation from the latest proposal
duvo clarity stop-transformation-proposal <process-id>Stop in-flight transformation-proposal generation
duvo clarity create [--name <name>] [--json]Create a new Clarity v2 process for the current team
duvo clarity create-invite-link <process-id>Create or regenerate an interview invite link
duvo clarity import-artifact <process-id> <file>Import a local Miro SVG, XML, PNG, or JPEG export
duvo queue-labels list --queue <queue-id>List labels defined on a queue (with case counts)
duvo queue-labels create --queue <queue-id> --value <v>Create a label on a queue (--value required)
duvo queue-labels update <label-id> --queue <queue-id> --value <v>Rename a label or change its color (--value required)
duvo queue-labels delete <label-id> --queue <queue-id>Delete a label and remove it from all cases
duvo files listList team files
duvo files upload-urlGet a presigned upload URL for a team file
duvo files download-url <path>Get a presigned download URL
duvo files content <path>Print the content of a text file
duvo files content-set <path>Update the content of a text file
duvo files renameRename a team file
duvo files delete <path>Delete a team file
duvo revisions list --agent <id>List revisions for an agent
duvo revisions get <id> --agent <id>Get a revision by ID
duvo revisions create --agent <id> --name <text>Create a new revision for an existing agent from --config-file, --code, or --aop-file with --source-revision
duvo revisions update <id>Update a revision's config from --config-file, or replace only its AOP with --aop-file (handover targets are derived from the AOP)
duvo integrations listList the team's integration catalog
duvo integrations custom create --name <n> --auth-method <m> --server-url <url>Create a custom integration type in your team's catalog
duvo integrations custom delete <custom-integration-id>Delete a custom integration type (cascade-removes related connections)
duvo connections listList your connections (filter with --type)
duvo connections get <id>Get one of your connections by ID
duvo connections createCreate a user-provided connection (custom MCP server)
duvo connections update <id>Update a connection (name, server URL, headers, sharing)
duvo connections delete <id>Delete a connection and any triggers bound to it
duvo connections credentials <id>List configured header keys (sensitive values redacted)
duvo oauth native start <provider>Start a native OAuth connection (Gmail, Outlook, ...). Prints the authorization URL.
duvo oauth mcp probe <url>Probe an MCP server URL and list tools it exposes (--header KEY=VALUE repeatable).
duvo oauth mcp authorize --url <url> --name <n>Start an OAuth-based connection with a remote MCP server (DCR). Prints the auth URL.
duvo oauth mcp check --url <url>Probe an MCP server URL for OAuth Dynamic Client Registration support.
duvo revision-integrations listList integrations attached to a revision (shows SLOT ID and INTEGRATION ID columns)
duvo revision-integrations attachAttach one or more integrations to a revision
duvo revision-integrations remove <integration-id>Remove an integration slot from a revision
duvo revision-integrations connections listList your pinned connections for a revision's integration slot
duvo revision-integrations connections pin <id>Pin one of your connections to a revision's integration slot
duvo revision-integrations connections unpin <id>Unpin a connection from a revision's integration slot
duvo secrets listList env-var secrets visible to you (team-shared plus personal)
duvo secrets get <id>Get an env-var secret by ID (values are never exposed)
duvo secrets create --name <n> --value KEY=VALCreate an env-var secret (--shared to make it team-shared)
duvo secrets update <id>Update a secret (--set, --remove, --rename, metadata fields)
duvo secrets delete <id>Soft-delete an env-var secret
duvo credentials list [--domain <d>]List browser logins (passwords and OTP secrets are never returned)
duvo credentials get <id>Get a browser login by ID
duvo credentials create --domain <d> [--password <p>] [--otp-secret <s>]Create a browser login. The OTP value must be a base32 TOTP setup secret or an otpauth URI.
duvo credentials update <id>Update a browser login
duvo credentials delete <id>Delete a browser login
duvo revision-secrets list --agent <id> --revision <id>List env-var secrets attached to a revision
duvo revision-secrets attach --agent <id> --revision <id> --secret <id>Attach an env-var secret to a revision
duvo revision-secrets detach <secret-id> --agent <id> --revision <id>Detach an env-var secret from a revision
duvo revision-logins list --agent <id> --revision <id>List browser logins attached to a revision
duvo revision-logins attach --agent <id> --revision <id> --credential <id>Attach a browser login to a revision
duvo revision-logins detach <credential-id> --agent <id> --revision <id>Detach a browser login from a revision
duvo plugins listList plugins referenceable by name in a revision
duvo queues listList queues for your team
duvo queues get <id>Get a queue by ID
duvo queues create --name <name>

版本与发布记录

@duvoai/cli 共发布 108 个版本,首次发布于 2026/04/23;过去 12 个月发布了 108 个版本。

版本发布日期距今
1.107.0latest2026/11/094 天前
1.106.02026/11/076 天前
1.105.02026/11/067 天前
1.104.02026/11/0310 天前
1.103.02026/10/3113 天前
1.102.02026/10/2816 天前

关于 @duvoai/cli 的常见问题

@duvoai/cli 是什么?

Command-line interface for the Duvo public API

如何安装 @duvoai/cli?

在项目目录运行 npm install @duvoai/cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 duvo,可以用 npx duvo 直接运行。

@duvoai/cli 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/duvoai__cli 是否存在。

@duvoai/cli 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@duvoai/cli 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.22.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@duvoai/cli 可以商用吗?

@duvoai/cli 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@duvoai/cli 的下载量有多少?

根据 npm 官方下载统计,@duvoai/cli 在 2026/10/13 – 2026/11/11 这 30 天内被下载 11,495 次,日均约 383 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@duvoai/cli 还在维护吗?

最新版本 1.107.0 发布于 2026/11/09(4 天前);至今共发布 108 个版本,其中过去 12 个月发布了 108 个;首次发布于 2026/04/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。