c8ctl (pronounced: "cocktail") β a minimal-dependency CLI for Camunda 8 operations built on top of @camunda8/orchestration-cluster-api.
- Multi-Tenant Support: Full support for multi-tenancy across all operations
- Profile Management: Store and manage multiple cluster configurations
- Camunda Modeler Integration: Automatically import and use profiles from Camunda Modeler
- Identity Management: Manage users, roles, groups, tenants, authorizations, and mapping rules
- Plugin System: Extend c8ctl with custom commands via npm packages
- Local Cluster: Run a local Camunda 8 instance directly β no Docker required
- MCP Proxy: Bridge local MCP clients to remote Camunda 8 for AI agent integration
- Building Block Deployment: Automatic prioritization of
*_bb-*folders during deployment, marked with π§± in results - Process Application Support: Resources in folders with
.process-applicationfile marked with π¦ in results - Enhanced Deployment Results: Table view showing file paths, visual indicators, resource details, and versions
- Watch Mode: Monitors a folder for file changes and auto-redeploys (configurable extensions via
--extensions) .c8ignoreSupport: Filter deploy/watch file scanning with.gitignore-style patterns;node_modules/,target/,.git/ignored by default- Open Applications: Open Camunda web applications (Operate, Tasklist, Modeler, Optimize) in the browser directly from the CLI
- Search: Powerful search across process definitions, process instances, user tasks, incidents, jobs, and variables with filter, wildcard, and case-insensitive support
- Flexible Output: Switch between human-readable text and JSON output modes
- Shell Completion: Auto-install completions for bash, zsh, and fish with automatic refresh on upgrade
- Agent Flags:
--dry-runto preview API requests and--fieldsto filter output columns for AI agents and scripts - Debug Mode: Enable detailed logging to stderr with
DEBUG=1orC8CTL_DEBUG=true
Full transparency:
this cli is also a pilot-coding experiment, practicing Agentic Engineering.
Guided by humans, the codebase is (mostly) built by your friendly neighborhood LLM, fully dogfooding the Human-in-the-Loop pattern.
- Node.js >= 22.18.0 (for native TypeScript support)
npm install @camunda8/cli -gAfter installation, the CLI is available as c8ctl (or its alias c8).
Note: The c8 alias provides typing ergonomics for common keyboard layouts - the c key (left index finger) followed by 8 (right middle finger) makes for a comfortable typing experience on both QWERTY and QWERTZ keyboards.
The full documentation is maintained in this repository under docs/ and is published β and kept in sync β on docs.camunda.io:
- Getting started β install, spin up a local cluster, credentials, profiles, output modes, and shell completion.
- Cluster inspection and process management β list, search, get, and manage process instances, user tasks, incidents, jobs, variables, messages, and forms.
- Identity management β users, roles, groups, tenants, authorizations, and mapping rules.
- Development workflows β deploy, run, watch, profiles, sessions, and the MCP proxy.
- Plugins β scaffold, install, and manage custom commands.
- Command reference β every command, flag, resource, and alias.
The docs/ pages are the single source of truth. When you change CLI behavior, update the relevant page here; a workflow syncs them to camunda-docs.
# Install
npm install @camunda8/cli -g
# Start a local Camunda 8 cluster (no Docker required)
c8ctl cluster start
# Deploy a process and start an instance
c8ctl deploy ./my-process.bpmn
c8ctl run my-process
# Inspect running instances
c8ctl list process-instances
# Show help for any command
c8ctl help
c8ctl help <command>For everything else, see the documentation above.
c8ctl ships flags built for AI agents and scripts β --fields (filter output columns), --dry-run (preview the API request without executing it), and machine-readable JSON help. They appear in their own section in c8ctl help.
See Development workflows β AI agents and scripting for details and examples. For a full machine-readable reference intended for agents, see CONTEXT.md.
c8ctl <verb> <resource> [arguments] [flags]Verbs:
list- List resources (process, identity)search- Search resources with filtersget- Get resource by keycreate- Create resourcedelete- Delete resourcecancel- Cancel resourceawait- Create and await completion (alias for create --awaitCompletion)complete- Complete resourcefail- Fail a jobupdate- Update a jobactivate- Activate jobs by typeresolve- Resolve incidentpublish- Publish messagecorrelate- Correlate messageset- Set variables on an element instancedeploy- Deploy resourcesrun- Deploy and start processassign- Assign resource to targetunassign- Unassign resource from targetwatch(alias:w) - Watch files for changes and auto-deployopen- Open Camunda web application in browseradd- Add a profileremove(alias:rm) - Remove a profileload- Load a c8ctl pluginunload(alias:rm) - Unload a c8ctl pluginupgrade- Upgrade a plugindowngrade- Downgrade a plugin to a specific versionsync- Synchronize pluginsinit- Create a new plugin from TypeScript templatedoctor- Diagnose plugin loading state and collisionsuse- Set active profile or tenantoutput- Show or set output formatcompletion- Generate shell completion scriptmcp-proxy- Start a STDIO to remote HTTP MCP proxy serverfeedback- Open the feedback page to report issues or request featureshelp(alias:menu) - Show helpwhich- Show active profile or output mode
Resources: authorization (auth), form, group, incident (inc), job, jobs, mapping-rule (mr), message (msg), plugin, process-definition (pd), process-instance (pi), profile, role, tenant, topology, user, user-task (ut), variable (var, vars), wait-state (ws)
Tip: Run c8ctl help <command> to see detailed help for specific commands with all available flags.
CAMUNDA_BASE_URL: Cluster base URLCAMUNDA_CLIENT_ID: OAuth client IDCAMUNDA_CLIENT_SECRET: OAuth client secretCAMUNDA_TOKEN_AUDIENCE: OAuth token audienceCAMUNDA_OAUTH_URL: OAuth token endpointCAMUNDA_DEFAULT_TENANT_ID: Default tenant IDC8CTL_OUTPUT_MODE: Per-invocation output mode override (jsonortext); does not persist. Lower precedence than--json.C8CTL_DATA_DIR: Override the OS-default data directory for plugins and session state.C8CTL_DEBUG/DEBUG: Enable debug logging to stderr.
Configuration is stored in platform-specific user data directories:
- Linux:
~/.config/c8ctl/ - macOS:
~/Library/Application Support/c8ctl/ - Windows:
%APPDATA%\c8ctl\
Files:
profiles.json: Saved cluster configurationssession.json: Active profile, tenant, and output modeplugins.json: Plugin registry tracking installed plugins
c8ctl automatically reads profiles from Camunda Modeler (if installed):
- Linux:
~/.config/camunda-modeler/profiles.json - macOS:
~/Library/Application Support/camunda-modeler/profiles.json - Windows:
%APPDATA%\camunda-modeler\profiles.json
Modeler profiles are:
- Read-only in c8ctl (managed via Camunda Modeler)
- Automatically loaded on each command execution
- Prefixed with
modeler:when used in c8ctl - Support both cloud and self-managed clusters
A compact list of every verb and resource is in Command Structure above.
For the complete reference of every command, flag, resource, and alias, see:
docs/command-reference.mdin this repository, or- the c8ctl command reference on docs.camunda.io.
Apache 2.0 - see LICENSE.md
See CONTRIBUTING.md for development setup, testing, project structure, and how to add new commands. See AGENTS.md for commit conventions and coding standards.