Monorepo for four trading/automation tracks:
- agent-style workflows (
clawdbot-workflows) - deterministic Rust bots (
non-agent-workflows) - LLM workflow (
llm-workflows) - unified observability + sports agent stack (
observability-platform)
| Workspace | Purpose | Start Here |
|---|---|---|
clawdbot-workflows |
Imported OpenClaw-based agent framework and gateway stack | clawdbot-workflows/README.md |
non-agent-workflows |
Kalshi-focused Rust bots (weather + arbitrage) | non-agent-workflows/README.md |
llm-workflows |
LLM trading experiments and prototypes | llm-workflows/README.md |
observability-platform |
Unified traces, Google-style control API, dashboard, sports worker | observability-platform/README.md |
This repo now includes a low-latency Rust bridge for OpenClaw trade control over a Unix domain socket:
crates/trading_daemon: Rust daemon exposing the UDS control endpoint (/var/run/openclaw/trading.sock)crates/trading_protocol: shared framing + envelope protocolcrates/tradingctl: CLI client for ping/start/stop/status checks.openclaw/extensions/trading-bridge: OpenClaw tool bridge exposing the unifiedtrading_hftmulti-asset tool surface
Bridge runtime behavior:
- live routing: Coinbase Advanced Trade spot (
coinbase_at) - paper routing: perps/options/unsupported instruments via deterministic paper adapter
- default engine mode:
auto_live(requires Coinbase credentials) - durable file state/journal root:
${TRADING_DATA_DIR:-/var/lib/openclaw/trading}
Run it with:
docker compose -f clawdbot-workflows/docker-compose.yml --project-directory . up -d --buildDetailed bridge architecture and usage:
weather/arbitrage/llm-rules/sports-agent
|
v
TRADES/* JSONL + broker state
|
v
trace-api (:8791)
/v1/projects/*/locations/*/...
|
v
dashboard (executions first + actions)
temporal-broker (:8787) stores workflow state machine + operations.
Temporal UI runs in parallel for workflow inspection.
Detailed architecture:
pnpm installRequired for Kalshi-connected workflows:
export KALSHI_API_KEY="your-key-id"
export KALSHI_SECRET_KEY="your-private-key"Optional/feature-specific:
export GOOGLE_WEATHER_API_KEY="your-google-key"
export WEATHER_BOT_CONTACT_EMAIL="you@yourdomain.com"
export OPENAI_API_KEY="your-openai-key"
export ANTHROPIC_API_KEY="your-anthropic-key"
export SPORTS_DATA_IO_API_KEY="your-sportsdataio-key"
export THE_ODDS_API_KEY="your-theodds-key"
export COINBASE_API_KEY="your-coinbase-key"
export COINBASE_API_SECRET="your-coinbase-secret"
export COINBASE_API_PASSPHRASE="optional-passphrase"
export TRADING_ENGINE_MODE="auto_live" # paper | hitl_live | auto_live
export TRADING_DATA_DIR="/var/lib/openclaw/trading"Control token (recommended):
export OBS_CONTROL_TOKEN="replace-me"If unset, local default is local-dev-token.
bash ./trading-cli observability up
bash ./trading-cli observability status
bash ./trading-cli observability uiThat starts:
- Temporal (local dev server)
- temporal-broker (
:8787) - trace-api + dashboard (
:8791)
bash ./trading-cli weather go dry-run
bash ./trading-cli arbitrage go dry-run
bash ./trading-cli llm-workflow goRun sports agent:
# Human-in-the-loop mode
bash ./trading-cli sports-agent up --mode hitl
# Execute pending recommendation
bash ./trading-cli sports-agent execute <workflow_id>
# Cancel
bash ./trading-cli sports-agent cancel <workflow_id>
# Hard cancel
bash ./trading-cli sports-agent cancel <workflow_id> --hard
# Stop sports-agent managed process via control API
bash ./trading-cli sports-agent stop-service
# Ultra strict auto mode
bash ./trading-cli sports-agent up --mode auto_ultra_strict- Dashboard:
http://127.0.0.1:8791 - Workflows API:
http://127.0.0.1:8791/v1/projects/local/locations/us-central1/workflows - Temporal UI:
http://127.0.0.1:8233
bash ./trading-cli downbash ./trading-cli weather [go|up|down|status|logs] [prod|dry-run|check-auth]
bash ./trading-cli arbitrage [go|up|down|status|logs] [prod|dry-run|check-auth]
bash ./trading-cli llm-workflow [go|up|down|status|logs]
bash ./trading-cli temporal [up|down|status|logs|ui|list|describe|show]
bash ./trading-cli observability [up|down|status|logs|ui] [trace-api|temporal-broker|temporal]
bash ./trading-cli sports-agent [go|up|down|status|logs|approve|execute|cancel|hard-cancel|stop-service] [--mode <hitl|auto_ultra_strict>] [--dry-run] [trace_id]
bash ./trading-cli clawdbot-trading [up|down|ps|logs|ping|status|capabilities|doctor|start|stop]
bash ./trading-cli dev
bash ./trading-cli status
bash ./trading-cli downbash ./trading-cli temporal up
bash ./trading-cli temporal status
bash ./trading-cli temporal ui
bash ./trading-cli temporal list
bash ./trading-cli temporal describe <workflow_id>
bash ./trading-cli temporal show <workflow_id>
bash ./trading-cli temporal logs
bash ./trading-cli temporal downOptional environment overrides:
export TEMPORAL_ADDRESS="127.0.0.1:7233"
export TEMPORAL_SERVER_IP="127.0.0.1"
export TEMPORAL_UI_IP="127.0.0.1"
export TEMPORAL_UI_PORT="8233"Run all suites from repo root:
bash ./trading-cli test
bash ./trading-cli test inclusiveRun single suites:
bash ./trading-cli test common
bash ./trading-cli test kalshi-client
bash ./trading-cli test weather
bash ./trading-cli test arbitrage
bash ./trading-cli test llm-workflow
bash ./trading-cli test sports-agent
bash ./trading-cli test observabilityPath: non-agent-workflows/weather-bot
- discovers weather markets
- blends NOAA and Google forecasts
- applies quality + risk gates before order intents
- writes runtime JSONL events to
TRADES/weather-bot
Path: non-agent-workflows/arbitrage-bot
- discovers mutually exclusive contract sets
- scans Buy-Set and Sell-Set opportunities
- executes grouped orders with strict risk checks
- writes runtime JSONL events to
TRADES/arbitrage-bot
Path: observability-platform/sports-agent-worker
- researches sports opportunities continuously while running
- uses deterministic Bayesian + EV + CLV proxy gates (no ML)
- supports
hitlandauto_ultra_strictexecution modes - writes runtime JSONL events to
TRADES/sports-agent
Default trade logs:
TRADES/arbitrage-botTRADES/weather-botTRADES/llm-rules-botTRADES/sports-agent
Use TRADES_DIR=/custom/path to change the root folder.
Pull Request Requirements:
- Greptile Comments: All comments from Greptile must be addressed and resolved before requesting a review.
- Linting & Formatting: Ensure your code is formatted (
cargo fmt) and linted (cargo clippy) without warnings. - Tests: Verify all tests pass by running
bash ./trading-cli test. - Commit Hygiene: Use clear commit messages and squash intermediate work-in-progress commits.