Brings Sable's AI voice agent platform into Claude through MCP. You get full CRUD on agents, journeys, and knowledge base items, plus deployment controls, analytics queries, and transcript inspection. The knowledge base tools are handy for syncing docs or crawling sitemaps directly from chat. If you're running Sable voice agents in production, this beats context switching to dashboards when you need to check session analytics, push config changes, trigger rollbacks, or pull LiveKit agent logs. Also exposes HyperDX observability data, though the source doesn't detail those methods. Built by the Sable team, so it tracks their API directly.
Command-line interface and MCP server for the Sable AI voice agent platform.
# 1. Install
go install github.com/sable-inc/anvil/cmd/anvil@latest
# 2. Authenticate
anvil auth login --token svc_your_token_here
# 3. Set your default org
mkdir -p ~/.config/anvil
cat > ~/.config/anvil/config.yaml << 'EOF'
default_org: "your-org"
api_url: "https://api.withsable.com"
EOF
# 4. Set up shell completions (zsh)
echo 'source <(anvil completion zsh)' >> ~/.zshrc
source ~/.zshrc
# 5. Verify
anvil auth status
anvil agent list
brew install sable-inc/tap/anvil
go install github.com/sable-inc/anvil/cmd/anvil@latest
This puts the anvil binary in $GOPATH/bin (usually ~/go/bin). Make sure that's in your $PATH:
# Add to your shell profile if not already there
export PATH="$HOME/go/bin:$PATH"
Download the latest release from GitHub Releases:
macOS (Apple Silicon):
curl -sL https://github.com/sable-inc/anvil/releases/latest/download/anvil_darwin_arm64.tar.gz | tar xz
sudo mv anvil /usr/local/bin/
macOS (Intel):
curl -sL https://github.com/sable-inc/anvil/releases/latest/download/anvil_darwin_amd64.tar.gz | tar xz
sudo mv anvil /usr/local/bin/
Linux (amd64):
curl -sL https://github.com/sable-inc/anvil/releases/latest/download/anvil_linux_amd64.tar.gz | tar xz
sudo mv anvil /usr/local/bin/
Or download manually from the Releases page.
git clone https://github.com/sable-inc/anvil.git
cd anvil
make build
sudo mv bin/anvil /usr/local/bin/
anvil version
# anvil v0.1.0 (commit: abc1234, built: 2026-02-14T..., darwin/arm64)
Anvil authenticates with sable-api using a service token:
# Store your token (one-time)
anvil auth login --token svc_your_token_here
# Verify it works
anvil auth whoami # shows stored token info
anvil auth status # verifies API connectivity
Credentials are stored in ~/.config/anvil/credentials.json (file permissions: 0600).
To get a service token, ask your team admin or generate one in the Sable Platform dashboard.
Create ~/.config/anvil/config.yaml:
default_org: "my-org"
api_url: "https://api.withsable.com"
format: "table"
Override any setting with flags:
anvil --org other-org --format json agent list
| Setting | Flag | Config Key | Description |
|---|---|---|---|
| Organization | --org | default_org | Default org for all commands |
| API URL | --api-url | api_url | Sable API base URL |
| Output format | --format | format | table, json, or yaml |
| No color | --no-color | — | Disable colored output |
| Verbose | --verbose | — | Enable debug logging |
Anvil has dynamic tab completions that suggest real resource names from the live API.
Zsh (default on macOS):
echo 'source <(anvil completion zsh)' >> ~/.zshrc
source ~/.zshrc
Bash:
echo 'source <(anvil completion bash)' >> ~/.bashrc
source ~/.bashrc
Fish:
anvil completion fish > ~/.config/fish/completions/anvil.fish
PowerShell:
anvil completion powershell >> $PROFILE
After setup, press TAB anywhere:
anvil <TAB> # all subcommands
anvil agent get <TAB> # suggests agent slugs + IDs from API
anvil journey delete <TAB> # suggests journey slugs + IDs
anvil kb sync <TAB> # suggests KB item IDs with names
anvil config pull <TAB> # suggests config version IDs
anvil connect <TAB> # suggests agent slugs
anvil --format <TAB> # suggests table, json, yaml
Completions fetch live data from the API using your stored token. If you're not authenticated, it gracefully shows no suggestions (no errors).
Do I need to regenerate completions when anvil or my shell updates?
No. The source <(anvil completion ...) pattern re-generates on every new shell session automatically. For Fish, re-run the file write command after updating anvil if new commands were added.
anvil agent list # List agents
anvil agent get <id|slug> # Get agent details
anvil agent create --name "My Agent" # Create agent
anvil agent update <id> --name "New" # Update agent
anvil agent delete <id> # Delete agent
anvil journey list # List journeys
anvil journey get <id> # Get journey with moments/transitions
anvil journey create --name "Flow" # Create journey
anvil kb list # List knowledge base items
anvil kb get <id> # Get item details
anvil kb search "query" # Semantic search
anvil kb import-url <url> # Import a URL
anvil kb import-sitemap <url> --name "Docs" # Import from sitemap
anvil kb sync <id> # Sync item to vector store
anvil kb sync-all # Sync all items
anvil kb crawl <id> # Re-crawl a URL item
anvil kb delete <id> # Delete item
anvil kb job <jobId> # Check sitemap import job status
anvil config list # List config versions
anvil config get <id> # Get config version details
anvil config pull <id> -o config.yaml # Download config as YAML
anvil config push config.yaml # Upload config from YAML
anvil config validate config.yaml # Validate config locally
anvil config diff config.yaml --id <id> # Diff local vs remote
anvil analytics sessions # Session analytics
anvil analytics stages # Stage funnel analytics
anvil transcript list # List transcripts
anvil transcript view <id> # View transcript messages
anvil deploy history --org org_xxx # List deployment history
anvil deploy trigger --org org_xxx # Trigger a deployment
anvil deploy trigger --org org_xxx --watch # Trigger and poll until complete
anvil deploy rollback --org org_xxx # Rollback deployment
anvil deploy create --org org_xxx # Create initial deployment
anvil deploy delete --org org_xxx # Delete deployment
anvil deploy update-secrets --org org_xxx # Update deployment secrets
anvil deploy pin-forge --org org_xxx --forge-version v1.0 # Pin forge version
# Sessions
anvil livekit sessions list --org org_xxx # List active rooms
anvil livekit sessions get <room> --org org_xxx
anvil livekit sessions close <room> --org org_xxx
# Agent management
anvil livekit agent list --org org_xxx # List agents
anvil livekit agent status --org org_xxx # Agent status
anvil livekit agent versions --org org_xxx # Agent versions
anvil livekit agent logs --org org_xxx # Agent logs
anvil livekit agent restart --org org_xxx # Restart agent
anvil livekit agent delete --org org_xxx # Delete agent
# Agent secrets
anvil livekit agent secrets list --org org_xxx
anvil livekit agent secrets set --org org_xxx --secret KEY=VALUE
anvil livekit agent secrets delete <name> --org org_xxx
anvil forge versions # List forge versions
anvil forge branches # List forge branches
anvil forge commits main # List commits on branch
anvil forge validate main # Validate a git ref
anvil video generate-moment --video-url <url> # Start moment generation
anvil video generate-moment --video-url <url> --watch # Generate and poll
anvil video generate-journey --video-url <url> # Start journey generation
anvil video job-status <jobId> # Check job status
anvil health # API health check
anvil health --db # Include database health
anvil connect <agent-slug> # Get LiveKit connection details
anvil api GET /agents # Raw API request
anvil api POST /agents -d '{"name":"test"}'
anvil version # Print version info
Pull a config, edit locally, validate, and push:
# Pull the current config
anvil config pull <config-id> -o agent.yaml
# Edit the YAML file
$EDITOR agent.yaml
# Validate locally (no API call needed)
anvil config validate agent.yaml
# See what changed
anvil config diff agent.yaml --id <config-id>
# Push the updated config
anvil config push agent.yaml
Anvil includes an MCP server (28 Sable tools + 5 HyperDX observability tools) for AI coding assistants like Claude Code, Cursor, Windsurf, etc.
anvil auth login --token svc_your_token # Sable API credentials
anvil settings set-hyperdx hdx_your_key # HyperDX API key (optional)
Paste this in your browser to install with one click:
cursor://anysphere.cursor-deeplink/mcp/install?name=sable&config=eyJjb21tYW5kIjoiYW52aWwiLCJhcmdzIjpbIm1jcCIsInNlcnZlIl19
Or add manually to .cursor/mcp.json:
{
"mcpServers": {
"sable": {
"command": "anvil",
"args": ["mcp", "serve"]
}
}
}
claude mcp add sable -s user -- anvil mcp serve
No secrets in the config -- anvil reads credentials from ~/.config/anvil/.
Add the same JSON config to your editor's MCP settings file.
| Domain | Tools |
|---|---|
| Agents | list_agents, get_agent, create_agent, update_agent, delete_agent |
| Journeys | list_journeys, get_journey, create_journey, update_journey, delete_journey |
| Knowledge Base | list_knowledge_base, get_knowledge_base_item, search_knowledge_base, import_knowledge_base_url, delete_knowledge_base_item, sync_knowledge_base_item |
| Config | list_configs, get_config |
| Deployments | get_deploy_history, trigger_deploy, rollback_deploy |
| Transcripts | list_transcripts, get_transcript |
| Analytics | get_session_analytics, get_stage_analytics |
| Utilities | check_health, get_connection_details, raw_api_request |
Enabled when anvil settings set-hyperdx <key> has been run or HYPERDX_API_KEY env var is set.
| Tool | Purpose |
|---|---|
hdx_search_events | Query logs/spans with aggregations, time ranges, filters, group-by |
hdx_query_metrics | Query metrics (Sum, Gauge, Histogram) |
hdx_list_dashboards | List HyperDX dashboards |
hdx_get_dashboard | Get dashboard with chart definitions |
hdx_list_alerts | List configured alerts |
Anvil uses goreleaser with GitHub Actions for automated releases.
git tag v0.1.0
git push origin v0.1.0
GitHub Actions will automatically:
sable-inc/homebrew-tap)Team members can then upgrade via:
# Homebrew
brew upgrade anvil
# Go install
go install github.com/sable-inc/anvil/cmd/anvil@latest
goreleaser --snapshot --clean
ls dist/
make build # Build binary
make test # Run tests with race detector
make lint # Run golangci-lint v2
make check # Build + test + lint
make install # Install to $GOPATH/bin
make generate # Generate API client from OpenAPI spec
make clean # Remove build artifacts
Requires:
make lint)make generate)GitHub Actions runs automatically:
.github/workflows/ci.yml): build + test + lint on every push and PR.github/workflows/release.yml): goreleaser on version tags (v*)