- name
- sonic-agent
- description
- Configure, extend, or contribute to Sonic Agent.
- version
- 2.2.0
- author
- Sonic Agent + Teknium
- license
- MIT
- platforms
- ["linux","macos","windows"]
- metadata
- {"sonic":{"tags":["sonic","setup","configuration","multi-agent","spawning","cli","gateway","development"],"homepage":"https://github.com/dabit3/sonic-agent","related_skills":["claude-code","codex","opencode"]}}
# Sonic Agent
Sonic Agent is an open-source AI agent framework by Nous Research that runs in your terminal, messaging platforms, and IDEs. It belongs to the same category as Claude Code (Anthropic), Codex (OpenAI), and OpenClaw — autonomous coding and task-execution agents that use tool calling to interact with your system. Sonic works with any LLM provider (OpenRouter, Anthropic, OpenAI, DeepSeek, local models, and 15+ others) and runs on Linux, macOS, and WSL.
What makes Sonic different:
- **Self-improving through skills** — Sonic learns from experience by saving reusable procedures as skills. When it solves a complex problem, discovers a workflow, or gets corrected, it can persist that knowledge as a skill document that loads into future sessions. Skills accumulate over time, making the agent better at your specific tasks and environment.
- **Persistent memory across sessions** — remembers who you are, your preferences, environment details, and lessons learned. Pluggable memory backends (built-in, Honcho, Mem0, and more) let you choose how memory works.
- **Multi-platform gateway** — the same agent runs on Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email, and 10+ other platforms with full tool access, not just chat.
- **Provider-agnostic** — swap models and providers mid-workflow without changing anything else. Credential pools rotate across multiple API keys automatically.
- **Profiles** — run multiple independent Sonic instances with isolated configs, sessions, skills, and memory.
- **Extensible** — plugins, MCP servers, custom tools, webhook triggers, cron scheduling, and the full Python ecosystem.
People use Sonic for software development, research, system administration, data analysis, content creation, home automation, and anything else that benefits from an AI agent with persistent context and full system access.
**This skill helps you work with Sonic Agent effectively** — setting it up, configuring features, spawning additional agent instances, troubleshooting issues, finding the right commands and settings, and understanding how the system works when you need to extend or contribute to it.
**Docs:** https://lightning-agent.nousresearch.com/docs/
## Scope & Verification
This skill is a concise operating guide, not the complete source of truth for every Sonic feature. If a Sonic feature, command, or setting is not mentioned here, do not treat that absence as evidence that it does not exist. Check the live repository and official docs before giving a negative answer.
Good verification targets:
- CLI commands: `sonic --help`, `sonic <command> --help`, and `sonic_cli/main.py`
- User documentation: https://lightning-agent.nousresearch.com/docs/
- Source tree: https://github.com/NousResearch/hermes-agent
## Quick Start
```bash
# Install
curl -fsSL https://raw.githubusercontent.com/dabit3/sonic-agent/main/scripts/install.sh | bash
# Interactive chat (default)
sonic
# Single query
sonic chat -q "What is the capital of France?"
# Setup wizard
sonic setup
# Change model/provider
sonic model
# Check health
sonic doctor
```
---
## CLI Reference
### Global Flags
```
sonic [flags] [command]
--version, -V Show version
--resume, -r SESSION Resume session by ID or title
--continue, -c [NAME] Resume by name, or most recent session
--worktree, -w Isolated git worktree mode (parallel agents)
--skills, -s SKILL Preload skills (comma-separate or repeat)
--profile, -p NAME Use a named profile
--yolo Skip dangerous command approval
--pass-session-id Include session ID in system prompt
```
No subcommand defaults to `chat`.
### Chat
```
sonic chat [flags]
-q, --query TEXT Single query, non-interactive
-m, --model MODEL Model (e.g. anthropic/claude-sonnet-4)
-t, --toolsets LIST Comma-separated toolsets
--provider PROVIDER Force provider (openrouter, anthropic, nous, etc.)
-v, --verbose Verbose output
-Q, --quiet Suppress banner, spinner, tool previews
--checkpoints Enable filesystem checkpoints (/rollback)
--source TAG Session source tag (default: cli)
```
### Configuration
```
sonic setup [section] Interactive wizard (model|terminal|gateway|tools|agent)
sonic model Interactive model/provider picker
sonic config View current config
sonic config edit Open config.yaml in $EDITOR
sonic config set KEY VAL Set a config value
sonic config path Print config.yaml path
sonic config env-path Print .env path
sonic config check Check for missing/outdated config
sonic config migrate Update config with new options
sonic auth Interactive credential manager
sonic auth add PROVIDER Add OAuth or API-key credential (e.g. nous, openai-codex, qwen-oauth)
sonic auth list List stored credentials
sonic auth remove PROVIDER Remove a stored credential
sonic doctor [--fix] Check dependencies and config
sonic status [--all] Show component status
```
### Tools & Skills
```
sonic tools Interactive tool enable/disable (curses UI)
sonic tools list Show all tools and status
sonic tools enable NAME Enable a toolset
sonic tools disable NAME Disable a toolset
sonic skills list List installed skills
sonic skills search QUERY Search the skills hub
sonic skills install ID Install a skill (ID can be a hub identifier OR a direct https://…/SKILL.md URL; pass --name to override when frontmatter has no name)
sonic skills inspect ID Preview without installing
sonic skills config Enable/disable skills per platform
sonic skills check Check for updates
sonic skills update Update outdated skills
sonic skills uninstall N Remove a hub skill
sonic skills publish PATH Publish to registry
sonic skills browse Browse all available skills
sonic skills tap add REPO Add a GitHub repo as skill source
```
### MCP Servers
```
sonic mcp serve Run Sonic as an MCP server
sonic mcp add NAME Add an MCP server (--url or --command)
sonic mcp remove NAME Remove an MCP server
sonic mcp list List configured servers
sonic mcp test NAME Test connection
sonic mcp configure NAME Toggle tool selection
```
How the built-in MCP client connects servers (stdio/HTTP), auto-discovers
their tools, and exposes them as first-class tools, plus catalog install
(`sonic mcp install <name>`): `skill_view(name="sonic-agent", file_path="references/native-mcp.md")`.
### Gateway (Messaging Platforms)
```
sonic gateway run Start gateway foreground
sonic gateway install Install as background service
sonic gateway start/stop Control the service
sonic gateway restart Restart the service
sonic gateway status Check status
sonic gateway setup Configure platforms
```
Supported platforms: Telegram, Discord, Slack, WhatsApp, Signal, Email, SMS, Matrix, Mattermost, Home Assistant, DingTalk, Feishu, WeCom, BlueBubbles (iMessage), Weixin (WeChat), API Server, Webhooks. Open WebUI connects via the API Server adapter.
Platform docs: https://lightning-agent.nousresearch.com/docs/user-guide/messaging/
### Sessions
```
sonic sessions list List recent sessions
sonic sessions browse Interactive picker
sonic sessions export OUT Export to JSONL
sonic sessions rename ID T Rename a session
sonic sessions delete ID Delete a session
sonic sessions prune Clean up old sessions (--older-than N days)
sonic sessions stats Session store statistics
```
### Cron Jobs
```
sonic cron list List jobs (--all for disabled)
sonic cron create SCHED Create: '30m', 'every 2h', '0 9 * * *'
sonic cron edit ID Edit schedule, prompt, delivery
sonic cron pause/resume ID Control job state
sonic cron run ID Trigger on next tick
sonic cron remove ID Delete a job
sonic cron status Scheduler status
```
### Webhooks
```
sonic webhook subscribe N Create route at /webhooks/<name>
sonic webhook list List subscriptions
sonic webhook remove NAME Remove a subscription
sonic webhook test NAME Send a test POST
```
Full setup, route config, payload templating, and event-driven agent-run
patterns: `skill_view(name="sonic-agent", file_path="references/webhooks.md")`.
### Profiles
```
sonic profile list List all profiles
sonic profile create NAME Create (--clone, --clone-all, --clone-from)
sonic profile use NAME Set sticky default
sonic profile delete NAME Delete a profile
sonic profile show NAME Show details
sonic profile alias NAME Manage wrapper scripts
sonic profile rename A B Rename a profile
sonic profile export NAME Export to tar.gz
sonic profile import FILE Import from archive
```
### Credential Pools
```
sonic auth add Interactive credential wizard
sonic auth list [PROVIDER] List pooled credentials
sonic auth remove P INDEX Remove by provider + index
sonic auth reset PROVIDER Clear exhaustion status
```
### Other
```
sonic insights [--days N] Usage analytics
sonic update Update to latest version
sonic pairing list/approve/revoke DM authorization
sonic plugins list/install/remove Plugin management
sonic honcho setup/status Honcho memory integration (requires honcho plugin)
sonic memory setup/status/off Memory provider config
sonic completion bash|zsh Shell completions
sonic acp ACP server (IDE integration)
sonic claw migrate Migrate from OpenClaw
sonic uninstall Uninstall Sonic
```
---
## Slash Commands (In-Session)
Type these during an interactive chat session. New commands land fairly
often; if something below looks stale, run `/help` in-session for the
authoritative list or see the [live slash commands reference](https://lightning-agent.nousresearch.com/docs/reference/slash-commands).
The registry of record is `sonic_cli/commands.py` — every consumer
(autocomplete, Telegram menu, Slack mapping, `/help`) derives from it.
### Session Control
```
/new (/reset) Fresh session
/clear Clear screen + new session (CLI)
/retry Resend last message
/undo Remove last exchange
/title [name] Name the session
/compress Manually compress context
/stop Kill background processes
/rollback [N] Restore filesystem checkpoint
/snapshot [sub] Create or restore state snapshots of Sonic config/state (CLI)
/background <prompt> Run prompt in background
/queue <prompt> Queue for next turn
/steer <prompt> Inject a message after the next tool call without interrupting
/agents (/tasks) Show active agents and running tasks
/resume [name] Resume a named session
/goal [text|sub] Set a standing goal Sonic works on across turns until achieved
(subcommands: status, pause, resume, clear)
/redraw Force a full UI repaint (CLI)
```
### Configuration
```
/config Show config (CLI)
/model [name] Show or change model
/personality [name] Set personality
/reasoning [level] Set reasoning (none|minimal|low|medium|high|xhigh|show|hide)
/verbose Cycle: off → new → all → verbose
/voice [on|off|tts] Voice mode
/yolo Toggle approval bypass
/busy [sub] Control what Enter does while Sonic is working (CLI)
(subcommands: queue, steer, interrupt, status)
/indicator [style] Pick the TUI busy-indicator style (CLI)
(styles: kaomoji, emoji, unicode, ascii)
/footer [on|off] Toggle gateway runtime-metadata footer on final replies
/skin [name] Change theme (CLI)
/statusbar Toggle status bar (CLI)
```
### Tools & Skills
```
/tools Manage tools (CLI)
/toolsets List toolsets (CLI)
/skills Search/install skills (CLI)
/skill <name> Load a skill into session
/reload-skills Re-scan ~/.sonic/skills/ for added/removed skills
/reload Reload .env variables into the running session (CLI)
/reload-mcp Reload MCP servers
/cron Manage cron jobs (CLI)
/curator [sub] Background skill maintenance (status, run, pin, archive, …)
/kanban [sub] Multi-profile collaboration board (tasks, links, comments)
/plugins List plugins (CLI)
```
### Gateway
```
/approve Approve a pending command (gateway)
/deny Deny a pending command (gateway)
/restart Restart gateway (gateway)
/sethome Set current chat as home channel (gateway)
/update Update Sonic to latest (gateway)
/topic [sub] Enable or inspect Telegram DM topic sessions (gateway)
/platforms (/gateway) Show platform connection status (gateway)
```
### Utility
```
/branch (/fork) Branch the current session
/fast Toggle priority/fast processing
/browser Open CDP browser connection
/history Show conversation history (CLI)
/save Save conversation to file (CLI)
/copy [N] Copy the last assistant response to clipboard (CLI)
/paste Attach clipboard image (CLI)
/image Attach local image file (CLI)
```
### Info
```
/help Show commands
/commands [page] Browse all commands (gateway)
/usage Token usage
/insights [days] Usage analytics
/status Session info (gateway)
/profile Active profile info
/debug Upload debug report (system info + logs) and get shareable links
```
### Exit
```
/quit (/exit, /q) Exit CLI
```
---
## Key Paths & Config
```
~/.sonic/config.yaml Main configuration
~/.sonic/.env API keys and secrets (under $SONIC_HOME if set)
$SONIC_HOME/skills/ Installed skills
~/.sonic/sessions/ Gateway routing index, request dumps, *.jsonl transcripts (and optional per-session JSON snapshots when sessions.write_json_snapshots: true)
~/.sonic/state.db Canonical session store (SQLite + FTS5)
~/.sonic/logs/ Gateway and error logs
~/.sonic/auth.json OAuth tokens and credential pools
~/.sonic/sonic-agent/ Source code (if git-installed)
```
Profiles use `~/.sonic/profiles/<name>/` with the same layout.
### Config Sections
Edit with `sonic config edit` or `sonic config set section.key value`.
| Section | Key options |
|---------|-------------|
| `model` | `default`, `provider`, `base_url`, `api_key`, `context_length` |
| `agent` | `max_turns` (90), `tool_use_enforcement` |
| `terminal` | `backend` (local/docker/ssh/modal), `cwd`, `timeout` (180) |
| `compression` | `enabled`, `threshold` (0.50), `target_ratio` (0.20) |
| `display` | `skin`, `tool_progress`, `show_reasoning`, `show_cost` |
| `stt` | `enabled`, `provider` (local/groq/openai/mistral) |
| `tts` | `provider` (edge/elevenlabs/openai/minimax/mistral/neutts) |
| `memory` | `memory_enabled`, `user_profile_enabled`, `provider` |
| `security` | `tirith_enabled`, `website_blocklist` |
| `delegation` | `model`, `provider`, `base_url`, `api_key`, `max_iterations` (50), `reasoning_effort` |
| `checkpoints` | `enabled`, `max_snapshots` (50) |
Full config reference: https://lightning-agent.nousresearch.com/docs/user-guide/configuration
### Providers
20+ providers supported. Set via `sonic model` or `sonic setup`.
| Provider | Auth | Key env var |
|----------|------|-------------|
| OpenRouter | API key | `OPENROUTER_API_KEY` |
| Anthropic | API key | `ANTHROPIC_API_KEY` |
| Nous Portal | OAuth | `sonic auth` |
| OpenAI Codex | OAuth | `sonic auth` |
| GitHub Copilot | Token | `COPILOT_GITHUB_TOKEN` |
| Google Gemini | API key | `GOOGLE_API_KEY` or `GEMINI_API_KEY` |
| DeepSeek | API key | `DEEPSEEK_API_KEY` |
| xAI / Grok | API key | `XAI_API_KEY` |
| Hugging Face | Token | `HF_TOKEN` |
| Z.AI / GLM | API key | `GLM_API_KEY` |
| MiniMax | API key | `MINIMAX_API_KEY` |
| MiniMax CN | API key | `MINIMAX_CN_API_KEY` |
| Kimi / Moonshot | API key | `KIMI_API_KEY` |
| Alibaba / DashScope | API key | `DASHSCOPE_API_KEY` |
| Xiaomi MiMo | API key | `XIAOMI_API_KEY` |
| Kilo Code | API key | `KILOCODE_API_KEY` |
| OpenCode Zen | API key | `OPENCODE_ZEN_API_KEY` |
| OpenCode Go | API key | `OPENCODE_GO_API_KEY` |
| Qwen OAuth | OAuth | `sonic auth add qwen-oauth` |
| Custom endpoint | Config | `model.base_url` + `model.api_key` in config.yaml |
| GitHub Copilot ACP | External | `COPILOT_CLI_PATH` or Copilot CLI |
Full provider docs: https://lightning-agent.nousresearch.com/docs/integrations/providers
### Toolsets
Enable/disable via `sonic tools` (interactive) or `sonic tools enable/disable NAME`.
| Toolset | What it provides |
|---------|-----------------|
عرض على GitHub