Files
Aetheel/docs/commands.md
tanmay11k 34dea65a07 feat: MCP server management and skills commands from chat, future-changes doc with UI/skills/MCP plans
- mcp list/add/remove commands to manage MCP servers from any channel
- skill list/show/create/remove/reload commands for skill management
- skill create generates a SKILL.md template, or ask the AI naturally
- Updated help text, commands.md with new commands
- future-changes.md: WebChat UI overhaul plan (OpenClaw-inspired), MCP management UI, skill creator system, ClawHub/GitHub skill import plans
2026-02-18 23:27:00 -05:00

207 lines
6.6 KiB
Markdown

# Aetheel Commands Reference
All commands work across every adapter (Slack, Discord, Telegram, WebChat).
## Chat Commands
Type these as regular messages in any channel or DM. No `/` prefix needed — just send the word as a message. The `/` prefix also works in DMs and on platforms that don't intercept it (Discord, Telegram, WebChat).
> In Slack channels, Slack intercepts `/` as a native slash command and blocks it. Use the prefix-free form instead (e.g. `engine claude` not `/engine claude`). In Slack DMs with the bot, both forms work.
### General
| Command | Description |
|---|---|
| `status` | Show bot status, engine, model, sessions |
| `help` | Show all available commands |
| `time` | Current server time |
| `sessions` | Active session count + cleanup stale |
| `reload` | Reload config.json and skills |
| `subagents` | List active background tasks |
### Runtime Switching (live, no restart needed)
| Command | Description |
|---|---|
| `engine` | Show current engine (opencode/claude) |
| `engine opencode` | Switch to OpenCode runtime |
| `engine claude` | Switch to Claude Code runtime |
| `model` | Show current model |
| `model <name>` | Switch model (e.g. `model anthropic/claude-sonnet-4-20250514`) |
| `provider` | Show current provider (OpenCode only) |
| `provider <name>` | Switch provider (e.g. `provider anthropic`, `provider openai`) |
| `usage` | Show LLM usage stats, costs, and rate limit history |
Engine, model, and provider changes take effect immediately and are persisted to `config.json` so they survive restarts.
#### Examples
```
engine claude
model claude-sonnet-4-20250514
engine opencode
model anthropic/claude-sonnet-4-20250514
provider anthropic
model openai/gpt-4o
provider openai
model google/gemini-2.5-pro
provider google
```
### Configuration
| Command | Description |
|---|---|
| `config` | Show config summary (engine, model, adapters) |
| `config show` | Dump full config.json |
| `config set <key> <value>` | Edit a config value (dotted notation) |
#### Config Set Examples
```
config set runtime.timeout_seconds 300
config set claude.max_turns 5
config set webchat.enabled true
config set discord.enabled true
config set webhooks.token my-secret-token
config set heartbeat.silent true
```
After `config set`, run `reload` to apply changes that don't auto-apply (adapter changes require a restart).
### Scheduler
| Command | Description |
|---|---|
| `cron list` | List all scheduled jobs |
| `cron remove <id>` | Remove a scheduled job by ID |
### MCP Servers
| Command | Description |
|---|---|
| `mcp list` | List configured MCP servers |
| `mcp add <name> <command> [args]` | Add a new MCP server |
| `mcp remove <name>` | Remove an MCP server |
Examples:
```
mcp add brave-search uvx brave-search-mcp@latest
mcp add filesystem npx @anthropic-ai/mcp-filesystem /home/user/projects
mcp add github uvx github-mcp-server
mcp remove brave-search
```
### Skills
| Command | Description |
|---|---|
| `skill list` | List all loaded skills |
| `skill show <name>` | View a skill's content |
| `skill create <name>` | Create a new skill template |
| `skill remove <name>` | Remove a skill |
| `skill reload` | Reload all skills |
You can also create skills via natural language — just ask: "Create a skill for checking stock prices" and the AI will write the SKILL.md for you.
### AI Chat
Any message that isn't a command is sent to the AI. The AI can also trigger actions by including tags in its response:
| AI Action Tag | What It Does |
|---|---|
| `[ACTION:remind\|<minutes>\|<message>]` | Schedule a one-shot reminder |
| `[ACTION:cron\|<cron_expr>\|<prompt>]` | Schedule a recurring cron job |
| `[ACTION:spawn\|<task>]` | Spawn a background subagent |
---
## Terminal Commands
After installation, the `aetheel` command is available in your shell.
### Service Management
| Command | Description |
|---|---|
| `aetheel start` | Start Aetheel in the foreground |
| `aetheel stop` | Stop the background service |
| `aetheel restart` | Restart the background service |
| `aetheel status` | Show install and service status |
| `aetheel logs` | Tail the live log file |
### Setup & Maintenance
| Command | Description |
|---|---|
| `aetheel setup` | Re-run the interactive setup wizard |
| `aetheel update` | Pull latest code + update dependencies |
| `aetheel doctor` | Run diagnostics (config, tokens, runtimes) |
| `aetheel config` | Open config.json in your `$EDITOR` |
### Pass-Through
Any other arguments are passed directly to `main.py`:
```bash
aetheel --test # Echo mode, no AI
aetheel --claude # Override: use Claude engine
aetheel --model gpt-4o # Override: specific model
aetheel --log DEBUG # Override: debug logging
```
These flags are optional overrides. All settings come from `~/.aetheel/config.json` by default.
---
## Config File Reference
All features are controlled by `~/.aetheel/config.json`. No flags required.
```jsonc
{
"runtime": {
"engine": "opencode", // "opencode" or "claude"
"mode": "cli", // "cli" or "sdk"
"model": null, // e.g. "anthropic/claude-sonnet-4-20250514"
"provider": null, // e.g. "anthropic", "openai", "google"
"timeout_seconds": 120
},
"claude": {
"model": null, // e.g. "claude-sonnet-4-20250514"
"max_turns": 3,
"no_tools": false
},
"slack": { "enabled": true },
"telegram": { "enabled": false },
"discord": { "enabled": false, "listen_channels": [] },
"webchat": { "enabled": false, "port": 8080 },
"webhooks": { "enabled": false, "port": 8090, "token": "" },
"heartbeat": { "enabled": true },
"hooks": { "enabled": true }
}
```
Adapters auto-enable when their token is set in `.env`, even if `enabled` is `false` in config.
---
## Auto-Failover & Rate Limit Handling
When a rate limit or quota error is detected from the active engine:
1. Aetheel notifies you in the channel with the error details
2. Automatically attempts to failover to the other engine (claude → opencode or vice versa)
3. If failover succeeds, the response is delivered and the active engine is switched
4. If failover also fails, both errors are reported
Rate limit detection covers: HTTP 429, "rate limit", "quota exceeded", "too many requests", "usage limit", "credit balance", "overloaded", and similar patterns from both Claude Code and OpenCode.
Use `usage` to see cumulative stats including rate limit hits and failover count.
Note: Claude Code's `--output-format json` returns `cost_usd` per request. OpenCode does not currently expose per-request cost in its CLI output, so cost tracking is only available for the Claude engine.