Skip to main content
Version: 8.10 (unreleased)

Command reference

Alpha feature

c8ctl is in alpha and is not intended for production use. Commands and flags may change without notice between releases. See Getting started for details.

Global Flags

These flags are accepted by every command.

FlagTypeRequiredDescription
--help / -hbooleanShow help
--version / -vstringShow CLI version, or filter by process definition version on supported commands
--profilestringUse a specific profile
--dry-runbooleanPreview the API request without executing
--verbosebooleanShow verbose output
--fieldsstringComma-separated list of fields to display

Resource Aliases

AliasResource
authauthorization
incincident
mrmapping-rule
msgmessage
pdprocess-definition
piprocess-instance
utuser-task
varsvariable
varvariable

Search Flags

These flags are available on list and search commands.

FlagTypeRequiredDescription
--sortBystringSort results by field
--ascbooleanSort ascending
--descbooleanSort descending
--limitstringMaximum number of results
--betweenstringDate range filter (e.g. 7d, 30d, 2024-01-01..2024-12-31)
--dateFieldstringDate field for --between filter

Commands

list

List resources

Resources: pi (process-instance), pd (process-definition), ut (user-task), inc (incident), jobs, profiles (profile), plugins (plugin), users (user), roles (role), groups (group), tenants (tenant), auth (authorization), mapping-rules (mapping-rule)

Verb-level flags:

FlagTypeRequiredDescription
--allbooleanList all (disable pagination limit)

Resource-specific flags:

process-definition
FlagTypeRequiredDescription
--bpmnProcessIdstringFilter by BPMN process ID
--idstringFilter by BPMN process ID (alias)
--processDefinitionIdstringFilter by process definition ID
--namestringFilter by name
--keystringFilter by key
--iidstringCase-insensitive filter by BPMN process ID
--inamestringCase-insensitive filter by name
process-instance
FlagTypeRequiredDescription
--bpmnProcessIdstringFilter by BPMN process ID
--idstringFilter by BPMN process ID (alias)
--processDefinitionIdstringFilter by process definition ID
--processDefinitionKeystringFilter by process definition key
--statestringFilter by state (ACTIVE, COMPLETED, etc)
--keystringFilter by key
--parentProcessInstanceKeystringFilter by parent process instance key
--iidstringCase-insensitive filter by BPMN process ID
user-task
FlagTypeRequiredDescription
--statestringFilter by state
--assigneestringFilter by assignee
--processInstanceKeystringFilter by process instance key
--processDefinitionKeystringFilter by process definition key
--elementIdstringFilter by element ID
--iassigneestringCase-insensitive filter by assignee
incident
FlagTypeRequiredDescription
--statestringFilter by state
--processInstanceKeystringFilter by process instance key
--processDefinitionKeystringFilter by process definition key
--bpmnProcessIdstringFilter by BPMN process ID
--idstringFilter by BPMN process ID (alias)
--processDefinitionIdstringFilter by process definition ID
--errorTypestringFilter by error type
--errorMessagestringFilter by error message
--ierrorMessagestringCase-insensitive filter by error message
--iidstringCase-insensitive filter by BPMN process ID
jobs
FlagTypeRequiredDescription
--statestringFilter by state
--typestringFilter by job type
--processInstanceKeystringFilter by process instance key
--processDefinitionKeystringFilter by process definition key
--itypestringCase-insensitive filter by job type
user
FlagTypeRequiredDescription
--usernamestringFilter by username
--namestringFilter by name
--emailstringFilter by email
role
FlagTypeRequiredDescription
--roleIdstringFilter by role ID
--namestringFilter by name
group
FlagTypeRequiredDescription
--groupIdstringFilter by group ID
--namestringFilter by name
tenant
FlagTypeRequiredDescription
--tenantIdstringFilter by tenant ID
--namestringFilter by name
authorization
FlagTypeRequiredDescription
--ownerIdstringFilter by owner ID
--ownerTypestringFilter by owner type
--resourceTypestringFilter by resource type
--resourceIdstringFilter by resource ID
mapping-rule
FlagTypeRequiredDescription
--mappingRuleIdstringFilter by mapping rule ID
--namestringFilter by name
--claimNamestringFilter by claim name
--claimValuestringFilter by claim value

Examples:

c8ctl list pi                                               # List process instances
c8ctl list pd # List process definitions
c8ctl list users # List users

Search resources with filters (wildcards, date ranges, case-insensitive)

Resources: pi (process-instance), pd (process-definition), ut (user-task), inc (incident), jobs, vars (variable), users (user), roles (role), groups (group), tenants (tenant), auth (authorization), mapping-rules (mapping-rule)

Resource-specific flags:

process-definition
FlagTypeRequiredDescription
--bpmnProcessIdstringFilter by BPMN process ID
--idstringFilter by BPMN process ID (alias)
--processDefinitionIdstringFilter by process definition ID
--namestringFilter by name
--keystringFilter by key
--iidstringCase-insensitive filter by BPMN process ID
--inamestringCase-insensitive filter by name
process-instance
FlagTypeRequiredDescription
--bpmnProcessIdstringFilter by BPMN process ID
--idstringFilter by BPMN process ID (alias)
--processDefinitionIdstringFilter by process definition ID
--processDefinitionKeystringFilter by process definition key
--statestringFilter by state (ACTIVE, COMPLETED, etc)
--keystringFilter by key
--parentProcessInstanceKeystringFilter by parent process instance key
--iidstringCase-insensitive filter by BPMN process ID
user-task
FlagTypeRequiredDescription
--statestringFilter by state
--assigneestringFilter by assignee
--processInstanceKeystringFilter by process instance key
--processDefinitionKeystringFilter by process definition key
--elementIdstringFilter by element ID
--iassigneestringCase-insensitive filter by assignee
incident
FlagTypeRequiredDescription
--statestringFilter by state
--processInstanceKeystringFilter by process instance key
--processDefinitionKeystringFilter by process definition key
--bpmnProcessIdstringFilter by BPMN process ID
--idstringFilter by BPMN process ID (alias)
--processDefinitionIdstringFilter by process definition ID
--errorTypestringFilter by error type
--errorMessagestringFilter by error message
--ierrorMessagestringCase-insensitive filter by error message
--iidstringCase-insensitive filter by BPMN process ID
jobs
FlagTypeRequiredDescription
--statestringFilter by state
--typestringFilter by job type
--processInstanceKeystringFilter by process instance key
--processDefinitionKeystringFilter by process definition key
--itypestringCase-insensitive filter by job type
variable
FlagTypeRequiredDescription
--namestringFilter by variable name
--valuestringFilter by value
--processInstanceKeystringFilter by process instance key
--scopeKeystringFilter by scope key
--fullValuebooleanReturn full variable values (not truncated)
--inamestringCase-insensitive filter by name
--ivaluestringCase-insensitive filter by value
user
FlagTypeRequiredDescription
--usernamestringFilter by username
--namestringFilter by name
--emailstringFilter by email
role
FlagTypeRequiredDescription
--roleIdstringFilter by role ID
--namestringFilter by name
group
FlagTypeRequiredDescription
--groupIdstringFilter by group ID
--namestringFilter by name
tenant
FlagTypeRequiredDescription
--tenantIdstringFilter by tenant ID
--namestringFilter by name
authorization
FlagTypeRequiredDescription
--ownerIdstringFilter by owner ID
--ownerTypestringFilter by owner type
--resourceTypestringFilter by resource type
--resourceIdstringFilter by resource ID
mapping-rule
FlagTypeRequiredDescription
--mappingRuleIdstringFilter by mapping rule ID
--namestringFilter by name
--claimNamestringFilter by claim name
--claimValuestringFilter by claim value

Examples:

c8ctl search pi --state=ACTIVE                              # Search for active process instances
c8ctl search pd --bpmnProcessId=myProcess # Search process definitions by ID
c8ctl search pd --name='*main*' # Search process definitions with wildcard
c8ctl search ut --assignee=john # Search user tasks assigned to john
c8ctl search inc --state=ACTIVE # Search for active incidents
c8ctl search jobs --type=myJobType # Search jobs by type
c8ctl search jobs --type='*service*' # Search jobs with type containing "service"
c8ctl search variables --name=myVar # Search for variables by name
c8ctl search variables --value=foo # Search for variables by value
c8ctl search variables --processInstanceKey=123 --fullValue # Search variables with full values
c8ctl search pd --iname='*order*' # Case-insensitive search by name
c8ctl search ut --iassignee=John # Case-insensitive search by assignee

get

Get a resource by key

Resources: pi (process-instance), pd (process-definition), inc (incident), topology, form, user, role, group, tenant, auth (authorization), mapping-rule

Positional arguments:

  • process-definition: <key> (required)
  • process-instance: <key> (required)
  • incident: <key> (required)
  • user: <username> (required)
  • role: <roleId> (required)
  • group: <groupId> (required)
  • tenant: <tenantId> (required)
  • authorization: <authorizationKey> (required)
  • mapping-rule: <mappingRuleId> (required)
  • form: <key> (required)

Resource-specific flags:

process-definition
FlagTypeRequiredDescription
--xmlbooleanGet BPMN XML (process definitions)
form
FlagTypeRequiredDescription
--userTaskbooleanGet form for user task
--utbooleanAlias for --userTask
--processDefinitionbooleanGet form for process definition
--pdbooleanAlias for --processDefinition
process-instance
FlagTypeRequiredDescription
--variablesbooleanInclude variables in output

Examples:

c8ctl get pi 123456                                         # Get process instance by key
c8ctl get pi 123456 --variables # Get process instance with variables
c8ctl get pd 123456 # Get process definition by key
c8ctl get pd 123456 --xml # Get process definition XML
c8ctl get form 123456 # Get form (searches both user task and process definition)
c8ctl get form 123456 --ut # Get form for user task only
c8ctl get form 123456 --pd # Get start form for process definition only
c8ctl get user john # Get user by username

create

Create a resource (process instance, identity)

Resources: pi (process-instance), user, role, group, tenant, auth (authorization), mapping-rule

Verb-level flags:

FlagTypeRequiredDescription
--processDefinitionIdstringProcess definition ID (BPMN process ID)
--idstringProcess definition ID (alias for --processDefinitionId)
--bpmnProcessIdstringBPMN process ID (alias for --processDefinitionId)
--variablesstringJSON variables
--awaitCompletionbooleanWait for process to complete
--fetchVariablesbooleanFetch result variables on completion
--requestTimeoutstringAwait timeout in milliseconds
--usernamestringUsername
--namestringDisplay name
--emailstringEmail address
--passwordstringPassword
--roleIdstringRole ID
--groupIdstringGroup ID
--tenantIdstringTenant ID
--mappingRuleIdstringMapping rule ID
--claimNamestringClaim name
--claimValuestringClaim value

Resource-specific flags:

authorization
FlagTypeRequiredDescription
--ownerIdstringYesAuthorization owner ID
--ownerTypestringYesAuthorization owner type
--resourceTypestringYesAuthorization resource type
--resourceIdstringYesAuthorization resource ID
--permissionsstringYesComma-separated permissions

Examples:

c8ctl create pi --id=myProcess                              # Create a process instance
c8ctl create pi --id=myProcess --awaitCompletion # Create and await completion
c8ctl create user --username=john --name='John Doe' --email=john@example.com --password=secret # Create a user

delete

Delete a resource by key

Usage: c8ctl delete <resource> <key>

Resources: user, role, group, tenant, auth (authorization), mapping-rule

Positional arguments:

  • user: <username> (required)
  • role: <roleId> (required)
  • group: <groupId> (required)
  • tenant: <tenantId> (required)
  • authorization: <authorizationKey> (required)
  • mapping-rule: <mappingRuleId> (required)

Examples:

c8ctl delete user john                                      # Delete user

cancel

Cancel a process instance

Usage: c8ctl cancel <resource> <key>

Resources: pi (process-instance)

Positional arguments:

  • process-instance: <key> (required)

await

Create and await process instance completion (server-side waiting)

Usage: c8ctl await <resource>

Resources: pi (process-instance)

Flags:

FlagTypeRequiredDescription
--processDefinitionIdstringProcess definition ID (BPMN process ID)
--idstringProcess definition ID (alias for --processDefinitionId)
--bpmnProcessIdstringBPMN process ID (alias for --processDefinitionId)
--variablesstringJSON variables
--fetchVariablesbooleanFetch result variables on completion
--requestTimeoutstringAwait timeout in milliseconds

Examples:

c8ctl await pi --id=myProcess                               # Create and wait for completion

complete

Complete a user task or job

Usage: c8ctl complete <resource> <key>

Resources: ut (user-task), job

Positional arguments:

  • user-task: <key> (required)
  • job: <key> (required)

Flags:

FlagTypeRequiredDescription
--variablesstringJSON variables

fail

Mark a job as failed with optional error message and retry count

Resources: job

Positional arguments:

  • job: <key> (required)

Flags:

FlagTypeRequiredDescription
--retriesstringRemaining retries
--errorMessagestringError message

activate

Activate jobs of a specific type for processing

Resources: jobs

Positional arguments:

  • jobs: <type> (required)

Flags:

FlagTypeRequiredDescription
--maxJobsToActivatestringMaximum number of jobs to activate
--timeoutstringJob timeout in milliseconds
--workerstringWorker name

resolve

Resolve an incident (marks resolved, allows process to continue)

Resources: inc (incident)

Positional arguments:

  • incident: <key> (required)

publish

Publish a message for message correlation

Resources: msg (message)

Positional arguments:

  • message: <name> (required)

Flags:

FlagTypeRequiredDescription
--correlationKeystringCorrelation key
--variablesstringJSON variables
--timeToLivestringTime to live in milliseconds

correlate

Correlate a message to a specific process instance

Resources: msg (message)

Positional arguments:

  • message: <name> (required)

Flags:

FlagTypeRequiredDescription
--correlationKeystringYesCorrelation key
--variablesstringJSON variables
--timeToLivestringTime to live in milliseconds

set

Set variables on an element instance (process instance or flow element scope). Variables are propagated to the outermost scope by default; use --local to restrict to the specified scope.

Usage: c8ctl set variable <key>

Resources: variable

Positional arguments:

  • variable: <key> (required)

Flags:

FlagTypeRequiredDescription
--variablesstringYesJSON object of variables to set (required)
--localbooleanSet variables in local scope only (default: propagate to outermost scope)

Examples:

c8ctl set variable 2251799813685249 --variables='{"status":"approved"}'  # Set variables on a process instance
c8ctl set variable 2251799813685249 --variables='{"x":1}' --local # Set variables in local scope only

deploy

Deploy files to Camunda (auto-discovers deployable files in directories)

Usage: c8ctl deploy [path...]

Flags:

FlagTypeRequiredDescription
--forcebooleanDeploy any file type, ignoring the default extension allow-list

Examples:

c8ctl deploy ./my-process.bpmn                              # Deploy a BPMN file

run

Deploy and start a process instance from a BPMN file

Usage: c8ctl run <path>

Flags:

FlagTypeRequiredDescription
--variablesstringJSON variables
--forcebooleanDeploy any file type, ignoring the default extension allow-list

Examples:

c8ctl run ./my-process.bpmn                                 # Deploy and start process

assign

Assign a resource to a target (--to-user, --to-group, etc.)

Usage: c8ctl assign <resource> <id>

Resources: role, user, group, mapping-rule

Positional arguments:

  • role: <roleId> (required)
  • user: <username> (required)
  • group: <groupId> (required)
  • mapping-rule: <mappingRuleId> (required)

Flags:

FlagTypeRequiredDescription
--to-userstringTarget user ID
--to-groupstringTarget group ID
--to-tenantstringTarget tenant ID
--to-mapping-rulestringTarget mapping rule ID

Examples:

c8ctl assign role admin --to-user=john                      # Assign role to user

unassign

Unassign a resource from a target (--from-user, --from-group, etc.)

Usage: c8ctl unassign <resource> <id>

Resources: role, user, group, mapping-rule

Positional arguments:

  • role: <roleId> (required)
  • user: <username> (required)
  • group: <groupId> (required)
  • mapping-rule: <mappingRuleId> (required)

Flags:

FlagTypeRequiredDescription
--from-userstringSource user ID
--from-groupstringSource group ID
--from-tenantstringSource tenant ID
--from-mapping-rulestringSource mapping rule ID

Examples:

c8ctl unassign role admin --from-user=john                  # Unassign role from user

watch

Watch files for changes and auto-deploy

Usage: c8ctl watch [path...]

Aliases: w

Flags:

FlagTypeRequiredDescription
--forcebooleanContinue watching after all deployment errors
--extensionsstringComma-separated list of file extensions to watch (e.g. .bpmn,.dmn,.form)

Examples:

c8ctl watch ./src                                           # Watch directory for changes

open

Open Camunda web app in browser

Usage: c8ctl open <app>

Resources: operate, tasklist, modeler, optimize

Examples:

c8ctl open operate                                          # Open Camunda Operate in browser
c8ctl open tasklist # Open Camunda Tasklist in browser
c8ctl open operate --profile=prod # Open Operate using a specific profile

add

Add a profile

Resources: profile

Positional arguments:

  • profile: <name> (required)

Flags:

FlagTypeRequiredDescription
--baseUrlstringCluster base URL
--clientIdstringOAuth client ID
--clientSecretstringOAuth client secret
--audiencestringOAuth audience
--oAuthUrlstringOAuth token URL
--defaultTenantIdstringDefault tenant ID
--usernamestringBasic auth username
--passwordstringBasic auth password
--from-filestringImport from .env file
--from-envbooleanImport from environment variables

remove

Remove a profile (alias: rm)

Usage: c8ctl remove profile <name>

Aliases: rm

Resources: profile, plugin

Positional arguments:

  • profile: <name> (required)
  • plugin: <package> (required)

Flags:

FlagTypeRequiredDescription
--nonebooleanClear active profile

load

Load a c8ctl plugin (npm registry or URL)

Usage: c8ctl load plugin [name|--from url]

Resources: plugin

Positional arguments:

  • plugin: <package> (optional)

Flags:

FlagTypeRequiredDescription
--fromstringLoad plugin from URL

Examples:

c8ctl load plugin my-plugin                                 # Load plugin from npm registry
c8ctl load plugin --from https://github.com/org/plugin # Load plugin from URL

unload

Unload a c8ctl plugin (npm uninstall wrapper)

Usage: c8ctl unload plugin <name>

Aliases: rm

Resources: plugin

Positional arguments:

  • plugin: <package> (required)

Flags:

FlagTypeRequiredDescription
--forcebooleanForce unload without confirmation

upgrade

Upgrade a plugin (respects source type)

Usage: c8ctl upgrade plugin <name> [version]

Resources: plugin

Positional arguments:

  • plugin: <package> (required), <version> (optional)

Examples:

c8ctl upgrade plugin my-plugin                              # Upgrade plugin to latest version
c8ctl upgrade plugin my-plugin 1.2.3 # Upgrade plugin to a specific version (source-aware)

downgrade

Downgrade a plugin to a specific version

Usage: c8ctl downgrade plugin <name> <version>

Resources: plugin

Positional arguments:

  • plugin: <package> (required), <version> (required)

sync

Synchronize plugins from registry (rebuild/reinstall)

Resources: plugin

Examples:

c8ctl sync plugin                                           # Synchronize plugins

init

Create a new plugin from TypeScript template

Resources: plugin

Positional arguments:

  • plugin: <name> (optional)

Examples:

c8ctl init plugin my-plugin                                 # Create new plugin from template (c8ctl-plugin-my-plugin)

use

Set active profile or tenant

Usage: c8ctl use profile|tenant

Resources: profile, tenant

Positional arguments:

  • profile: <name> (optional)
  • tenant: <tenantId> (required)

Flags:

FlagTypeRequiredDescription
--nonebooleanClear active profile/tenant

Examples:

c8ctl use profile prod                                      # Set active profile

output

Show or set output format

Usage: c8ctl output [json|text]

Resources: json, text

Examples:

c8ctl output json                                           # Switch to JSON output

completion

Generate shell completion script

Usage: c8ctl completion bash|zsh|fish|install

Resources: bash, zsh, fish, install

Resource-specific flags:

install
FlagTypeRequiredDescription
--shellstringShell to install completions for (bash, zsh, fish)

Examples:

c8ctl completion bash                                       # Generate bash completion script
c8ctl completion install # Auto-detect shell and install completions (auto-refreshes on upgrade)
c8ctl completion install --shell zsh # Install completions for a specific shell

mcp-proxy

Start a STDIO MCP proxy (bridges local MCP clients to remote Camunda 8)

Usage: c8ctl mcp-proxy [mcp-path]


feedback

Open the feedback page to report issues or request features


help

Show help (run 'c8ctl help <command>' for details)

Usage: c8ctl help [command]

Aliases: menu


which

Show active profile

Resources: profile

Examples:

c8ctl which profile                                         # Show currently active profile