Vorno CLI Guide
vorno-cli is the preferred interface for managing workspace config domains such as labels, sources, skills, and automations.
vorno-cli <entity> <action> [args] [--flags] [--json '<json>'] [--stdin]Global flags
Section titled “Global flags”vorno-cli --helpvorno-cli --versionvorno-cli --discover
Input modes
Section titled “Input modes”- Flat flags for simple values
--jsonfor structured inputs--stdinfor piped JSON object input
Manage workspace labels stored under labels/.
Commands
Section titled “Commands”vorno-cli label listvorno-cli label get <id>vorno-cli label create --name "<name>" [--color "<color>"] [--parent-id <id|root>] [--value-type string|number|date]vorno-cli label update <id> [--name "<name>"] [--color "<color>"] [--value-type string|number|date|none] [--clear-value-type]vorno-cli label delete <id>vorno-cli label move <id> --parent <id|root>vorno-cli label reorder [--parent <id|root>] <ordered-id-1> <ordered-id-2> ...vorno-cli label auto-rule-list <id>vorno-cli label auto-rule-add <id> --pattern "<regex>" [--flags "gi"] [--value-template "$1"] [--description "..."]vorno-cli label auto-rule-remove <id> --index <n>vorno-cli label auto-rule-clear <id>vorno-cli label auto-rule-validate <id>
Examples
Section titled “Examples”vorno-cli label listvorno-cli label get bugvorno-cli label create --name "Bug" --color "accent"vorno-cli label create --name "Priority" --value-type numbervorno-cli label update bug --json '{"name":"Bug Report","color":"destructive"}'vorno-cli label update priority --value-type nonevorno-cli label move bug --parent rootvorno-cli label reorder --parent root development content bugvorno-cli label auto-rule-add linear-issue --pattern "\\b([A-Z]{2,5}-\\d+)\\b" --value-template "$1"vorno-cli label auto-rule-list linear-issuevorno-cli label auto-rule-validate linear-issue- Use
--json/--stdinfor nested or bulk updates. - IDs are stable slugs generated from name on create.
- Use
--value-type noneor--clear-value-typeto remove a label value type.
Source
Section titled “Source”Manage workspace sources stored under sources/{slug}/.
Commands
Section titled “Commands”vorno-cli source listvorno-cli source get <slug>vorno-cli source create(see flags below)vorno-cli source update <slug> --json '{...}'vorno-cli source delete <slug>vorno-cli source validate <slug>vorno-cli source test <slug>vorno-cli source init-guide <slug> [--template generic|mcp|api|local]vorno-cli source init-permissions <slug> [--mode read-only]vorno-cli source auth-help <slug>
Flags for source create
Section titled “Flags for source create”| Flag | Description |
|---|---|
--name "<name>" |
(required) Source display name |
--provider "<provider>" |
(required) Provider identifier (e.g., linear, github) |
--type mcp|api|local |
(required) Source type |
--enabled true|false |
Enable/disable source (default: true) |
--icon "<url-or-emoji>" |
Icon URL (auto-downloaded) or emoji |
| MCP-specific | |
--url "<url>" |
MCP server URL |
--transport http|stdio |
MCP transport type |
--auth-type oauth|bearer|none |
MCP authentication type |
| API-specific | |
--base-url "<url>" |
(required for api) API base URL (must have trailing slash) |
--auth-type bearer|header|query|basic|none |
(required for api) API auth type |
| Local-specific | |
--path "<path>" |
(required for local) Filesystem path |
Examples
Section titled “Examples”vorno-cli source listvorno-cli source get linear# MCP source with flat flagsvorno-cli source create --name "Linear" --provider "linear" --type mcp --url "https://mcp.linear.app/sse" --auth-type oauth# MCP source with --json for nested configvorno-cli source create --name "Linear" --provider "linear" --type mcp --json '{"mcp":{"transport":"http","url":"https://mcp.linear.app/sse","authType":"oauth"}}'# API sourcevorno-cli source create --name "Exa" --provider "exa" --type api --base-url "https://api.exa.ai/" --auth-type header# Local sourcevorno-cli source create --name "Docs Folder" --provider "filesystem" --type local --path "~/Documents"vorno-cli source update linear --json '{"enabled":false}'vorno-cli source validate linearvorno-cli source test linearvorno-cli source init-guide linear --template mcpvorno-cli source init-permissions linear --mode read-onlyvorno-cli source auth-help linear- Use flat flags for simple values or
--jsonfor type-specific nested config fields (mcp,api,local). init-guidescaffolds a practicalguide.mdbased on source type.init-permissionsscaffolds read-onlypermissions.jsonpatterns for Explore mode.auth-helpreturns the recommended in-session auth tool and mode.testis lightweight CLI validation; for full in-session auth/connection probing usesource_testMCP tool.
Manage workspace skills stored under skills/{slug}/SKILL.md.
Commands
Section titled “Commands”vorno-cli skill list [--workspace-only] [--project-root <path>]vorno-cli skill get <slug> [--project-root <path>]vorno-cli skill where <slug> [--project-root <path>]vorno-cli skill create(see flags below)vorno-cli skill update <slug> --json '{...}' [--project-root <path>]vorno-cli skill delete <slug>vorno-cli skill validate <slug> [--source workspace|project|global] [--project-root <path>]
Flags for skill create
Section titled “Flags for skill create”| Flag | Description |
|---|---|
--name "<name>" |
(required) Skill display name |
--description "<desc>" |
(required) Brief description (1-2 sentences) |
--slug "<slug>" |
Custom slug (auto-generated from name if omitted) |
--body "..." |
Skill content/instructions (markdown body) |
--icon "<url>" |
Icon URL (auto-downloaded to icon.*) |
--globs "*.ts,*.tsx" |
Comma-separated glob patterns for auto-suggestion |
--always-allow "Bash,Write" |
Comma-separated tool names to always allow |
--required-sources "linear,github" |
Comma-separated source slugs to auto-enable |
Examples
Section titled “Examples”vorno-cli skill listvorno-cli skill list --workspace-onlyvorno-cli skill where commit-helpervorno-cli skill create --name "Commit Helper" --description "Generate conventional commits" --slug commit-helpervorno-cli skill create --name "Code Review" --description "Review PRs" --globs "*.ts,*.tsx" --always-allow "Bash" --required-sources "github"vorno-cli skill update commit-helper --json '{"requiredSources":["github"],"body":"Use concise, imperative commit messages."}'vorno-cli skill validate commit-helpervorno-cli skill validate commit-helper --source globalvorno-cli skill delete commit-helpercreate/updatewriteSKILL.mdfrontmatter and content body.- Use
whereto inspect project/workspace/global resolution precedence. --project-rootscopes resolution to a project directory (defaults to cwd).
Automation
Section titled “Automation”Manage workspace automations stored in automations.json.
Commands
Section titled “Commands”vorno-cli automation listvorno-cli automation get <id>vorno-cli automation create(see flags below)vorno-cli automation update <id>(same flags as create, all optional)vorno-cli automation delete <id>vorno-cli automation enable <id>vorno-cli automation disable <id>vorno-cli automation duplicate <id>vorno-cli automation history [<id>] [--limit <n>]vorno-cli automation last-executed <id>vorno-cli automation test <id> [--match "..."]vorno-cli automation lintvorno-cli automation validate
Flags for automation create / update
Section titled “Flags for automation create / update”| Flag | Description |
|---|---|
--event <EventName> |
(required for create) Event trigger (e.g., UserPromptSubmit, SchedulerTick, LabelAdd) |
--name "<name>" |
Display name for the automation |
--matcher "<regex>" |
Regex pattern for event matching |
--cron "<expression>" |
Cron expression (for SchedulerTick events) |
--timezone "<tz>" |
IANA timezone (e.g., Europe/Budapest) |
--permission-mode safe|ask|allow-all |
Permission level for created sessions |
--enabled true|false |
Enable/disable the automation |
--labels "label1,label2" |
Comma-separated labels for created sessions |
--prompt "..." |
Prompt text (creates a prompt action automatically) |
--llm-connection "<slug>" |
LLM connection slug for the created session |
--model "<model-id>" |
Model ID for the created session |
Examples
Section titled “Examples”vorno-cli automation listvorno-cli automation validate# Simple prompt automation with flat flagsvorno-cli automation create --event UserPromptSubmit --prompt "Summarize this prompt"# Scheduled automation with flat flagsvorno-cli automation create --event SchedulerTick --cron "0 9 * * 1-5" --timezone "Europe/Budapest" --prompt "Give me a morning briefing" --labels "Scheduled" --permission-mode safe# Complex automation with --jsonvorno-cli automation create --event SchedulerTick --json '{"cron":"0 9 * * 1-5","actions":[{"type":"prompt","prompt":"Daily summary"}]}'vorno-cli automation update abc123 --name "Morning Report" --prompt "Updated prompt"vorno-cli automation update abc123 --enabled falsevorno-cli automation enable abc123vorno-cli automation duplicate abc123vorno-cli automation history abc123 --limit 10vorno-cli automation last-executed abc123vorno-cli automation test abc123 --match "UserPromptSubmit"vorno-cli automation lintvorno-cli automation delete abc123- Use flat flags for simple automations or
--jsonfor complex matchers with multipleactions. --promptis a shortcut that auto-wraps the text as a prompt action. Use--jsonwithactionsfor multi-action automations.lintprovides quick matcher/action hygiene checks (regex validity, missing actions, oversized prompt mention sets).historyandlast-executedread fromautomations-history.jsonlwhen present.validateruns full schema and semantic checks.
Permission
Section titled “Permission”Manage Explore mode permissions stored in permissions.json (workspace-level and per-source).
Commands
Section titled “Commands”vorno-cli permission listvorno-cli permission get [--source <slug>]vorno-cli permission set [--source <slug>] --json '{...}'vorno-cli permission add-mcp-pattern "<pattern>" [--comment "..."] [--source <slug>]vorno-cli permission add-api-endpoint --method GET|POST|... --path "<regex>" [--comment "..."] [--source <slug>]vorno-cli permission add-bash-pattern "<pattern>" [--comment "..."] [--source <slug>]vorno-cli permission add-write-path "<glob>" [--source <slug>]vorno-cli permission remove <index> --type mcp|api|bash|write-path|blocked [--source <slug>]vorno-cli permission validate [--source <slug>]vorno-cli permission reset [--source <slug>]
Without --source: operates on workspace-level permissions.json (global rules).
With --source <slug>: operates on that source’s permissions.json (auto-scoped).
Examples
Section titled “Examples”# List all permissions files (workspace + sources)vorno-cli permission list# Get workspace permissionsvorno-cli permission get# Get source-specific permissionsvorno-cli permission get --source linear# Add read-only MCP patterns for a sourcevorno-cli permission add-mcp-pattern "list" --comment "List operations" --source linearvorno-cli permission add-mcp-pattern "get" --comment "Get operations" --source linearvorno-cli permission add-mcp-pattern "search" --comment "Search operations" --source linear# Add API endpoint rulesvorno-cli permission add-api-endpoint --method GET --path ".*" --comment "All GET requests" --source stripe# Add bash patternsvorno-cli permission add-bash-pattern "^ls\\s" --comment "Allow ls"# Add write path globsvorno-cli permission add-write-path "/tmp/**"# Remove a rule by index and typevorno-cli permission remove 1 --type mcp --source linear# Replace entire configvorno-cli permission set --source github --json '{"allowedMcpPatterns":[{"pattern":"list","comment":"List ops"}]}'# Validate all permissionsvorno-cli permission validate# Validate source-specificvorno-cli permission validate --source linear# Delete permissions file (revert to defaults)vorno-cli permission reset --source linear- Source-level MCP patterns are auto-scoped at runtime (e.g.,
listbecomesmcp__<slug>__.*list). removeuses 0-based index within the specified rule type array. Usegetto see indices.validateruns schema + regex validation. Without--source, validates workspace + all sources.resetdeletes the permissions file, reverting to defaults.
Manage app-level and workspace-level theme settings.
Commands
Section titled “Commands”vorno-cli theme getvorno-cli theme validate [--preset <id>]vorno-cli theme list-presetsvorno-cli theme get-preset <id>vorno-cli theme set-color-theme <id>vorno-cli theme set-workspace-color-theme <id|default>vorno-cli theme set-override --json '{...}'vorno-cli theme reset-override
Examples
Section titled “Examples”# Inspect current theme statevorno-cli theme get
# Validate app override filevorno-cli theme validate
# Validate one preset filevorno-cli theme validate --preset nord
# List available presetsvorno-cli theme list-presets
# Inspect a specific presetvorno-cli theme get-preset dracula
# Set app default presetvorno-cli theme set-color-theme nord
# Set workspace overridevorno-cli theme set-workspace-color-theme dracula
# Clear workspace override (inherit app default)vorno-cli theme set-workspace-color-theme default
# Replace app-level theme.json overridevorno-cli theme set-override --json '{"accent":"oklch(0.62 0.21 293)","dark":{"accent":"oklch(0.68 0.21 293)"}}'
# Remove app-level override filevorno-cli theme reset-overrideset-color-themeandset-workspace-color-themerequire an existing preset ID (defaultis always valid).set-overridevalidatestheme.jsonshape before writing.- Workspace override is stored in
workspace/config.jsonunderdefaults.colorTheme. - App override is stored in
~/.craft-agent/theme.json.
Output contract
Section titled “Output contract”All commands return a single JSON envelope on stdout.
Success
Section titled “Success”{ "ok": true, "data": {}, "warnings": [] }{ "ok": false, "error": { "code": "USAGE_ERROR", "message": "...", "suggestion": "..." }, "warnings": []}Exit codes:
0success1execution/internal failure2usage/validation/input failure