Sable Platform + HyperDX Observability
LocalAbout Sable Platform + HyperDX Observability
Anvil is a CLI and MCP server for teams managing Sable voice agents. It exposes Sable operations alongside optional HyperDX observability queries to AI coding assistants.
Key features
- 01Manage agents and journeys
- 02Search and sync knowledge base
- 03Validate and transfer YAML configs
- 04Deploy, roll back, and inspect status
- 05Query HyperDX logs and metrics
Use cases
- 01Manage Sable agents from an IDE
- 02Search or update agent knowledge
- 03Review deployment history and roll back
- 04Inspect logs and metrics with HyperDX
MCP support
Anvil exposes 28 Sable tools for agents, journeys, knowledge base, configs, deployments, transcripts, analytics, and utilities. With a HyperDX API key, it also provides five observability tools for logs, metrics, dashboards, and alerts.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEAnvil
Command-line interface and MCP server for the Sable AI voice agent platform.
Quick Start (2 minutes)
# 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
Install
Option 1: Homebrew (recommended)
brew install sable-inc/tap/anvil
Option 2: Go Install
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"
Option 3: Download Binary (no Go required)
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.
Option 4: Build from Source
git clone https://github.com/sable-inc/anvil.git
cd anvil
make build
sudo mv bin/anvil /usr/local/bin/
Verify Installation
anvil version
# anvil v0.1.0 (commit: abc1234, built: 2026-02-14T..., darwin/arm64)
Authentication
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.
Configuration
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 |
Shell Completions
Anvil has dynamic tab completions that suggest real resource names from the live API.
Setup (one-time, permanent)
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
What You Get
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).
FAQ
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.
Commands
Agents
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
Journeys
anvil journey list # List journeys
anvil journey get <id> # Get journey with moments/transitions
anvil journey create --name "Flow" # Create journey
Knowledge Base
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
Config-as-Code
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
Analytics & Transcripts
anvil analytics sessions # Session analytics
anvil analytics stages # Stage funnel analytics
anvil transcript list # List transcripts
anvil transcript view <id> # View transcript messages
Deployments
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
LiveKit
# 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
Forge (Version Management)
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
Video Processing
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
Utilities
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
Config-as-Code Workflow
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
MCP Server (for AI Assistants)
Anvil includes an MCP server (28 Sable tools + 5 HyperDX observability tools) for AI coding assistants like Claude Code, Cursor, Windsurf, etc.
One-Time Setup
anvil auth login --token svc_your_token # Sable API credentials
anvil settings set-hyperdx hdx_your_key # HyperDX API key (optional)
Add to Cursor
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"]
}
}
}
Add to Claude Code
claude mcp add sable -s user -- anvil mcp serve
No secrets in the config -- anvil reads credentials from ~/.config/anvil/.
Other Editors (Windsurf, etc.)
Add the same JSON config to your editor's MCP settings file.
Sable Tools (28)
| 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 |
HyperDX Observability Tools (5, optional)
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 |
Releasing New Versions
Anvil uses goreleaser with GitHub Actions for automated releases.
Creating a Release
git tag v0.1.0
git push origin v0.1.0
GitHub Actions will automatically:
- Build binaries for Linux, macOS, and Windows (amd64 + arm64)
- Create a GitHub Release with downloadable archives
- Generate checksums and a changelog
- Publish to the Homebrew tap (
sable-inc/homebrew-tap) - Publish to the MCP Registry (discoverable in Claude Code / Cursor)
Team members can then upgrade via:
# Homebrew
brew upgrade anvil
# Go install
go install github.com/sable-inc/anvil/cmd/anvil@latest
Snapshot Build (local testing)
goreleaser --snapshot --clean
ls dist/
Development
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:
- Go 1.26+
- golangci-lint v2 (for
make lint) - Running sable-api instance (for
make generate)
CI/CD
GitHub Actions runs automatically:
- CI (
.github/workflows/ci.yml): build + test + lint on every push and PR - Release (
.github/workflows/release.yml): goreleaser on version tags (v*)
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.