Autonomous agent sandbox integration
VIBE AI integrates with OpenClaw -- an open-source autonomous agent framework -- to run self-hosted AI agents in isolated sandboxes. Users pick a template, launch a sandbox, and interact with their agent via Telegram.
┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌────────────────┐
│ User │────▶│ VIBE │────▶│ Daytona │────▶│ OpenClaw │
│ (Telegram│ │ Backend │ │ Sandbox │ │ Agent │
│ / Chat) │◀────│ (API) │◀────│ (Daytona SDK│◀────│ (LLM + Tools) │
└──────────┘ └──────────┘ └──────────────┘ └────────────────┘
│ │
│ ┌────────────────┐ │
└────────▶│ VIBE Tools │◀──────────┘
│ Gateway │ (API calls)
│ (/api/vibe- │
│ tools/*) │
└────────────────┘
Users choose from pre-built agent templates, each with a distinct personality and trading strategy:
| Template | Name | Style | Icon |
|---|---|---|---|
trader | ClawTrader | Conservative -- risk-first, 10% sizing rule, smart money tracking | shield |
shitcoin-trader | DegenTrader | Aggressive -- degen plays, fast moves, meme-aware | fire |
degen | DegenScanner | Alpha-hunter -- high-frequency scanning, Nansen + social signals, no trades | zap |
analyst | ChainAnalyst | Data-driven -- deep analysis, research reports, on-chain forensics | microscope |
When a user starts a gateway, VIBE's backend:
openclaw.json config with the user's settings/api/vibe-tools/* directlyAll LLM calls from the sandbox are routed through VIBE's OpenAI-compatible proxy at /api/v1/llm/chat/completions:
vibe_<account_id>_<hmac_sig>) auto-generated per accountclaude-sonnet-4.6 or gpt-4o are resolved to their OpenRouter equivalents| Alias | Resolved Model |
|---|---|
vibe-opus-4-6 | anthropic/claude-opus-4-6 |
vibe-sonnet-4-6 | anthropic/claude-sonnet-4-6 |
vibe-gpt-4o | openai/gpt-4o |
vibe-gpt-4o-mini | openai/gpt-4o-mini |
claude-sonnet-4.6 | anthropic/claude-sonnet-4-6 |
gpt-4o | openai/gpt-4o |
The sandbox agent has direct access to all VIBE Tools endpoints. During gateway startup, a VIBE API key (scopes: gateway:read, gateway:data, gateway:wallet_write) is injected into the sandbox environment. The agent's SKILL.md files reference {VIBE_API_URL} and {VIBE_API_TOKEN} placeholders, which are replaced with real values at launch time.
This means OpenClaw agents can:
Users interact with their running agent through Telegram. VIBE manages the bot lifecycle:
dmPolicy: "open"), groups use an allowlist (groupPolicy: "allowlist")::: warning
OpenClaw uses grammy long-polling, NOT webhooks. Do not set webhookUrl in the channel config -- setting it causes Telegram to register a webhook to the sandbox proxy URL, which returns 405 and breaks message delivery.
:::
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /api/openclaw/gateway | JWT | Check gateway status |
| POST | /api/openclaw/gateway/start | JWT | Start gateway with template |
| POST | /api/openclaw/gateway/stop | JWT | Stop running gateway |
| GET | /api/openclaw/gateway/logs | JWT | Stream gateway logs (SSE) |
| GET | /api/openclaw/templates | JWT | List available templates |
| GET | /api/openclaw/telegram/config | JWT | Get Telegram bot config |
| PUT | /api/openclaw/telegram/config | JWT | Save Telegram bot config |
| POST | /api/openclaw/telegram/webhook/{token_hash} | None | Inbound Telegram message relay |
| POST | /api/v1/llm/chat/completions | HMAC Token | OpenAI-compatible LLM proxy |
1. User selects template → POST /api/openclaw/gateway/start
2. Backend creates Daytona sandbox from snapshot
3. Config files written (openclaw.json, SKILL.md files, workspace files)
4. VIBE API key + LLM proxy token injected
5. OpenClaw gateway process started inside sandbox
6. Health check validates gateway is responding on port 18789
7. User interacts via Telegram
8. User stops gateway → POST /api/openclaw/gateway/stop
9. Sandbox is cleaned up
Each sandbox gets the following VIBE skills installed:
| Skill | Purpose |
|---|---|
vibe | Umbrella skill: auth, envelope, discovery, LLM proxy |
vibe-trading | Swap and quote operations |
vibe-wallet | Wallet and DeFi operations |
vibe-data | Data provider queries (Nansen, etc.) |
vibe-data-provider | Direct data provider access |
vibe-bags | bags.fm token launch and fee claims |
vibe-defi | DeFi staking, lending, liquidity |
vibe-twitter | 38 Twitter/X API endpoints |
vibe-x402 | x402 agent commerce payments |
vibe-credits | Credit balance queries |
vibe-alpha | Alpha signals and market intelligence |
Each template directory contains:
templates/openclaw/<template>/
├── openclaw.json # Agent config (models, auth, channels)
├── IDENTITY.md # Agent personality and role definition
├── SOUL.md # Agent values and behavioral guidelines
├── MEMORY.md # Agent memory initialization
├── AGENTS.md # Agent collaboration config
├── TOOLS.md # Available tools documentation
└── HEARTBEAT.md # Periodic self-check instructions
{
"agents": {
"defaults": {
"models": {
"openrouter/z-ai/glm-5.1": { "alias": "glm-5.1" },
"openrouter/openai/gpt-5.4-mini": { "alias": "gpt-5.4-mini" }
},
"model": {
"primary": "openrouter/z-ai/glm-5.1",
"fallbacks": ["openrouter/openai/gpt-5.4-mini"]
}
}
}
}
At runtime, the VIBE backend deep-merges this with:
# Production (default)
VIBE_API_URL=https://api.vibe.airforce
# Staging
VIBE_API_URL=https://api-v3.vibe.airforce
OpenClaw usage is billed through VIBE credits:
| Problem | Cause | Solution |
|---|---|---|
| Agent says "Twitter not connected" | TOOLS.md missing /api/ prefix | Ensure template TOOLS.md uses /api/vibe-tools/... paths |
| Telegram shows "405 Method Not Allowed" | webhookUrl set in channel config | Remove webhookUrl; OpenClaw uses long-polling |
| Agent generates text but never uses tools | LLM proxy dropping tools param | Ensure proxy passes tools and tool_choice to litellm |
| Gateway won't start | Snapshot or Daytona issue | Check backend logs for sandbox creation errors |
| LLM calls return 402 | Credits exhausted | Purchase credits or enable x402 auto top-up |
Previous: Skills & CLI