# docker-compose.yml — Cerbero Bite # # Bite runs in its own Compose project but joins the same Docker # network used by Cerbero MCP V2 so it can resolve the in-cluster # service name when running co-located, and otherwise reaches the # public gateway (`https://cerbero-mcp.tielogic.xyz`) over the host # network. # # The shared network is declared as external here. Create it once on # the host with `docker network create cerbero-suite` (or rename the # Cerbero_mcp network to `cerbero-suite` and mark it external). # # Authentication: a single bearer token is passed through from the # host `.env` file via `CERBERO_BITE_MCP_TOKEN`. The Cerbero MCP V2 # server uses the token to decide whether the upstream environment # is testnet or mainnet; switching environment = switching token. networks: cerbero-suite: external: true volumes: bite-data: services: cerbero-bite: build: context: . dockerfile: Dockerfile image: cerbero-bite:dev restart: unless-stopped networks: [cerbero-suite] cap_drop: [ALL] security_opt: - no-new-privileges:true environment: # MCP auth — token is sourced from the host .env (compose # interpolation). The `X-Bot-Tag` value below is the audit # identifier the MCP server logs for every write call. CERBERO_BITE_MCP_TOKEN: ${CERBERO_BITE_MCP_TOKEN:?missing CERBERO_BITE_MCP_TOKEN} CERBERO_BITE_MCP_BOT_TAG: ${CERBERO_BITE_MCP_BOT_TAG:-BOT__CERBERO_BITE} # Service URLs — defaults below match the in-cluster cerbero-suite # network DNS (V2 unified image listening on port 9000). Override # any of them to point at the public gateway, a custom host, or # localhost for dev work. CERBERO_BITE_MCP_DERIBIT_URL: ${CERBERO_BITE_MCP_DERIBIT_URL:-http://cerbero-mcp:9000/mcp-deribit} CERBERO_BITE_MCP_HYPERLIQUID_URL: ${CERBERO_BITE_MCP_HYPERLIQUID_URL:-http://cerbero-mcp:9000/mcp-hyperliquid} CERBERO_BITE_MCP_MACRO_URL: ${CERBERO_BITE_MCP_MACRO_URL:-http://cerbero-mcp:9000/mcp-macro} CERBERO_BITE_MCP_SENTIMENT_URL: ${CERBERO_BITE_MCP_SENTIMENT_URL:-http://cerbero-mcp:9000/mcp-sentiment} # Telegram and Portfolio are no longer shared MCP services. The # bot now calls the Telegram Bot API directly and aggregates # portfolio in-process from Deribit + Hyperliquid + Macro. # Set the two env vars below to enable Telegram notifications. # CERBERO_BITE_TELEGRAM_BOT_TOKEN: ... # CERBERO_BITE_TELEGRAM_CHAT_ID: ... volumes: - bite-data:/app/data healthcheck: test: ["CMD", "cerbero-bite", "healthcheck", "--db", "/app/data/state.sqlite"] interval: 60s timeout: 5s retries: 3 start_period: 120s # Default command runs the engine status check; override with the # CLI subcommand of choice (start, ping, dry-run, ...). command: ["status"]