{
  "schemaVersion": "1.0",
  "item": {
    "slug": "hummingbot-developer",
    "name": "Hummingbot Developer",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/fengtality/hummingbot-developer",
    "canonicalUrl": "https://clawhub.ai/fengtality/hummingbot-developer",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/hummingbot-developer",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hummingbot-developer",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/build_all.sh",
      "scripts/check_api.sh",
      "scripts/check_env.sh",
      "scripts/check_gateway.sh",
      "scripts/check_repos.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "hummingbot-developer",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-04T05:24:31.115Z",
      "expiresAt": "2026-05-11T05:24:31.115Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hummingbot-developer",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hummingbot-developer",
        "contentDisposition": "attachment; filename=\"hummingbot-developer-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "hummingbot-developer"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/hummingbot-developer"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/hummingbot-developer",
    "agentPageUrl": "https://openagent3.xyz/skills/hummingbot-developer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hummingbot-developer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hummingbot-developer/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "hummingbot-developer",
        "body": "Developer workflow skill for building and running the full Hummingbot stack from source.\n\nCommands (run as /hummingbot-developer <command>):\n\nCommandDescriptionstartCheck dev environment statusselect-branchesPick branches for all 3 reposinstall-allInstall all 3 repos in orderbuild-allBuild wheel + all Docker imagesverify-buildVerify builds are correct + in syncrun-dev-stackStart full stack from sourcesetup-hummingbotInstall Hummingbot from sourcerun-hummingbotRun Hummingbot CLI from sourcebuild-hummingbotBuild wheel + Docker imagesetup-gatewayInstall Gateway from sourcerun-gatewayRun Gateway in dev modebuild-gatewayBuild Gateway Docker imagesetup-api-devWire API to local Hummingbot sourcerun-api-devRun API from source with hot-reloadtest-integrationSmoke test the full stack\n\nTypical dev workflow:\n\ninstall-deps → select-branches → install-all → build-all → verify-build → run-dev-stack → test-integration\n\nRepo locations (all in workspace):\n\nRepoPathhummingbot~/.openclaw/workspace/hummingbotgateway~/.openclaw/workspace/hummingbot-gatewayhummingbot-api~/.openclaw/workspace/hummingbot-api\n\nOverride with env vars: HUMMINGBOT_DIR, GATEWAY_DIR, HUMMINGBOT_API_DIR, or WORKSPACE."
      },
      {
        "title": "Command: install-deps",
        "body": "Auto-install all missing dev dependencies. Safe to re-run — skips anything already installed.\n\nbash scripts/install_deps.sh\n\nInstalls (only if missing):\n\nHomebrew (macOS)\nXcode Command Line Tools (macOS — needed for Cython build_ext)\nMiniconda (conda)\nNode.js v22 (via nvm, Homebrew, or installs nvm)\npnpm (via npm or Homebrew)\nGit\nDocker Desktop (macOS — via Homebrew cask or opens download page)\n\nOptions:\n\n--check         # check only, don't install anything\n--conda         # only install conda\n--node          # only install node + nvm\n--pnpm          # only install pnpm\n\nAfter installing, restart your terminal (or source ~/.zshrc) to apply PATH changes, then run check_env.sh to confirm."
      },
      {
        "title": "Command: select-branches",
        "body": "Interactively pick a branch for each repo, checkout, and save to .dev-branches.\n\nbash scripts/select_branches.sh\n\nNon-interactive options:\n\n# Use development for all\nbash scripts/select_branches.sh --defaults\n\n# Specify each branch\nbash scripts/select_branches.sh \\\n  --hummingbot development \\\n  --gateway core-2.7 \\\n  --api development\n\nBranch selections are saved to $WORKSPACE/.dev-branches and automatically loaded by install_all.sh, build_all.sh, and verify_build.sh."
      },
      {
        "title": "Command: install-all",
        "body": "Install all three repos in the correct order. Requires select-branches first (or pass --defaults).\n\nbash scripts/install_all.sh\n\nWhat it does (in order):\n\nRemoves solders from environment.yml (pip-only)\nmake install in hummingbot → conda env hummingbot\npip install solders>=0.19.0 into hummingbot env\npnpm install && pnpm build && pnpm run setup:with-defaults for gateway\nconda env create for hummingbot-api\npip install -e <hummingbot_dir> --no-deps → wires local source into API env\n\nOptions:\n\n--skip-hbot      # skip hummingbot conda install\n--skip-gateway   # skip gateway pnpm install\n--skip-api       # skip hummingbot-api install\n--no-local-hbot  # use PyPI hummingbot in API env instead of local source"
      },
      {
        "title": "Command: build-all",
        "body": "Build hummingbot wheel and all Docker images in the correct order.\n\nbash scripts/build_all.sh\n\nBuild order:\n\nhummingbot wheel (dist/*.whl) via python setup.py bdist_wheel\nhummingbot/hummingbot:dev Docker image\nhummingbot/gateway:dev Docker image (also rebuilds dist/)\nhummingbot/hummingbot-api:dev Docker image\n\nEach image is also tagged with the branch name (e.g., hummingbot/gateway:core-2.7).\n\nOptions:\n\n--wheel-only     # only build hummingbot wheel, no Docker\n--no-docker      # skip all Docker builds\n--no-hbot        # skip hummingbot builds\n--no-gateway     # skip gateway builds\n--no-api         # skip hummingbot-api builds\n--tag <name>     # Docker tag (default: dev)"
      },
      {
        "title": "Command: verify-build",
        "body": "Verify that all builds are correct and in sync.\n\nbash scripts/verify_build.sh\n\nChecks:\n\nEach repo is on the expected branch (from .dev-branches)\nHummingbot wheel exists in dist/\nGateway dist/ is built and not stale vs source\nLocal hummingbot source is active in hummingbot-api env\nDocker images exist with correct branch labels\nRunning services (API + Gateway) are reachable\nAPI → Gateway connectivity\n\nbash scripts/verify_build.sh --no-docker   # skip Docker checks\nbash scripts/verify_build.sh --no-running  # skip service checks\nbash scripts/verify_build.sh --json        # JSON output"
      },
      {
        "title": "Command: run-dev-stack",
        "body": "Start the full dev stack from source.\n\nbash scripts/run_dev_stack.sh\n\nStart order:\n\nDocker infra (postgres + EMQX) via docker compose up emqx postgres -d\nGateway from source in background (node dist/index.js --passphrase=hummingbot --dev)\nHummingbot API from source in foreground (uvicorn main:app --reload)\n\nOptions:\n\n--no-gateway           # skip gateway start\n--passphrase <pass>    # gateway passphrase (default: hummingbot)\n--stop                 # stop everything\n--status               # show running status\n\nLogs:\n\nGateway logs: tail -f ~/.openclaw/workspace/.gateway.log\nAPI logs: printed to terminal (foreground)"
      },
      {
        "title": "Command: start",
        "body": "Check the full dev environment and show a status summary."
      },
      {
        "title": "Step 1: Run environment check",
        "body": "bash scripts/check_env.sh --json"
      },
      {
        "title": "Step 2: Check repo branches",
        "body": "bash scripts/check_repos.sh --json"
      },
      {
        "title": "Step 3: Check running services",
        "body": "bash scripts/check_api.sh --json\nbash scripts/check_gateway.sh --json"
      },
      {
        "title": "Step 4: Show status checklist",
        "body": "Present a checklist like:\n\nDev Environment Status\n======================\n  [x] Prerequisites     — conda, node, pnpm, docker, git OK\n  [x] Hummingbot repo   — branch: development, env: hummingbot (installed)\n  [x] Gateway repo      — branch: development, built: yes\n  [x] Hummingbot API    — running at http://localhost:8000\n  [x] Gateway           — running at http://localhost:15888\n  [ ] Local hummingbot  — hummingbot-api NOT using local source\n\nNext: run /hummingbot-developer setup-api-dev to wire API to local source\n\nAdapt to actual state. If all good, show the test command."
      },
      {
        "title": "Command: setup-hummingbot",
        "body": "Install Hummingbot from source on the development branch."
      },
      {
        "title": "Step 1: Check prereqs",
        "body": "bash scripts/check_env.sh"
      },
      {
        "title": "Step 2: Checkout development branch",
        "body": "cd <HUMMINGBOT_DIR>\ngit fetch origin\ngit checkout development\ngit pull origin development"
      },
      {
        "title": "Step 3: Remove solders from environment.yml (pip-only package)",
        "body": "sed -i '' '/solders/d' setup/environment.yml 2>/dev/null || sed -i '/solders/d' setup/environment.yml"
      },
      {
        "title": "Step 4: Install conda environment",
        "body": "make install\n\nThis creates the hummingbot conda env. Takes 3-10 minutes on first run."
      },
      {
        "title": "Step 5: Install solders via pip (not on conda)",
        "body": "conda run -n hummingbot pip install \"solders>=0.19.0\""
      },
      {
        "title": "Interpreting output",
        "body": "OutputMeaningNext stepconda develop . succeedsDev install registeredProceedPackagesNotFoundError: soldersForgot step 3Run sed + reinstallError: Conda is not foundconda not in PATHsource ~/.zshrc or install Anacondabuild_ext errorsMissing build toolsInstall Xcode CLT: xcode-select --install"
      },
      {
        "title": "After setup",
        "body": "[x] conda env \"hummingbot\" created\n  [x] solders installed via pip\n  Run hummingbot: /hummingbot-developer run-hummingbot\n  Build image:    /hummingbot-developer build-hummingbot"
      },
      {
        "title": "Command: run-hummingbot",
        "body": "Run the Hummingbot CLI from source.\n\ncd <HUMMINGBOT_DIR>\nconda activate hummingbot\n./bin/hummingbot_quickstart.py\n\nOr via make:\n\ncd <HUMMINGBOT_DIR>\nmake run\n\nNote: This opens the interactive Hummingbot CLI. Use exit to quit.\n\nTo run with a specific config:\n\nmake run ARGS=\"--config-file-name conf_pure_mm_1.yml\""
      },
      {
        "title": "Command: build-hummingbot",
        "body": "Build a Hummingbot wheel and/or Docker image from source."
      },
      {
        "title": "Build wheel (for local pip installs)",
        "body": "cd <HUMMINGBOT_DIR>\nconda activate hummingbot\npip install build wheel  # if not already installed\npython -m build --wheel --no-isolation\n\nWheel is output to dist/hummingbot-*.whl.\n\nImportant: The wheel must be built with Python 3.12 to match hummingbot-api's environment.\n\nUse this wheel to install into other envs:\n\npip install dist/hummingbot-*.whl --force-reinstall --no-deps"
      },
      {
        "title": "Build Linux wheel for Docker",
        "body": "When building hummingbot-api Docker images, you need a Linux wheel (not macOS/Windows). Build inside Docker to ensure compatibility:\n\ncd <HUMMINGBOT_DIR>\n\n# Build Linux wheel using Docker (Python 3.12 to match hummingbot-api)\ndocker run --rm -v $(pwd):/hummingbot -w /hummingbot continuumio/miniconda3 bash -c \"\n  apt-get update -qq && apt-get install -y -qq gcc g++ build-essential > /dev/null 2>&1 &&\n  conda create -n build python=3.12 cython numpy -y -q &&\n  conda run -n build pip install -q build wheel &&\n  conda run -n build python -m build --wheel\n\"\n\n# Verify the Linux wheel was created\nls dist/*linux*.whl\n# Example: hummingbot-20260126-cp312-cp312-linux_aarch64.whl\n\nPlatform wheel suffixes:\n\nlinux_x86_64 — Linux AMD/Intel 64-bit\nlinux_aarch64 — Linux ARM64 (Apple Silicon Docker, AWS Graviton)\nmacosx_11_0_arm64 — macOS Apple Silicon (native only, NOT for Docker)\nmacosx_10_9_x86_64 — macOS Intel (native only, NOT for Docker)"
      },
      {
        "title": "Build Docker image",
        "body": "cd <HUMMINGBOT_DIR>\ndocker build -t hummingbot/hummingbot:dev -f Dockerfile .\n\nOr with make (also cleans first):\n\nmake build TAG=:dev\n\nTag for use with hummingbot-api:\n\ndocker build -t hummingbot/hummingbot:development -f Dockerfile ."
      },
      {
        "title": "Interpreting output",
        "body": "OutputMeaningSuccessfully built + wheel pathWheel ready in dist/Successfully tagged hummingbot/hummingbot:devDocker image readybuild_ext errorCython compile issue — check conda env is activeOOM during Docker buildAdd --memory 4g flag"
      },
      {
        "title": "Command: setup-gateway",
        "body": "Install and configure Gateway from source."
      },
      {
        "title": "Step 1: Check prereqs",
        "body": "Requires Node.js 20+, pnpm, and git.\n\nbash scripts/check_env.sh"
      },
      {
        "title": "Step 2: Checkout development branch",
        "body": "cd <GATEWAY_DIR>\ngit fetch origin\ngit checkout development\ngit pull origin development"
      },
      {
        "title": "Step 3: Install dependencies",
        "body": "cd <GATEWAY_DIR>\npnpm install\n\nIf you see USB HID errors on macOS:\n\npnpm install --force"
      },
      {
        "title": "Step 4: Build TypeScript",
        "body": "pnpm build"
      },
      {
        "title": "Step 5: Run setup",
        "body": "# Non-interactive with defaults (recommended for dev)\npnpm run setup:with-defaults\n\n# Interactive (choose which configs to update)\npnpm run setup\n\nSetup creates:\n\nconf/ — chain, connector, token, and RPC configs\ncerts/ — TLS certificates (self-signed for dev)"
      },
      {
        "title": "Interpreting output",
        "body": "OutputMeaningNext stepGateway setup completeReady to startrun-gatewaytsc errorsTypeScript compile errorCheck Node version (node --version ≥ 20)pnpm: command not foundpnpm not installednpm install -g pnpmENOSPCDisk spaceFree up space"
      },
      {
        "title": "Command: run-gateway",
        "body": "Run Gateway from source in dev mode (HTTP, no TLS).\n\ncd <GATEWAY_DIR>\npnpm start --passphrase=<PASSPHRASE> --dev\n\nDefault passphrase matches hummingbot-api setup: hummingbot\n\npnpm start --passphrase=hummingbot --dev\n\nWhat --dev does:\n\nRuns in HTTP mode (no TLS) on port 15888\nEnables verbose logging\nHummingbot API auto-connects at http://localhost:15888\n\nVerify it's running:\n\ncurl http://localhost:15888/\n\nWatch logs for startup sequence:\n\nGateway listening on port 15888\nSolana mainnet-beta initialized\n...\n\nConfigure custom RPC (recommended to avoid rate limits):\n\n# After gateway is running, update RPC via API\ncurl -X POST http://localhost:15888/network/config \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"chain\": \"solana\", \"network\": \"mainnet-beta\", \"nodeURL\": \"https://your-rpc.com\"}'"
      },
      {
        "title": "Command: build-gateway",
        "body": "Build a Gateway Docker image from source.\n\ncd <GATEWAY_DIR>\ndocker build \\\n  --build-arg BRANCH=$(git rev-parse --abbrev-ref HEAD) \\\n  --build-arg COMMIT=$(git rev-parse HEAD) \\\n  --build-arg BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) \\\n  -t hummingbot/gateway:dev \\\n  -f Dockerfile .\n\nTag as development for use with hummingbot-api:\n\ndocker tag hummingbot/gateway:dev hummingbot/gateway:development\n\nVerify image:\n\ndocker run --rm hummingbot/gateway:dev node -e \"console.log('OK')\""
      },
      {
        "title": "Command: setup-api-dev",
        "body": "Configure Hummingbot API to use a local Hummingbot source build instead of the PyPI package.\n\nThis lets you make changes to Hummingbot and immediately test them via the API without rebuilding Docker images."
      },
      {
        "title": "Step 1: Install hummingbot-api conda environment",
        "body": "cd <HUMMINGBOT_API_DIR>\nmake install\n\nThis creates the hummingbot-api conda env with the PyPI version of hummingbot."
      },
      {
        "title": "Step 2: Install local Hummingbot into hummingbot-api env",
        "body": "Option A — Editable install (recommended for active development):\n\nconda run -n hummingbot-api pip install -e <HUMMINGBOT_DIR> --no-deps\n\nChanges to hummingbot source are reflected immediately (no reinstall needed).\n\nOption B — Wheel install (for testing a specific build):\n\n# First build the wheel\ncd <HUMMINGBOT_DIR> && conda run -n hummingbot python setup.py bdist_wheel\n\n# Install into hummingbot-api env\nconda run -n hummingbot-api pip install <HUMMINGBOT_DIR>/dist/hummingbot-*.whl --force-reinstall --no-deps"
      },
      {
        "title": "Step 3: Verify local version is active",
        "body": "conda run -n hummingbot-api python -c \"import hummingbot; print(hummingbot.__file__)\"\n\nShould print a path inside <HUMMINGBOT_DIR>, not site-packages."
      },
      {
        "title": "Step 4: Install solders",
        "body": "conda run -n hummingbot-api pip install \"solders>=0.19.0\""
      },
      {
        "title": "Interpreting output",
        "body": "OutputMeaningPath inside your hummingbot dir✅ Local source activePath inside anaconda3/.../site-packages❌ Still using PyPI versionImportError: No module named hummingbotpip install failed — retry"
      },
      {
        "title": "Command: run-api-dev",
        "body": "Run Hummingbot API from source with hot-reload, using local Hummingbot."
      },
      {
        "title": "Step 1: Start infrastructure (postgres + EMQX via Docker)",
        "body": "cd <HUMMINGBOT_API_DIR>\ndocker compose up emqx postgres -d\n\nVerify they're healthy:\n\ndocker compose ps"
      },
      {
        "title": "Step 2: Run the API with uvicorn hot-reload",
        "body": "cd <HUMMINGBOT_API_DIR>\nconda run --no-capture-output -n hummingbot-api uvicorn main:app --reload\n\nOr via make:\n\nmake run\n\nAPI is available at http://localhost:8000\nSwagger UI at http://localhost:8000/docs\n\nWhat hot-reload means: Changes to *.py files in hummingbot-api are applied immediately. Changes to hummingbot source (editable install) are also picked up on reload."
      },
      {
        "title": "Step 3: Confirm local hummingbot is in use",
        "body": "curl -s http://localhost:8000/health | python3 -m json.tool\n\nCheck API logs for hummingbot version on startup."
      },
      {
        "title": "Useful dev commands",
        "body": "# Watch logs\nconda run -n hummingbot-api uvicorn main:app --reload --log-level debug\n\n# Run on different port\nconda run -n hummingbot-api uvicorn main:app --reload --port 8001\n\n# Check what's running\ndocker compose ps\ncurl http://localhost:8000/health"
      },
      {
        "title": "Command: test-integration",
        "body": "Smoke test the full dev stack — API, Gateway, and Hummingbot connectivity.\n\nbash scripts/check_api.sh\nbash scripts/check_gateway.sh\npython scripts/test_integration.py"
      },
      {
        "title": "What gets tested",
        "body": "TestChecksAPI healthGET /health returns 200API versionConfirms hummingbot source path (not PyPI)Gateway healthGET / on port 15888 returns 200API→GatewayAPI can reach Gateway (/gateway/status)ConnectorsAt least one connector visible via APIWalletsGateway wallet list accessible"
      },
      {
        "title": "Interpreting results",
        "body": "OutputMeaningFix✓ API runningAPI up—✓ Gateway runningGateway up—✓ API→Gateway connectedFull stack wired—✗ API not runningStart with run-api-dev—✗ Gateway not runningStart with run-gateway—✗ API→Gateway: connection refusedGateway URL mismatchCheck .env GATEWAY_URL=http://localhost:15888✗ Local hummingbot not activeUsing PyPI versionRun setup-api-dev"
      },
      {
        "title": "Docker-Based API Development",
        "body": "For testing with Docker containers (instead of source), build a custom hummingbot-api image with your hummingbot wheel."
      },
      {
        "title": "Step 1: Build Linux wheel for Docker",
        "body": "cd <HUMMINGBOT_DIR>\n\n# Build Linux wheel using Docker (Python 3.12)\ndocker run --rm -v $(pwd):/hummingbot -w /hummingbot continuumio/miniconda3 bash -c \"\n  apt-get update -qq && apt-get install -y -qq gcc g++ build-essential > /dev/null 2>&1 &&\n  conda create -n build python=3.12 cython numpy -y -q &&\n  conda run -n build pip install -q build wheel &&\n  conda run -n build python -m build --wheel\n\"\n\nls dist/*linux*.whl"
      },
      {
        "title": "Step 2: Build hummingbot-api Docker image",
        "body": "cd <HUMMINGBOT_API_DIR>\n\n# Copy wheel to API directory\ncp <HUMMINGBOT_DIR>/dist/hummingbot-*-cp312-*-linux_*.whl .\n\n# Update environment.docker.yml with wheel filename\n# Then build using Dockerfile.dev\ndocker build -f Dockerfile.dev -t hummingbot/hummingbot-api:dev ."
      },
      {
        "title": "Step 3: Deploy with docker-compose.dev.yml",
        "body": "cd <HUMMINGBOT_API_DIR>\ndocker compose -f docker-compose.dev.yml up -d"
      },
      {
        "title": "Step 4: Verify development features",
        "body": "# Check lp_executor is available (only in development hummingbot)\ncurl -s -u admin:admin http://localhost:8000/executors/types/available | grep lp_executor"
      },
      {
        "title": "Deploying Bots with Custom Images",
        "body": "When deploying bots via the API, specify which hummingbot Docker image to use."
      },
      {
        "title": "Deploy with development image",
        "body": "curl -X POST http://localhost:8000/bot-orchestration/deploy-v2-controllers \\\n  -u admin:admin \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"instance_name\": \"my-bot\",\n    \"credentials_profile\": \"master_account\",\n    \"controllers_config\": [\"my_controller.yml\"],\n    \"image\": \"hummingbot/hummingbot:development\"\n  }'"
      },
      {
        "title": "Available hummingbot images",
        "body": "ImageDescriptionhummingbot/hummingbot:latestStable PyPI release (default)hummingbot/hummingbot:developmentDevelopment branch from Docker Hubhummingbot/hummingbot:devLocally built image"
      },
      {
        "title": "DEX connectors require Gateway",
        "body": "For connectors like meteora/clmm, Gateway must be running:\n\ndocker run -d --name gateway -p 15888:15888 \\\n  -e GATEWAY_PASSPHRASE=admin \\\n  hummingbot/gateway:development"
      },
      {
        "title": "Full Dev Setup (first time)",
        "body": "# 1. Setup repos\ncd ~/Documents/hummingbot && git checkout development && git pull\ncd ~/.openclaw/workspace/hummingbot-gateway && git checkout development && git pull\n\n# 2. Install hummingbot\ncd ~/Documents/hummingbot\nsed -i '' '/solders/d' setup/environment.yml\nmake install\nconda run -n hummingbot pip install \"solders>=0.19.0\"\n\n# 3. Install gateway\ncd ~/.openclaw/workspace/hummingbot-gateway\npnpm install && pnpm build && pnpm run setup:with-defaults\n\n# 4. Wire hummingbot-api to local source\ncd ~/.openclaw/workspace/hummingbot-api\nmake install\nconda run -n hummingbot-api pip install -e ~/Documents/hummingbot --no-deps\nconda run -n hummingbot-api pip install \"solders>=0.19.0\"\n\n# 5. Start everything\ncd ~/.openclaw/workspace/hummingbot-gateway\npnpm start --passphrase=hummingbot --dev &\n\ncd ~/.openclaw/workspace/hummingbot-api\ndocker compose up emqx postgres -d\nmake run"
      },
      {
        "title": "Testing a Hummingbot Change",
        "body": "# 1. Make changes in hummingbot source\n# 2. If editable install: just save the file (hot-reload picks it up)\n# 3. If wheel install: rebuild and reinstall\ncd ~/Documents/hummingbot\nconda run -n hummingbot python setup.py bdist_wheel\nconda run -n hummingbot-api pip install dist/hummingbot-*.whl --force-reinstall --no-deps\n# 4. Restart API\n# 5. Run tests\npython scripts/test_integration.py"
      },
      {
        "title": "Repo Paths (defaults)",
        "body": "ComponentDefault pathHummingbot~/Documents/hummingbotGateway~/.openclaw/workspace/hummingbot-gatewayHummingbot API~/.openclaw/workspace/hummingbot-api\n\nOverride by setting env vars:\n\nexport HUMMINGBOT_DIR=~/code/hummingbot\nexport GATEWAY_DIR=~/code/gateway\nexport HUMMINGBOT_API_DIR=~/code/hummingbot-api"
      },
      {
        "title": "Scripts Reference",
        "body": "ScriptPurposecheck_env.shVerify prereqs (conda, node, pnpm, docker, git)check_repos.shShow branch + build status for each repocheck_api.shCheck if Hummingbot API is runningcheck_gateway.shCheck if Gateway is runningtest_integration.pyEnd-to-end smoke tests"
      }
    ],
    "body": "hummingbot-developer\n\nDeveloper workflow skill for building and running the full Hummingbot stack from source.\n\nCommands (run as /hummingbot-developer <command>):\n\nCommand\tDescription\nstart\tCheck dev environment status\nselect-branches\tPick branches for all 3 repos\ninstall-all\tInstall all 3 repos in order\nbuild-all\tBuild wheel + all Docker images\nverify-build\tVerify builds are correct + in sync\nrun-dev-stack\tStart full stack from source\nsetup-hummingbot\tInstall Hummingbot from source\nrun-hummingbot\tRun Hummingbot CLI from source\nbuild-hummingbot\tBuild wheel + Docker image\nsetup-gateway\tInstall Gateway from source\nrun-gateway\tRun Gateway in dev mode\nbuild-gateway\tBuild Gateway Docker image\nsetup-api-dev\tWire API to local Hummingbot source\nrun-api-dev\tRun API from source with hot-reload\ntest-integration\tSmoke test the full stack\n\nTypical dev workflow:\n\ninstall-deps → select-branches → install-all → build-all → verify-build → run-dev-stack → test-integration\n\n\nRepo locations (all in workspace):\n\nRepo\tPath\nhummingbot\t~/.openclaw/workspace/hummingbot\ngateway\t~/.openclaw/workspace/hummingbot-gateway\nhummingbot-api\t~/.openclaw/workspace/hummingbot-api\n\nOverride with env vars: HUMMINGBOT_DIR, GATEWAY_DIR, HUMMINGBOT_API_DIR, or WORKSPACE.\n\nCommand: install-deps\n\nAuto-install all missing dev dependencies. Safe to re-run — skips anything already installed.\n\nbash scripts/install_deps.sh\n\n\nInstalls (only if missing):\n\nHomebrew (macOS)\nXcode Command Line Tools (macOS — needed for Cython build_ext)\nMiniconda (conda)\nNode.js v22 (via nvm, Homebrew, or installs nvm)\npnpm (via npm or Homebrew)\nGit\nDocker Desktop (macOS — via Homebrew cask or opens download page)\n\nOptions:\n\n--check         # check only, don't install anything\n--conda         # only install conda\n--node          # only install node + nvm\n--pnpm          # only install pnpm\n\n\nAfter installing, restart your terminal (or source ~/.zshrc) to apply PATH changes, then run check_env.sh to confirm.\n\nCommand: select-branches\n\nInteractively pick a branch for each repo, checkout, and save to .dev-branches.\n\nbash scripts/select_branches.sh\n\n\nNon-interactive options:\n\n# Use development for all\nbash scripts/select_branches.sh --defaults\n\n# Specify each branch\nbash scripts/select_branches.sh \\\n  --hummingbot development \\\n  --gateway core-2.7 \\\n  --api development\n\n\nBranch selections are saved to $WORKSPACE/.dev-branches and automatically loaded by install_all.sh, build_all.sh, and verify_build.sh.\n\nCommand: install-all\n\nInstall all three repos in the correct order. Requires select-branches first (or pass --defaults).\n\nbash scripts/install_all.sh\n\n\nWhat it does (in order):\n\nRemoves solders from environment.yml (pip-only)\nmake install in hummingbot → conda env hummingbot\npip install solders>=0.19.0 into hummingbot env\npnpm install && pnpm build && pnpm run setup:with-defaults for gateway\nconda env create for hummingbot-api\npip install -e <hummingbot_dir> --no-deps → wires local source into API env\n\nOptions:\n\n--skip-hbot      # skip hummingbot conda install\n--skip-gateway   # skip gateway pnpm install\n--skip-api       # skip hummingbot-api install\n--no-local-hbot  # use PyPI hummingbot in API env instead of local source\n\nCommand: build-all\n\nBuild hummingbot wheel and all Docker images in the correct order.\n\nbash scripts/build_all.sh\n\n\nBuild order:\n\nhummingbot wheel (dist/*.whl) via python setup.py bdist_wheel\nhummingbot/hummingbot:dev Docker image\nhummingbot/gateway:dev Docker image (also rebuilds dist/)\nhummingbot/hummingbot-api:dev Docker image\n\nEach image is also tagged with the branch name (e.g., hummingbot/gateway:core-2.7).\n\nOptions:\n\n--wheel-only     # only build hummingbot wheel, no Docker\n--no-docker      # skip all Docker builds\n--no-hbot        # skip hummingbot builds\n--no-gateway     # skip gateway builds\n--no-api         # skip hummingbot-api builds\n--tag <name>     # Docker tag (default: dev)\n\nCommand: verify-build\n\nVerify that all builds are correct and in sync.\n\nbash scripts/verify_build.sh\n\n\nChecks:\n\nEach repo is on the expected branch (from .dev-branches)\nHummingbot wheel exists in dist/\nGateway dist/ is built and not stale vs source\nLocal hummingbot source is active in hummingbot-api env\nDocker images exist with correct branch labels\nRunning services (API + Gateway) are reachable\nAPI → Gateway connectivity\nbash scripts/verify_build.sh --no-docker   # skip Docker checks\nbash scripts/verify_build.sh --no-running  # skip service checks\nbash scripts/verify_build.sh --json        # JSON output\n\nCommand: run-dev-stack\n\nStart the full dev stack from source.\n\nbash scripts/run_dev_stack.sh\n\n\nStart order:\n\nDocker infra (postgres + EMQX) via docker compose up emqx postgres -d\nGateway from source in background (node dist/index.js --passphrase=hummingbot --dev)\nHummingbot API from source in foreground (uvicorn main:app --reload)\n\nOptions:\n\n--no-gateway           # skip gateway start\n--passphrase <pass>    # gateway passphrase (default: hummingbot)\n--stop                 # stop everything\n--status               # show running status\n\n\nLogs:\n\nGateway logs: tail -f ~/.openclaw/workspace/.gateway.log\nAPI logs: printed to terminal (foreground)\nCommand: start\n\nCheck the full dev environment and show a status summary.\n\nStep 1: Run environment check\nbash scripts/check_env.sh --json\n\nStep 2: Check repo branches\nbash scripts/check_repos.sh --json\n\nStep 3: Check running services\nbash scripts/check_api.sh --json\nbash scripts/check_gateway.sh --json\n\nStep 4: Show status checklist\n\nPresent a checklist like:\n\nDev Environment Status\n======================\n  [x] Prerequisites     — conda, node, pnpm, docker, git OK\n  [x] Hummingbot repo   — branch: development, env: hummingbot (installed)\n  [x] Gateway repo      — branch: development, built: yes\n  [x] Hummingbot API    — running at http://localhost:8000\n  [x] Gateway           — running at http://localhost:15888\n  [ ] Local hummingbot  — hummingbot-api NOT using local source\n\nNext: run /hummingbot-developer setup-api-dev to wire API to local source\n\n\nAdapt to actual state. If all good, show the test command.\n\nCommand: setup-hummingbot\n\nInstall Hummingbot from source on the development branch.\n\nStep 1: Check prereqs\nbash scripts/check_env.sh\n\nStep 2: Checkout development branch\ncd <HUMMINGBOT_DIR>\ngit fetch origin\ngit checkout development\ngit pull origin development\n\nStep 3: Remove solders from environment.yml (pip-only package)\nsed -i '' '/solders/d' setup/environment.yml 2>/dev/null || sed -i '/solders/d' setup/environment.yml\n\nStep 4: Install conda environment\nmake install\n\n\nThis creates the hummingbot conda env. Takes 3-10 minutes on first run.\n\nStep 5: Install solders via pip (not on conda)\nconda run -n hummingbot pip install \"solders>=0.19.0\"\n\nInterpreting output\nOutput\tMeaning\tNext step\nconda develop . succeeds\tDev install registered\tProceed\nPackagesNotFoundError: solders\tForgot step 3\tRun sed + reinstall\nError: Conda is not found\tconda not in PATH\tsource ~/.zshrc or install Anaconda\nbuild_ext errors\tMissing build tools\tInstall Xcode CLT: xcode-select --install\nAfter setup\n  [x] conda env \"hummingbot\" created\n  [x] solders installed via pip\n  Run hummingbot: /hummingbot-developer run-hummingbot\n  Build image:    /hummingbot-developer build-hummingbot\n\nCommand: run-hummingbot\n\nRun the Hummingbot CLI from source.\n\ncd <HUMMINGBOT_DIR>\nconda activate hummingbot\n./bin/hummingbot_quickstart.py\n\n\nOr via make:\n\ncd <HUMMINGBOT_DIR>\nmake run\n\n\nNote: This opens the interactive Hummingbot CLI. Use exit to quit.\n\nTo run with a specific config:\n\nmake run ARGS=\"--config-file-name conf_pure_mm_1.yml\"\n\nCommand: build-hummingbot\n\nBuild a Hummingbot wheel and/or Docker image from source.\n\nBuild wheel (for local pip installs)\ncd <HUMMINGBOT_DIR>\nconda activate hummingbot\npip install build wheel  # if not already installed\npython -m build --wheel --no-isolation\n\n\nWheel is output to dist/hummingbot-*.whl.\n\nImportant: The wheel must be built with Python 3.12 to match hummingbot-api's environment.\n\nUse this wheel to install into other envs:\n\npip install dist/hummingbot-*.whl --force-reinstall --no-deps\n\nBuild Linux wheel for Docker\n\nWhen building hummingbot-api Docker images, you need a Linux wheel (not macOS/Windows). Build inside Docker to ensure compatibility:\n\ncd <HUMMINGBOT_DIR>\n\n# Build Linux wheel using Docker (Python 3.12 to match hummingbot-api)\ndocker run --rm -v $(pwd):/hummingbot -w /hummingbot continuumio/miniconda3 bash -c \"\n  apt-get update -qq && apt-get install -y -qq gcc g++ build-essential > /dev/null 2>&1 &&\n  conda create -n build python=3.12 cython numpy -y -q &&\n  conda run -n build pip install -q build wheel &&\n  conda run -n build python -m build --wheel\n\"\n\n# Verify the Linux wheel was created\nls dist/*linux*.whl\n# Example: hummingbot-20260126-cp312-cp312-linux_aarch64.whl\n\n\nPlatform wheel suffixes:\n\nlinux_x86_64 — Linux AMD/Intel 64-bit\nlinux_aarch64 — Linux ARM64 (Apple Silicon Docker, AWS Graviton)\nmacosx_11_0_arm64 — macOS Apple Silicon (native only, NOT for Docker)\nmacosx_10_9_x86_64 — macOS Intel (native only, NOT for Docker)\nBuild Docker image\ncd <HUMMINGBOT_DIR>\ndocker build -t hummingbot/hummingbot:dev -f Dockerfile .\n\n\nOr with make (also cleans first):\n\nmake build TAG=:dev\n\n\nTag for use with hummingbot-api:\n\ndocker build -t hummingbot/hummingbot:development -f Dockerfile .\n\nInterpreting output\nOutput\tMeaning\nSuccessfully built + wheel path\tWheel ready in dist/\nSuccessfully tagged hummingbot/hummingbot:dev\tDocker image ready\nbuild_ext error\tCython compile issue — check conda env is active\nOOM during Docker build\tAdd --memory 4g flag\nCommand: setup-gateway\n\nInstall and configure Gateway from source.\n\nStep 1: Check prereqs\n\nRequires Node.js 20+, pnpm, and git.\n\nbash scripts/check_env.sh\n\nStep 2: Checkout development branch\ncd <GATEWAY_DIR>\ngit fetch origin\ngit checkout development\ngit pull origin development\n\nStep 3: Install dependencies\ncd <GATEWAY_DIR>\npnpm install\n\n\nIf you see USB HID errors on macOS:\n\npnpm install --force\n\nStep 4: Build TypeScript\npnpm build\n\nStep 5: Run setup\n# Non-interactive with defaults (recommended for dev)\npnpm run setup:with-defaults\n\n# Interactive (choose which configs to update)\npnpm run setup\n\n\nSetup creates:\n\nconf/ — chain, connector, token, and RPC configs\ncerts/ — TLS certificates (self-signed for dev)\nInterpreting output\nOutput\tMeaning\tNext step\nGateway setup complete\tReady to start\trun-gateway\ntsc errors\tTypeScript compile error\tCheck Node version (node --version ≥ 20)\npnpm: command not found\tpnpm not installed\tnpm install -g pnpm\nENOSPC\tDisk space\tFree up space\nCommand: run-gateway\n\nRun Gateway from source in dev mode (HTTP, no TLS).\n\ncd <GATEWAY_DIR>\npnpm start --passphrase=<PASSPHRASE> --dev\n\n\nDefault passphrase matches hummingbot-api setup: hummingbot\n\npnpm start --passphrase=hummingbot --dev\n\n\nWhat --dev does:\n\nRuns in HTTP mode (no TLS) on port 15888\nEnables verbose logging\nHummingbot API auto-connects at http://localhost:15888\n\nVerify it's running:\n\ncurl http://localhost:15888/\n\n\nWatch logs for startup sequence:\n\nGateway listening on port 15888\nSolana mainnet-beta initialized\n...\n\n\nConfigure custom RPC (recommended to avoid rate limits):\n\n# After gateway is running, update RPC via API\ncurl -X POST http://localhost:15888/network/config \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"chain\": \"solana\", \"network\": \"mainnet-beta\", \"nodeURL\": \"https://your-rpc.com\"}'\n\nCommand: build-gateway\n\nBuild a Gateway Docker image from source.\n\ncd <GATEWAY_DIR>\ndocker build \\\n  --build-arg BRANCH=$(git rev-parse --abbrev-ref HEAD) \\\n  --build-arg COMMIT=$(git rev-parse HEAD) \\\n  --build-arg BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) \\\n  -t hummingbot/gateway:dev \\\n  -f Dockerfile .\n\n\nTag as development for use with hummingbot-api:\n\ndocker tag hummingbot/gateway:dev hummingbot/gateway:development\n\n\nVerify image:\n\ndocker run --rm hummingbot/gateway:dev node -e \"console.log('OK')\"\n\nCommand: setup-api-dev\n\nConfigure Hummingbot API to use a local Hummingbot source build instead of the PyPI package.\n\nThis lets you make changes to Hummingbot and immediately test them via the API without rebuilding Docker images.\n\nStep 1: Install hummingbot-api conda environment\ncd <HUMMINGBOT_API_DIR>\nmake install\n\n\nThis creates the hummingbot-api conda env with the PyPI version of hummingbot.\n\nStep 2: Install local Hummingbot into hummingbot-api env\n\nOption A — Editable install (recommended for active development):\n\nconda run -n hummingbot-api pip install -e <HUMMINGBOT_DIR> --no-deps\n\n\nChanges to hummingbot source are reflected immediately (no reinstall needed).\n\nOption B — Wheel install (for testing a specific build):\n\n# First build the wheel\ncd <HUMMINGBOT_DIR> && conda run -n hummingbot python setup.py bdist_wheel\n\n# Install into hummingbot-api env\nconda run -n hummingbot-api pip install <HUMMINGBOT_DIR>/dist/hummingbot-*.whl --force-reinstall --no-deps\n\nStep 3: Verify local version is active\nconda run -n hummingbot-api python -c \"import hummingbot; print(hummingbot.__file__)\"\n\n\nShould print a path inside <HUMMINGBOT_DIR>, not site-packages.\n\nStep 4: Install solders\nconda run -n hummingbot-api pip install \"solders>=0.19.0\"\n\nInterpreting output\nOutput\tMeaning\nPath inside your hummingbot dir\t✅ Local source active\nPath inside anaconda3/.../site-packages\t❌ Still using PyPI version\nImportError: No module named hummingbot\tpip install failed — retry\nCommand: run-api-dev\n\nRun Hummingbot API from source with hot-reload, using local Hummingbot.\n\nStep 1: Start infrastructure (postgres + EMQX via Docker)\ncd <HUMMINGBOT_API_DIR>\ndocker compose up emqx postgres -d\n\n\nVerify they're healthy:\n\ndocker compose ps\n\nStep 2: Run the API with uvicorn hot-reload\ncd <HUMMINGBOT_API_DIR>\nconda run --no-capture-output -n hummingbot-api uvicorn main:app --reload\n\n\nOr via make:\n\nmake run\n\n\nAPI is available at http://localhost:8000 Swagger UI at http://localhost:8000/docs\n\nWhat hot-reload means: Changes to *.py files in hummingbot-api are applied immediately. Changes to hummingbot source (editable install) are also picked up on reload.\n\nStep 3: Confirm local hummingbot is in use\ncurl -s http://localhost:8000/health | python3 -m json.tool\n\n\nCheck API logs for hummingbot version on startup.\n\nUseful dev commands\n# Watch logs\nconda run -n hummingbot-api uvicorn main:app --reload --log-level debug\n\n# Run on different port\nconda run -n hummingbot-api uvicorn main:app --reload --port 8001\n\n# Check what's running\ndocker compose ps\ncurl http://localhost:8000/health\n\nCommand: test-integration\n\nSmoke test the full dev stack — API, Gateway, and Hummingbot connectivity.\n\nbash scripts/check_api.sh\nbash scripts/check_gateway.sh\npython scripts/test_integration.py\n\nWhat gets tested\nTest\tChecks\nAPI health\tGET /health returns 200\nAPI version\tConfirms hummingbot source path (not PyPI)\nGateway health\tGET / on port 15888 returns 200\nAPI→Gateway\tAPI can reach Gateway (/gateway/status)\nConnectors\tAt least one connector visible via API\nWallets\tGateway wallet list accessible\nInterpreting results\nOutput\tMeaning\tFix\n✓ API running\tAPI up\t—\n✓ Gateway running\tGateway up\t—\n✓ API→Gateway connected\tFull stack wired\t—\n✗ API not running\tStart with run-api-dev\t—\n✗ Gateway not running\tStart with run-gateway\t—\n✗ API→Gateway: connection refused\tGateway URL mismatch\tCheck .env GATEWAY_URL=http://localhost:15888\n✗ Local hummingbot not active\tUsing PyPI version\tRun setup-api-dev\nDocker-Based API Development\n\nFor testing with Docker containers (instead of source), build a custom hummingbot-api image with your hummingbot wheel.\n\nStep 1: Build Linux wheel for Docker\ncd <HUMMINGBOT_DIR>\n\n# Build Linux wheel using Docker (Python 3.12)\ndocker run --rm -v $(pwd):/hummingbot -w /hummingbot continuumio/miniconda3 bash -c \"\n  apt-get update -qq && apt-get install -y -qq gcc g++ build-essential > /dev/null 2>&1 &&\n  conda create -n build python=3.12 cython numpy -y -q &&\n  conda run -n build pip install -q build wheel &&\n  conda run -n build python -m build --wheel\n\"\n\nls dist/*linux*.whl\n\nStep 2: Build hummingbot-api Docker image\ncd <HUMMINGBOT_API_DIR>\n\n# Copy wheel to API directory\ncp <HUMMINGBOT_DIR>/dist/hummingbot-*-cp312-*-linux_*.whl .\n\n# Update environment.docker.yml with wheel filename\n# Then build using Dockerfile.dev\ndocker build -f Dockerfile.dev -t hummingbot/hummingbot-api:dev .\n\nStep 3: Deploy with docker-compose.dev.yml\ncd <HUMMINGBOT_API_DIR>\ndocker compose -f docker-compose.dev.yml up -d\n\nStep 4: Verify development features\n# Check lp_executor is available (only in development hummingbot)\ncurl -s -u admin:admin http://localhost:8000/executors/types/available | grep lp_executor\n\nDeploying Bots with Custom Images\n\nWhen deploying bots via the API, specify which hummingbot Docker image to use.\n\nDeploy with development image\ncurl -X POST http://localhost:8000/bot-orchestration/deploy-v2-controllers \\\n  -u admin:admin \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"instance_name\": \"my-bot\",\n    \"credentials_profile\": \"master_account\",\n    \"controllers_config\": [\"my_controller.yml\"],\n    \"image\": \"hummingbot/hummingbot:development\"\n  }'\n\nAvailable hummingbot images\nImage\tDescription\nhummingbot/hummingbot:latest\tStable PyPI release (default)\nhummingbot/hummingbot:development\tDevelopment branch from Docker Hub\nhummingbot/hummingbot:dev\tLocally built image\nDEX connectors require Gateway\n\nFor connectors like meteora/clmm, Gateway must be running:\n\ndocker run -d --name gateway -p 15888:15888 \\\n  -e GATEWAY_PASSPHRASE=admin \\\n  hummingbot/gateway:development\n\nQuick Reference\nFull Dev Setup (first time)\n# 1. Setup repos\ncd ~/Documents/hummingbot && git checkout development && git pull\ncd ~/.openclaw/workspace/hummingbot-gateway && git checkout development && git pull\n\n# 2. Install hummingbot\ncd ~/Documents/hummingbot\nsed -i '' '/solders/d' setup/environment.yml\nmake install\nconda run -n hummingbot pip install \"solders>=0.19.0\"\n\n# 3. Install gateway\ncd ~/.openclaw/workspace/hummingbot-gateway\npnpm install && pnpm build && pnpm run setup:with-defaults\n\n# 4. Wire hummingbot-api to local source\ncd ~/.openclaw/workspace/hummingbot-api\nmake install\nconda run -n hummingbot-api pip install -e ~/Documents/hummingbot --no-deps\nconda run -n hummingbot-api pip install \"solders>=0.19.0\"\n\n# 5. Start everything\ncd ~/.openclaw/workspace/hummingbot-gateway\npnpm start --passphrase=hummingbot --dev &\n\ncd ~/.openclaw/workspace/hummingbot-api\ndocker compose up emqx postgres -d\nmake run\n\nTesting a Hummingbot Change\n# 1. Make changes in hummingbot source\n# 2. If editable install: just save the file (hot-reload picks it up)\n# 3. If wheel install: rebuild and reinstall\ncd ~/Documents/hummingbot\nconda run -n hummingbot python setup.py bdist_wheel\nconda run -n hummingbot-api pip install dist/hummingbot-*.whl --force-reinstall --no-deps\n# 4. Restart API\n# 5. Run tests\npython scripts/test_integration.py\n\nRepo Paths (defaults)\nComponent\tDefault path\nHummingbot\t~/Documents/hummingbot\nGateway\t~/.openclaw/workspace/hummingbot-gateway\nHummingbot API\t~/.openclaw/workspace/hummingbot-api\n\nOverride by setting env vars:\n\nexport HUMMINGBOT_DIR=~/code/hummingbot\nexport GATEWAY_DIR=~/code/gateway\nexport HUMMINGBOT_API_DIR=~/code/hummingbot-api\n\nScripts Reference\nScript\tPurpose\ncheck_env.sh\tVerify prereqs (conda, node, pnpm, docker, git)\ncheck_repos.sh\tShow branch + build status for each repo\ncheck_api.sh\tCheck if Hummingbot API is running\ncheck_gateway.sh\tCheck if Gateway is running\ntest_integration.py\tEnd-to-end smoke tests"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/fengtality/hummingbot-developer",
    "publisherUrl": "https://clawhub.ai/fengtality/hummingbot-developer",
    "owner": "fengtality",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/hummingbot-developer",
    "downloadUrl": "https://openagent3.xyz/downloads/hummingbot-developer",
    "agentUrl": "https://openagent3.xyz/skills/hummingbot-developer/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hummingbot-developer/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hummingbot-developer/agent.md"
  }
}