CLI Reference¶
MiniBot installs a single minibot entry point that dispatches to five commands.
Command |
What it does |
|---|---|
|
Start the daemon — the long-running Telegram channel service. |
|
Open the local console channel (no Telegram bot required). |
|
Run the interactive wizard that writes |
|
Create, edit, and list the encrypted credential vault. |
|
Authenticate a ChatGPT Codex subscription; use |
Configuration file¶
Every command resolves config.toml the same way: an explicit --config PATH when the command
accepts one, otherwise the MINIBOT_CONFIG environment variable, otherwise ./config.toml.
If no file is found, built-in defaults are used.
Run the daemon¶
minibot
Runs in the foreground and logs to logs/. SIGINT/SIGTERM trigger a graceful shutdown
that stops the dispatcher and extensions. On boot it replays turns that were interrupted by a
previous shutdown or crash. There is no --config flag: set MINIBOT_CONFIG to point at a
different file.
Console channel¶
minibot console # interactive Textual TUI
minibot console --plain # plain prompt loop
minibot console --once "hello" # send one message and exit
echo "hello" | minibot console --once - # read the message from stdin
Flag |
Description |
|---|---|
|
Send one message and exit. Use |
|
Use the plain prompt loop instead of the Textual TUI. |
|
Chat id for the console session (default |
|
User id for the console session (default |
|
Per-turn timeout; values below |
|
Path to a |
|
Also log to stdout in addition to the log file. |
In the TUI, Esc stops the reply that is running, like /stop on Telegram (see Events). The plain loop
and --once have no stop key.
Interactive TUI keys: Enter sends, Ctrl+J inserts a newline, and Ctrl+T toggles display
of model thinking.
Configuration wizard¶
minibot configure
minibot configure --config path/to/config.toml
Walks through Telegram, providers, models, tool selection, the HTTP server (dashboard and browser
chat), and — when tasks are enabled — the task queue backend. The provider step takes as many targets as
you want, writes each one as its own [providers.<name>] section, and then asks which of them the main
agent runs on; the others stay available for delegation (see Providers and Multi-Agent Orchestration). Model
lists longer than a couple of dozen entries are filtered by a search prompt before the picker opens.
New files start from the Example profile; YOLO enables broad host execution
and integrations — file storage, HTTP/KV tools, MCP bridge, unrestricted Python and Bash, and
patch-based file editing, all on with nothing gated behind a confirmation step.
What makes YOLO a good idea isn’t whether MiniBot can reach personal accounts — email,
social media, whatever else — it’s the model behind it. Point it at something you’d actually
trust to act on those accounts unsupervised: a capable local model through Ollama, or a frontier
provider under a zero-data-retention agreement, or one you otherwise trust with that level of
access (OpenAI, Anthropic, Google, …). A weak or untrusted model with the full toolset is the
combination to avoid, not personal data as such.
Secrets are written in plain text, so keep config.toml private. The wizard also seeds
prompts/ next to the config file when that directory does not already exist.
Credential vault¶
minibot vault init # create ./secrets.vault.yml
minibot vault edit # decrypt into $EDITOR, re-encrypt on exit
minibot vault list # print secret names, never values
Each command takes an optional vault path (default secrets.vault.yml) and
--password-file PATH. Without it the password comes from MINIBOT_VAULT_PASSWORD, and
failing that an interactive prompt — the recommended method, since no password material reaches
disk or the process environment.
edit decrypts into a 0600 temporary file, runs $EDITOR (falling back to $VISUAL
then vi), and re-encrypts on exit. The edited document is parsed before it is encrypted, so
a syntax error leaves the existing vault untouched. Its format is one name: value per line;
values are never type-coerced, and a value needing whitespace, newlines, or a leading #/-
is written JSON-quoted:
github: ghp_example
numeric_key: 12345
private_key: "-----BEGIN KEY-----\nabc\n-----END KEY-----"
See Security & Sandboxing for how a stored secret is bound to a destination, and [vault] in
Configuration Reference for the daemon-side settings.