Server Config
hub.yaml is your central ElasticClaw Server configuration file for providers, LLM keys, authentication, and server-level settings.
Overview
The server config lives at hub.yaml in your project root (or at ~/.elasticclaw/hub.yaml for global config). It tells ElasticClaw where to provision sandboxes, which credentials to use, and which shared services are available to workspaces.
Workspaces and workflows are not stored inline in hub.yaml. After you push them, ElasticClaw Server keeps them as files next to the config: workspaces/<name>/ for workspaces, with workflow YAML files nested under each workspace's workflows/ directory.
Example hub.yaml
# Server connection
url: http://localhost:8080
public_url: https://server.example.com # URL agents use to connect back
token: your-server-token # CLI login token
claw_token: your-agent-token # token for agent registration
ui_password: ${UI_PASSWORD} # web UI password (defaults to 'admin' if unset)
# Sandbox providers
providers:
daytona:
api_url: https://app.daytona.io
api_key: ${DAYTONA_API_KEY}
default_snapshot: daytona-large
replicated:
token: ${REPLICATED_TOKEN}
default_instance_type: r1.large
default_ttl: 48h
# LLM API keys (named)
llm_keys:
- name: anthropic-prod
provider: anthropic
api_key: ${ANTHROPIC_API_KEY}
default: true
default_model: anthropic/claude-sonnet-4-6
- name: fireworks-kimi
provider: fireworks
api_key: ${FIREWORKS_API_KEY}
default_model: fireworks/accounts/fireworks/models/kimi-k2p6
# Default model (provider/model format)
default_model: anthropic/claude-sonnet-4-6
# Authentication
auth:
github_oauth:
client_id: Ov23lixxxxxxxxxxxx
client_secret: ${GITHUB_OAUTH_SECRET}
allowed_users: []
allowed_orgs: []
allowed_teams: []
disable_password_auth: false
# Branding (optional white-label)
branding:
app_name: My Platform
logo_url: https://example.com/logo.png
# SSH keys added to every sandbox
ssh_public_keys:
- ssh-ed25519 AAAAC3NzaC...External workspaces and workflows
ElasticClaw Server creates workspaces/ alongside hub.yaml. Use elasticclaw workspace push to publish workspace files, then elasticclaw workflow push to publish workflow YAML into a workspace.
~/.elasticclaw/
hub.yaml
workspaces/
elasticclaw/
elasticclaw-config.yaml
AGENTS.md
TOOLS.md
workflows/
feature-workflow.yaml.elasticclaw/workspaces/ and workflow YAML under .elasticclaw/workflows/ before pushing them.Fields Reference
urlServer URL for CLI connections.public_urlURL agents use to connect back from remote sandboxes. Falls back to url if not set.tokenCLI authentication token.claw_tokenToken for agent registration. Auto-generated if unset.ui_passwordWeb UI login password. Defaults to 'admin' if not set.providersSandbox provider configs. See Providers docs.llm_keysNamed LLM API keys. One can be marked default:true.default_modelGlobal default model (provider/model format).secretsNamed server-level secret values for server-managed services. Workspace runtime secrets are managed with elasticclaw secret.authGitHub OAuth and tag-based access control for the web UI.brandingWhite-label: app_name, logo_url.ssh_public_keysExtra SSH keys injected into every provisioned sandbox.bridge_imageOCI artifact reference for claw-bridge. Defaults to ghcr.io/elasticclaw/claw-bridge:latest.${...} values are resolved from environment variables. Use a .env file or your secrets manager of choice.