diff --git a/README.md b/README.md
index 5208389bf..d19f455b3 100644
--- a/README.md
+++ b/README.md
@@ -5,1772 +5,117 @@
# Hermes Agent ⚕
-| A real terminal interface | Not a web UI — a full TUI with multiline editing, slash-command autocomplete, conversation history, interrupt-and-redirect, and streaming tool output. Built for people who live in the terminal and want an agent that keeps up. |
-| Lives where you do | Telegram, Discord, Slack, WhatsApp, and CLI — all from a single gateway process. Send it a voice memo from your phone, get a researched answer with citations. Cross-platform message mirroring means a conversation started on Telegram can continue on Discord. |
-| Grows the longer it runs | Persistent memory across sessions — the agent remembers your preferences, your projects, your environment. When it solves a hard problem, it writes a skill document for next time. Skills are searchable, shareable, and compatible with the agentskills.io open standard. A Skills Hub lets you install community skills or publish your own. |
-| Scheduled automations | Built-in cron scheduler with delivery to any platform. Set up a daily AI funding report delivered to Telegram, a nightly backup verification on Discord, a weekly dependency audit that opens PRs, or a morning news briefing — all in natural language. The gateway runs them unattended. |
-| Delegates and parallelizes | Spawn isolated subagents for parallel workstreams — each gets its own conversation and terminal. The agent can also write Python scripts that call its own tools via RPC, collapsing multi-step pipelines into a single turn with zero intermediate context cost. |
-| Real sandboxing | Five terminal backends — local, Docker, SSH, Singularity, and Modal — with persistent workspaces, background process management, with the option to make these machines ephemeral. Run it against a remote machine so it can't modify its own code or read private API keys for added security. |
-| Research-ready | Batch runner for generating thousands of tool-calling trajectories in parallel. Atropos RL environments for training models with reinforcement learning on agentic tasks. Trajectory compression for fitting training data into token budgets. |
+| A real terminal interface | Full TUI with multiline editing, slash-command autocomplete, conversation history, interrupt-and-redirect, and streaming tool output. |
+| Lives where you do | Telegram, Discord, Slack, WhatsApp, and CLI — all from a single gateway process. Voice memo transcription, cross-platform conversation continuity. |
+| Grows the longer it runs | Persistent memory across sessions. When it solves a hard problem, it writes a skill document for next time. Skills are searchable, shareable, and compatible with the agentskills.io open standard. |
+| Scheduled automations | Built-in cron scheduler with delivery to any platform. Daily reports, nightly backups, weekly audits — all in natural language, running unattended. |
+| Delegates and parallelizes | Spawn isolated subagents for parallel workstreams. Write Python scripts that call tools via RPC, collapsing multi-step pipelines into zero-context-cost turns. |
+| Real sandboxing | Five terminal backends — local, Docker, SSH, Singularity, and Modal — with persistent workspaces and container security hardening. |
+| Research-ready | Batch trajectory generation, Atropos RL environments, trajectory compression for training the next generation of tool-calling models. |
---
## Quick Install
-**Linux / macOS / WSL:**
```bash
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
```
-**Windows (PowerShell):**
-```powershell
-irm https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.ps1 | iex
-```
+Works on Linux, macOS, and WSL2. The installer handles everything — Python, Node.js, dependencies, and the `hermes` command. No prerequisites except git.
-**Windows (CMD):**
-```cmd
-curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.cmd -o install.cmd && install.cmd && del install.cmd
-```
+> **Windows:** Native Windows is not supported. Please install [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install) and run the command above.
-> **Windows note:** [Git for Windows](https://git-scm.com/download/win) is required. Hermes uses Git Bash internally for shell commands.
+After installation:
-The installer will:
-- Install [uv](https://docs.astral.sh/uv/) (fast Python package manager) if not present
-- Install Python 3.11 via uv if not already available (no sudo needed)
-- Clone to `~/.hermes/hermes-agent` (with submodules: mini-swe-agent, tinker-atropos)
-- Create a virtual environment with Python 3.11
-- Install all dependencies and submodule packages
-- Set up the `hermes` command globally (no venv activation needed)
-- Run the interactive setup wizard
-
-After installation, reload your shell and run:
```bash
-source ~/.bashrc # or: source ~/.zshrc (Windows: restart your terminal)
-hermes setup # Configure API keys (if you skipped during install)
-hermes # Start chatting!
+source ~/.bashrc # reload shell (or: source ~/.zshrc)
+hermes setup # configure your LLM provider
+hermes # start chatting!
```
---
## Getting Started
-The installer (`hermes setup`) walks you through selecting a provider and model. Once that's done:
-
```bash
-hermes # Start chatting!
-hermes model # Switch provider or model interactively
-hermes tools # See all available tools
+hermes # Interactive CLI — start a conversation
+hermes model # Switch provider or model
+hermes setup # Re-run the setup wizard
+hermes gateway # Start the messaging gateway (Telegram, Discord, etc.)
+hermes update # Update to the latest version
+hermes doctor # Diagnose any issues
```
-This lets you switch between **Nous Portal** (subscription), **OpenRouter** (200+ models, pay-per-use), or a **custom endpoint** (VLLM, SGLang, any OpenAI-compatible API) at any time.
-
-### 🔒 Recommended: Run with a Sandboxed Terminal
-
-By default, Hermes runs commands directly on your machine (`local` backend). For safer use we recommend running with a **sandboxed terminal backend** so the agent **cannot access its own code, config, or API keys**:
-
-```bash
-# Option A: SSH into a separate machine (recommended for production)
-hermes config set terminal.backend ssh
-hermes config set TERMINAL_SSH_HOST my-server.example.com
-hermes config set TERMINAL_SSH_USER myuser
-
-# Option B: Docker container (good for local isolation)
-hermes config set terminal.backend docker
-
-# Option C: Modal cloud sandbox (serverless, no infra to manage)
-hermes config set terminal.backend modal
-```
-
-All container/remote backends support **persistent workspaces** — installed packages, files, and state survive across sessions. The agent gets a full working environment but can't read `~/.hermes/.env`, modify its own source code, or access your host filesystem.
-
-See [Terminal & Process Management](#-terminal--process-management) for full configuration options.
+📖 **[Full documentation →](https://hermes-agent.nousresearch.com/docs/)**
---
-## Updating
-
-```bash
-hermes update # Update to latest version (prompts for new config)
-```
-
-**Uninstalling:**
-```bash
-hermes uninstall # Uninstall (can keep configs for later reinstall)
-```
-
-Or manually:
-```bash
-rm -f ~/.local/bin/hermes
-rm -rf /path/to/hermes-agent
-rm -rf ~/.hermes # Optional — keep if you plan to reinstall
-```
-
----
-
-## Inference Providers
-
-You need at least one way to connect to an LLM. Use `hermes model` to switch providers and models interactively, or configure directly:
-
-| Provider | Setup |
-|----------|-------|
-| **Nous Portal** | `hermes model` (OAuth, subscription-based) |
-| **OpenAI Codex** | `hermes model` (ChatGPT OAuth, uses Codex models) |
-| **OpenRouter** | `OPENROUTER_API_KEY` in `~/.hermes/.env` |
-| **Custom Endpoint** | `OPENAI_BASE_URL` + `OPENAI_API_KEY` in `~/.hermes/.env` |
-
-**Codex note:** The OpenAI Codex provider authenticates via device code (open a URL, enter a code). Credentials are stored at `~/.codex/auth.json` and auto-refresh. No Codex CLI installation required.
-
-**Note:** Even when using Nous Portal, Codex, or a custom endpoint, some tools (vision, web summarization, MoA) use OpenRouter independently. An `OPENROUTER_API_KEY` enables these tools.
-
----
-
-## Configuration
-
-All your settings are stored in `~/.hermes/` for easy access:
-
-```text
-~/.hermes/
-├── config.yaml # Settings (model, terminal, TTS, compression, etc.)
-├── .env # API keys and secrets
-├── auth.json # OAuth provider credentials (Nous Portal, etc.)
-├── SOUL.md # Optional: global persona (agent embodies this personality)
-├── memories/ # Persistent memory (MEMORY.md, USER.md)
-├── skills/ # Agent-created skills (managed via skill_manage tool)
-├── cron/ # Scheduled jobs
-├── sessions/ # Gateway sessions
-└── logs/ # Logs (errors.log, gateway.log — secrets auto-redacted)
-```
-
-### Managing Configuration
-
-```bash
-hermes config # View current configuration
-hermes config edit # Open config.yaml in your editor
-hermes config set KEY VAL # Set a specific value
-hermes config check # Check for missing options (after updates)
-hermes config migrate # Interactively add missing options
-
-# Examples:
-hermes config set model anthropic/claude-opus-4
-hermes config set terminal.backend docker
-hermes config set OPENROUTER_API_KEY sk-or-... # Saves to .env
-```
-
-### Configuration Precedence
-
-Settings are resolved in this order (highest priority first):
-
-1. **CLI arguments** — `hermes chat --max-turns 100` (per-invocation override)
-2. **`~/.hermes/config.yaml`** — the primary config file for all non-secret settings
-3. **`~/.hermes/.env`** — fallback for env vars; **required** for secrets (API keys, tokens, passwords)
-4. **Built-in defaults** — hardcoded safe defaults when nothing else is set
-
-**Rule of thumb:** Secrets (API keys, bot tokens, passwords) go in `.env`. Everything else (model, terminal backend, compression settings, memory limits, toolsets) goes in `config.yaml`. When both are set, `config.yaml` wins for non-secret settings.
-
-The `hermes config set` command automatically routes values to the right file — API keys are saved to `.env`, everything else to `config.yaml`.
-
-### Optional API Keys
-
-| Feature | Provider | Env Variable |
-|---------|----------|--------------|
-| Web scraping | [Firecrawl](https://firecrawl.dev/) | `FIRECRAWL_API_KEY` |
-| Browser automation | [Browserbase](https://browserbase.com/) | `BROWSERBASE_API_KEY`, `BROWSERBASE_PROJECT_ID` |
-| Image generation | [FAL](https://fal.ai/) | `FAL_KEY` |
-| Premium TTS voices | [ElevenLabs](https://elevenlabs.io/) | `ELEVENLABS_API_KEY` |
-| OpenAI TTS + voice transcription | [OpenAI](https://platform.openai.com/api-keys) | `VOICE_TOOLS_OPENAI_KEY` |
-| RL Training | [Tinker](https://tinker-console.thinkingmachines.ai/) + [WandB](https://wandb.ai/) | `TINKER_API_KEY`, `WANDB_API_KEY` |
-| Cross-session user modeling | [Honcho](https://honcho.dev/) | `HONCHO_API_KEY` |
-
-### OpenRouter Provider Routing
-
-When using OpenRouter, you can control how requests are routed across providers. Add a `provider_routing` section to `~/.hermes/config.yaml`:
-
-```yaml
-provider_routing:
- sort: "throughput" # "price" (default), "throughput", or "latency"
- # only: ["anthropic"] # Only use these providers
- # ignore: ["deepinfra"] # Skip these providers
- # order: ["anthropic", "google"] # Try providers in this order
- # require_parameters: true # Only use providers that support all request params
- # data_collection: "deny" # Exclude providers that may store/train on data
-```
-
-**Shortcuts:** Append `:nitro` to any model name for throughput sorting (e.g., `anthropic/claude-sonnet-4:nitro`), or `:floor` for price sorting.
-
-See [OpenRouter provider routing docs](https://openrouter.ai/docs/guides/routing/provider-selection) for all available options including quantization filtering, performance thresholds, and zero data retention.
-
----
-
-## Messaging Gateway
-
-Chat with Hermes from Telegram, Discord, Slack, or WhatsApp. The gateway is a single background process that connects to all your configured platforms, handles sessions, runs cron jobs, and delivers voice messages.
-
-### Setting Up Messaging Platforms
-
-The easiest way to configure messaging platforms is the interactive setup wizard:
-
-```bash
-hermes gateway setup # Interactive setup for all messaging platforms
-```
-
-This walks you through configuring each platform with arrow-key selection, shows which platforms are already configured, and offers to start/restart the gateway service when you're done.
-
-You can also configure platforms manually by editing `~/.hermes/.env` directly (see platform-specific details below).
-
-### Gateway Commands
-
-```bash
-hermes gateway # Run in foreground
-hermes gateway setup # Configure messaging platforms interactively
-hermes gateway install # Install as systemd service (Linux) / launchd (macOS)
-hermes gateway start # Start the service
-hermes gateway stop # Stop the service
-hermes gateway status # Check service status
-```
-
-### Telegram Setup
-
-1. **Create a bot:** Message [@BotFather](https://t.me/BotFather) on Telegram, use `/newbot`
-2. **Get your user ID:** Message [@userinfobot](https://t.me/userinfobot) — it replies with your numeric ID
-3. **Configure:** Run `hermes gateway setup` and select Telegram, or add to `~/.hermes/.env` manually:
-
-```bash
-TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
-TELEGRAM_ALLOWED_USERS=YOUR_USER_ID # Comma-separated for multiple users
-```
-
-4. **Start the gateway:** `hermes gateway`
-
-### Discord Setup
-
-1. **Create a bot:** Go to [Discord Developer Portal](https://discord.com/developers/applications)
-2. **Enable intents:** Bot → Privileged Gateway Intents → enable Message Content Intent
-3. **Get your user ID:** Enable Developer Mode in Discord settings, right-click your name → Copy ID
-4. **Invite to your server:** OAuth2 → URL Generator → scopes: `bot`, `applications.commands` → permissions: Send Messages, Read Message History, Attach Files
-5. **Configure:** Run `hermes gateway setup` and select Discord, or add to `~/.hermes/.env` manually:
-
-```bash
-DISCORD_BOT_TOKEN=MTIz...
-DISCORD_ALLOWED_USERS=YOUR_USER_ID
-```
-
-### Slack Setup
-
-1. **Create an app:** Go to [Slack API](https://api.slack.com/apps), create a new app
-2. **Enable Socket Mode:** In app settings → Socket Mode → Enable
-3. **Get tokens:**
- - Bot Token (`xoxb-...`): OAuth & Permissions → Install to Workspace
- - App Token (`xapp-...`): Basic Information → App-Level Tokens → Generate
-4. **Configure:** Run `hermes gateway setup` and select Slack, or add to `~/.hermes/.env` manually:
-
-```bash
-SLACK_BOT_TOKEN=xoxb-...
-SLACK_APP_TOKEN=xapp-...
-SLACK_ALLOWED_USERS=U01234ABCDE # Comma-separated Slack user IDs
-```
-
-### WhatsApp Setup
-
-WhatsApp doesn't have a simple bot API like Telegram or Discord. Hermes includes a built-in bridge using [Baileys](https://github.com/WhiskeySockets/Baileys) that connects via WhatsApp Web.
-
-**Two modes are supported:**
-
-| Mode | How it works | Best for |
-|------|-------------|----------|
-| **Separate bot number** (recommended) | Dedicate a phone number to the bot. People message that number directly. | Clean UX, multiple users |
-| **Personal self-chat** | Use your own WhatsApp. You message yourself to talk to the agent. | Quick setup, single user |
-
-**Setup:**
-
-```bash
-hermes whatsapp
-```
-
-The wizard will:
-1. Ask which mode you want
-2. For **bot mode**: guide you through getting a second number (WhatsApp Business app on a dual-SIM, Google Voice, or cheap prepaid SIM)
-3. Configure the allowlist
-4. Install bridge dependencies (Node.js required)
-5. Display a QR code — scan from WhatsApp (or WhatsApp Business) → Settings → Linked Devices → Link a Device
-6. Exit once paired
-
-**Start the gateway:**
-
-```bash
-hermes gateway # Foreground
-hermes gateway install # Or install as a system service (Linux)
-```
-
-The gateway starts the WhatsApp bridge automatically using the saved session.
-
-> **Note:** WhatsApp Web sessions can disconnect if WhatsApp updates their protocol. The gateway reconnects automatically. If you see persistent failures, re-pair with `hermes whatsapp`. Agent responses are prefixed with "⚕ Hermes Agent" for easy identification.
-
-See [docs/messaging.md](docs/messaging.md) for advanced WhatsApp configuration.
-
-### Gateway Commands (inside chat)
-
-| Command | Description |
-|---------|-------------|
-| `/new` or `/reset` | Start fresh conversation |
-| `/model [name]` | Show or change the model |
-| `/personality [name]` | Set a personality |
-| `/retry` | Retry the last message |
-| `/undo` | Remove the last exchange |
-| `/status` | Show session info |
-| `/stop` | Stop the running agent |
-| `/sethome` | Set this chat as the home channel |
-| `/compress` | Manually compress conversation context |
-| `/usage` | Show token usage for this session |
-| `/reload-mcp` | Reload MCP servers from config |
-| `/update` | Update Hermes Agent to the latest version |
-| `/help` | Show available commands |
-| `/