vBot CLI
The vbot CLI is the automation surface for configuring and operating a vBot instance: run the command, verify the result, report what changed. One async Runtime lives behind the server; the CLI, WebUI, Desktop, and Channels are Accessors to that same system rather than separate stores.
MCP connections
For MCP installation, configuration, or use, read references/mcp.md. It covers setup from a supplied link on the vBot machine, Agent grants, targeted discovery, saved-result reading, user input, and verification through an actual application operation.
System and paths
Keep these boundaries separate:
vbot_root is the checkout or installation containing vBot code and bundled resources.
data_dir is the server instance's local runtime state and credentials. ~/.vbot is only the product default, not a path to assume.
- A Project
cwd is the external working directory where file and shell Tools operate for that Project; it is referenced by Project state but is not contained by the data directory.
- An Identity Agent's Workspace is its identity and Memory home. It defaults inside the Agent's data directory but may be configured as an external absolute path.
- A Session is persisted conversation history owned by one Agent; a Run is one active execution inside it and is not a separate top-level data directory.
Run vbot home before local filesystem investigation to resolve vbot_root and data_dir. The command reports the machine where it runs and does not query a server selected with --host; when targeting a remote vBot server, use its CLI/RPC diagnostics unless you separately have filesystem access to that server host.
Read references/system-layout.md before searching runtime files, diagnosing missing or corrupt stored state, making an unavoidable manual edit, or planning a data backup, move, or reset. Use the owning CLI area first and inspect files only when the semantic command cannot answer the question.
Rules
- Primary identifiers are positional (
vbot agent show assistant); secondary parameters are flags. vbot <area> <command> --help shows exact flags plus a usage example.
- Only
server start|stop|restart|status, desktop, update, uninstall, autostart, and doctor work without a running target server. Everything else needs one. When operating the vBot instance hosting the current Run, execute the requested command directly — the Run already proves that server is available. Check vbot server status and start with vbot server start only when targeting another instance or troubleshooting connectivity.
- Non-default instance: add
--host, --port, --data-dir to every command.
- Prefer CLI commands over direct file edits — settings, agents, channels, cron jobs, Bootstrap jobs, prompt blocks, and provider keys all have commands. If a manual JSON edit was unavoidable, validate with
vbot doctor config.
- Before
vbot update when it will restart the server, arm and verify a one-shot Bootstrap in the current Session so the Run resumes after startup and checks the result. Follow references/server.md; do not create one for --no-restart unless the user separately wants a later-startup check.
- Never echo secrets in output. API keys go through
provider set-key, extension secrets through extensions <name> set <field> --stdin, and managed channel tokens through channel add ... --token-stdin or channel set-token ... --stdin. Channel tokens never belong in shell arguments; use --token-env only when an external deployment environment already owns the variable.
- Inspect before changing; verify after with the matching list/show/status command. For Settings, discover paths with
vbot config list [prefix], inspect type/default/lifecycle with vbot config describe <path>, then verify the effective result with vbot config get <path> --details.
- Treat
vbot model show and vbot task-model options as authoritative for Model capabilities, voices, and accepted Task Model values. Never infer one Model's options from another Model or from generic provider documentation.
- Mutation output is a verification result, not merely an acknowledgement: Agent, Project, Channel, Cron, and Bootstrap create/update commands print the saved resource; Project removal prints affected rooted Agents and file-copy/backup effects. Read it before issuing a separate verification call, then use
show/list when the requested outcome depends on live discovery or runtime health.
- Keep Identity Agent, Project Agent, Workspace, and Project cwd separate. A generic request to create an Agent means an Identity Agent; root it in a Project when its file/shell work should run there. A Project Agent is a repo-discovered Config Agent with no Workspace, SOUL, or Memory and is created only when the user explicitly asks for a Project Team profile. See
references/agents-projects.md.
- Follow CLI error hints (
did you mean, candidate lists) before retrying. If another process occupies the port, report it — don't kill it.
- Finish with a compact report: commands run, what changed, verification result, and any remaining user action (complete an OAuth login, send a Telegram message, ...).
Conventions
- Model references are
<provider>/<model-id>, optionally pinned to a connection and credential account with ::<connection>[:<account>] (e.g. openai/gpt-5.2::api-key:work).
- Project agents are addressed
agent@projekt (e.g. orchestrator@vbot) in session, cron, and prompt-preview commands; a bare id means an identity agent.
- Public Settings paths use dots for fixed segments and bracketed JSON strings for dynamic keys:
web_search.provider and 'local_models.context_windows["ollama/qwen2.5:7b"]'. Quote the whole path when it contains brackets. JSON values (arrays, objects, booleans) are passed as one shell argument: vbot config set skills.directories '["C:/skills"]'.
- List-replacing flags (
--allow, --allowed-tools, --allowed-skills, --auto-load, Project Skill policy flags, Channel mention/owner flags, and --subagent-allow) replace the full list — pass every value that should remain.
Areas
Read the reference file before using an area's write commands — it has the exact flags and the gotchas.
| Area |
Commands |
Reference |
server |
start stop restart status |
references/server.md |
update |
update the install from git, restart |
references/server.md |
uninstall |
remove the application, reset its data, or both |
references/server.md |
autostart |
enable disable status |
references/server.md |
desktop |
open the desktop window |
references/server.md |
home |
show resolved application and data directories |
references/server.md |
doctor |
settings config — validate config files locally |
references/server.md |
provider |
list status usage usage-history usage-history-clear enable disable set-key unset-key connect connect-status disconnect |
references/providers.md |
model |
list show refresh [<provider>] |
references/providers.md |
task-model |
list status targets options set set-option unset-option clear |
references/providers.md |
agent |
list show create update rename reorder delete |
references/agents-projects.md |
project |
add list show set set-override clear-override detect rm |
references/agents-projects.md |
memory |
list add replace remove — pinned Memory entries per Agent |
references/memory.md |
session |
list create fork rename set-compaction-policy delete link-channel |
references/agents-projects.md |
session-store |
status snapshot list snapshot create snapshot verify snapshot restore incident acknowledge |
references/session-store.md |
channel |
add list status update set-token enable disable remove |
references/channels.md |
cron |
list create update delete enable disable |
references/cron.md |
bootstrap |
list create update delete enable disable |
references/bootstrap.md |
config |
list describe effective raw get set unset patch |
references/configuration.md |
prompt |
list update reset create remove set-layout reset-layout preview |
references/configuration.md |
extensions |
list reload <name> <name> set enable disable |
references/configuration.md |
log |
list read |
references/diagnostics.md |
debug |
status probe traces trace clear |
references/diagnostics.md |
statistics |
overview usage runs errors tools skills |
references/diagnostics.md |
skill |
list inventory read create update delete write-file remove-file disable enable share unshare |
references/skills.md |
tool |
list — public tools exposed to agents |
— |
First-time Telegram bot setup (BotFather, token, chat-id discovery, privacy mode): follow references/telegram-setup.md.
Quick reference
The most common single commands:
vbot provider set-key <provider-id> <api-key> --refresh-models # activate a provider with a user-supplied key
vbot model list --task chat # exact runnable Model ids for an Agent
vbot model show <provider>/<model-id> # complete Model capabilities and metadata
vbot task-model options text_to_speech # current TTS target, valid voices, saved/effective options
vbot agent update <agent-id> --model <provider>/<model-id> # switch an agent's model
vbot config set <path> <value> # change one cataloged Settings path
vbot channel status <channel-id> # channel health + denied inbound chats
vbot bootstrap create --current-session --name "Verify restart" --prompt "Check status and logs, then report" --mode once
vbot server restart # apply code or unavoidable manual config edits
1---2name: vbot-cli3description: Configure, inspect, and operate vBot through the vbot CLI, including locating the vBot root and runtime data. Use when asked to start, stop, restart, update, or uninstall vBot, set up provider credentials (API key or OAuth), find vBot files or diagnose stored state, list/add/edit/remove agents, projects, sessions, channels (Telegram, Discord), cron jobs, Bootstrap Runs, prompts, skills, pinned Memory entries, extensions and MCP connections, or settings, inspect complete Model data, or configure specialized Task Models such as TTS/STT including model-specific voices and options — as well as to inspect tools, logs, debug traces, Provider subscription usage and limit history, and Session usage statistics (tokens, runs, errors, tool and skill usage).4---56# vBot CLI78The `vbot` CLI is the automation surface for configuring and operating a vBot instance: run the command, verify the result, report what changed. One async Runtime lives behind the server; the CLI, WebUI, Desktop, and Channels are Accessors to that same system rather than separate stores.910## MCP connections1112For MCP installation, configuration, or use, read `references/mcp.md`. It covers setup from a supplied link on the vBot machine, Agent grants, targeted discovery, saved-result reading, user input, and verification through an actual application operation.1314## System and paths1516Keep these boundaries separate:1718- `vbot_root` is the checkout or installation containing vBot code and bundled resources.19- `data_dir` is the server instance's local runtime state and credentials. `~/.vbot` is only the product default, not a path to assume.20- A Project `cwd` is the external working directory where file and shell Tools operate for that Project; it is referenced by Project state but is not contained by the data directory.21- An Identity Agent's Workspace is its identity and Memory home. It defaults inside the Agent's data directory but may be configured as an external absolute path.22- A Session is persisted conversation history owned by one Agent; a Run is one active execution inside it and is not a separate top-level data directory.2324Run `vbot home` before local filesystem investigation to resolve `vbot_root` and `data_dir`. The command reports the machine where it runs and does not query a server selected with `--host`; when targeting a remote vBot server, use its CLI/RPC diagnostics unless you separately have filesystem access to that server host.2526Read `references/system-layout.md` before searching runtime files, diagnosing missing or corrupt stored state, making an unavoidable manual edit, or planning a data backup, move, or reset. Use the owning CLI area first and inspect files only when the semantic command cannot answer the question.2728## Rules2930- Primary identifiers are positional (`vbot agent show assistant`); secondary parameters are flags. `vbot <area> <command> --help` shows exact flags plus a usage example.31- Only `server start|stop|restart|status`, `desktop`, `update`, `uninstall`, `autostart`, and `doctor` work without a running target server. Everything else needs one. When operating the vBot instance hosting the current Run, execute the requested command directly — the Run already proves that server is available. Check `vbot server status` and start with `vbot server start` only when targeting another instance or troubleshooting connectivity.32- Non-default instance: add `--host`, `--port`, `--data-dir` to every command.33- Prefer CLI commands over direct file edits — settings, agents, channels, cron jobs, Bootstrap jobs, prompt blocks, and provider keys all have commands. If a manual JSON edit was unavoidable, validate with `vbot doctor config`.34- Before `vbot update` when it will restart the server, arm and verify a one-shot Bootstrap in the current Session so the Run resumes after startup and checks the result. Follow `references/server.md`; do not create one for `--no-restart` unless the user separately wants a later-startup check.35- Never echo secrets in output. API keys go through `provider set-key`, extension secrets through `extensions <name> set <field> --stdin`, and managed channel tokens through `channel add ... --token-stdin` or `channel set-token ... --stdin`. Channel tokens never belong in shell arguments; use `--token-env` only when an external deployment environment already owns the variable.36- Inspect before changing; verify after with the matching list/show/status command. For Settings, discover paths with `vbot config list [prefix]`, inspect type/default/lifecycle with `vbot config describe <path>`, then verify the effective result with `vbot config get <path> --details`.37- Treat `vbot model show` and `vbot task-model options` as authoritative for Model capabilities, voices, and accepted Task Model values. Never infer one Model's options from another Model or from generic provider documentation.38- Mutation output is a verification result, not merely an acknowledgement: Agent, Project, Channel, Cron, and Bootstrap create/update commands print the saved resource; Project removal prints affected rooted Agents and file-copy/backup effects. Read it before issuing a separate verification call, then use `show`/`list` when the requested outcome depends on live discovery or runtime health.39- Keep Identity Agent, Project Agent, Workspace, and Project cwd separate. A generic request to create an Agent means an Identity Agent; root it in a Project when its file/shell work should run there. A Project Agent is a repo-discovered Config Agent with no Workspace, SOUL, or Memory and is created only when the user explicitly asks for a Project Team profile. See `references/agents-projects.md`.40- Follow CLI error hints (`did you mean`, candidate lists) before retrying. If another process occupies the port, report it — don't kill it.41- Finish with a compact report: commands run, what changed, verification result, and any remaining user action (complete an OAuth login, send a Telegram message, ...).4243## Conventions4445- Model references are `<provider>/<model-id>`, optionally pinned to a connection and credential account with `::<connection>[:<account>]` (e.g. `openai/gpt-5.2::api-key:work`).46- Project agents are addressed `agent@projekt` (e.g. `orchestrator@vbot`) in session, cron, and prompt-preview commands; a bare id means an identity agent.47- Public Settings paths use dots for fixed segments and bracketed JSON strings for dynamic keys: `web_search.provider` and `'local_models.context_windows["ollama/qwen2.5:7b"]'`. Quote the whole path when it contains brackets. JSON values (arrays, objects, booleans) are passed as one shell argument: `vbot config set skills.directories '["C:/skills"]'`.48- List-replacing flags (`--allow`, `--allowed-tools`, `--allowed-skills`, `--auto-load`, Project Skill policy flags, Channel mention/owner flags, and `--subagent-allow`) replace the full list — pass every value that should remain.4950## Areas5152Read the reference file before using an area's write commands — it has the exact flags and the gotchas.5354| Area | Commands | Reference |55|---|---|---|56| `server` | `start` `stop` `restart` `status` | `references/server.md` |57| `update` | update the install from git, restart | `references/server.md` |58| `uninstall` | remove the application, reset its data, or both | `references/server.md` |59| `autostart` | `enable` `disable` `status` | `references/server.md` |60| `desktop` | open the desktop window | `references/server.md` |61| `home` | show resolved application and data directories | `references/server.md` |62| `doctor` | `settings` `config` — validate config files locally | `references/server.md` |63| `provider` | `list` `status` `usage` `usage-history` `usage-history-clear` `enable` `disable` `set-key` `unset-key` `connect` `connect-status` `disconnect` | `references/providers.md` |64| `model` | `list` `show` `refresh [<provider>]` | `references/providers.md` |65| `task-model` | `list` `status` `targets` `options` `set` `set-option` `unset-option` `clear` | `references/providers.md` |66| `agent` | `list` `show` `create` `update` `rename` `reorder` `delete` | `references/agents-projects.md` |67| `project` | `add` `list` `show` `set` `set-override` `clear-override` `detect` `rm` | `references/agents-projects.md` |68| `memory` | `list` `add` `replace` `remove` — pinned Memory entries per Agent | `references/memory.md` |69| `session` | `list` `create` `fork` `rename` `set-compaction-policy` `delete` `link-channel` | `references/agents-projects.md` |70| `session-store` | `status` `snapshot list` `snapshot create` `snapshot verify` `snapshot restore` `incident acknowledge` | `references/session-store.md` |71| `channel` | `add` `list` `status` `update` `set-token` `enable` `disable` `remove` | `references/channels.md` |72| `cron` | `list` `create` `update` `delete` `enable` `disable` | `references/cron.md` |73| `bootstrap` | `list` `create` `update` `delete` `enable` `disable` | `references/bootstrap.md` |74| `config` | `list` `describe` `effective` `raw` `get` `set` `unset` `patch` | `references/configuration.md` |75| `prompt` | `list` `update` `reset` `create` `remove` `set-layout` `reset-layout` `preview` | `references/configuration.md` |76| `extensions` | `list` `reload` `<name>` `<name> set` `enable` `disable` | `references/configuration.md` |77| `log` | `list` `read` | `references/diagnostics.md` |78| `debug` | `status` `probe` `traces` `trace` `clear` | `references/diagnostics.md` |79| `statistics` | `overview` `usage` `runs` `errors` `tools` `skills` | `references/diagnostics.md` |80| `skill` | `list` `inventory` `read` `create` `update` `delete` `write-file` `remove-file` `disable` `enable` `share` `unshare` | `references/skills.md` |81| `tool` | `list` — public tools exposed to agents | — |8283First-time Telegram bot setup (BotFather, token, chat-id discovery, privacy mode): follow `references/telegram-setup.md`.8485## Quick reference8687The most common single commands:8889```bash90vbot provider set-key <provider-id> <api-key> --refresh-models # activate a provider with a user-supplied key91vbot model list --task chat # exact runnable Model ids for an Agent92vbot model show <provider>/<model-id> # complete Model capabilities and metadata93vbot task-model options text_to_speech # current TTS target, valid voices, saved/effective options94vbot agent update <agent-id> --model <provider>/<model-id> # switch an agent's model95vbot config set <path> <value> # change one cataloged Settings path96vbot channel status <channel-id> # channel health + denied inbound chats97vbot bootstrap create --current-session --name "Verify restart" --prompt "Check status and logs, then report" --mode once98vbot server restart # apply code or unavoidable manual config edits99```