Search iThub

Search tools, categories and collections. Type at least two characters.

Explore all tools
↑ ↓ to explore resultsEnter to open · Esc to close

Hummingbot

Open-source Python framework for building and running market-making and arbitrage bots on crypto exchanges

Visit website Save

Hummingbot is an Apache 2.0 framework for automated crypto trading strategies. It runs locally or in Docker, connects to centralized and decentralized exchanges and offers scripts, controllers, executors, paper trading and the hbot CLI.

Pricing
Open source
Deployment
Self-hosted
Platforms
Windows, macOS, Linux
20,976stars5,105forks
1views
Updated

What is Hummingbot?

Hummingbot is an open-source Python framework for building, configuring and running automated trading strategies, called bots, against centralized and decentralized cryptocurrency exchanges. On each clock tick a bot reads order books, balances and order status from the connected venues, then places or cancels orders according to a strategy and a YAML configuration file. The project describes its mission as making high-frequency and market-making techniques available to individual and professional users. It is software for operating strategies that the user chooses and configures: it is not a signal service or a managed account, and it does not promise that any strategy will be profitable.

CoinAlpha built and open-sourced Hummingbot in April 2019. In December 2021 it spun off the Hummingbot Foundation, a not-for-profit organization established in the Cayman Islands, which now maintains the GitHub repository, reviews pull requests, assigns developer bounties and packages releases into Docker images. Changes to the codebase and to the list of maintained connectors pass through a proposal process in which HBOT token holders vote on a Snapshot space; the governance page documents the thresholds. Several exchanges sponsor development through broker partnerships, and the README lists them with referral links.

The client is distributed as source code and as the hummingbot/hummingbot Docker image. The Docker route clones the repository and runs make setup and make deploy, optionally adding the Gateway container for DEX access. The source route uses Anaconda, a hummingbot conda environment with Python 3.10 or later and compiled Cython extensions. The client installation guide lists Linux x64 or ARM (Ubuntu 20.04+, Debian 10+), macOS and Windows through WSL2, with 4 GB RAM, 5 GB of disk and at least one vCPU per instance.

The latest release is v2.17.0, published September 22, 2026. It adds a kalshi_perpetual connector with emulated reduce-only closing orders, moves the Gateway integration to a unified route surface with a slippage ramp for executors, adds a configurable position refresh interval to the liquidity-provision executor and fixes Hyperliquid authentication that accepted a wrong private key without an error. Version 2.16.0 (July 2026) introduced the non-interactive hbot command-line interface, added Gemini and Lambdaplex connectors and removed the Cube, AscendEx and Vertex connectors. Version 2.15.0 (June 2026) added a Lighter connector and moved the MQTT bridge to aiomqtt.

The codebase is Python with Cython modules for latency-sensitive paths and is licensed under Apache 2.0. Sibling repositories extend it: Gateway is a TypeScript middleware for AMM and on-chain DEX connectors, the Hummingbot API is a REST backend for managing several bots, and Condor is an AI harness that drives that API from Telegram or a web dashboard. Servers, exchange accounts, funding, tax and the trading decisions themselves stay with the operator; the Foundation provides software and documentation, not hosting or trading services.

Inside the application

Hummingbot screenshots

Explore the interface. Open a screenshot to view it at full size.

Hummingbot interactive terminal client with command output on the left and running logs on the right
Hummingbot screenshot 1

Official documentation screenshot of the interactive client running an Avellaneda market-making configuration in paper trading mode; it shows an older version of the client.

Hummingbot live status view listing market prices, asset balances and six resting buy and sell orders
Live status view

Last frame of the official status --live animation: a paper-trading bot on BTC-USDT with three order levels on each side.

Output of the Hummingbot history command with recent trades, asset changes and profit and loss summary
Trade history report

Official example of the history command for a paper-trading session; the figures are sample data, not a performance claim.

Class diagram from PubSub and TimeIterator down to StrategyBase, ScriptStrategyBase and StrategyV2Base
Strategy class hierarchy

Official diagram of the strategy class inheritance used by V2 scripts and controllers.

Hummingbot Dashboard instances page showing one running bot with a pmm_simple controller on Binance
Dashboard bot instances

Official screenshot of the separate Streamlit Dashboard, which the Foundation no longer actively maintains and has replaced with Condor.

Source: official Hummingbot project page.

Key capabilities

  • Docker installation on Linux, macOS and Windows Clone the repository, run make setup (answer yes to include Gateway for DEX connectors) and make deploy to start the hummingbot/hummingbot:latest container. The compose file mounts conf, logs, data, certs, scripts and controllers from the host, so configurations and trade data survive container updates. Windows requires Docker Desktop with WSL2 and an Ubuntu distribution; the installation guide covers all three systems.
  • Source installation with conda Developers can run make install (or the older ./install and ./compile scripts) to create the hummingbot conda environment and build the Cython extensions. The environment requires Python 3.10.12 or later; the documentation recommends the full Anaconda distribution on macOS and Linux, while the README accepts Miniconda. Specific versions are checked out by Git tag, such as v2.17.0.
  • hbot command-line interface Added in v2.16.0, hbot runs, controls and monitors one bot per install without interactive prompts. Commands such as connect, create, start, status, logs, history and stop print compact Markdown with stable exit codes, and the run and observe commands accept --json. The hbot CLI guide documents the full command set; Gateway commands are not yet included.
  • Interactive terminal client The classic full-screen client is still the Docker default, reached with docker attach hummingbot. It has an input pane, an output pane and a log pane, with commands for connecting exchanges, importing configurations, viewing live status and order books, and exporting history. Detaching with Ctrl+P, Ctrl+Q leaves the bot running inside the container.
  • Paper trading against live market data Paper-trade connectors such as binance_paper_trade simulate orders against real order books without exchange API keys. Binance, KuCoin, Kraken and Gate.io are enabled by default and other exchanges can be added in conf_client.yml. Simulated fills do not model every queue position, fee tier or latency effect of a live venue.
  • Scripts A script is a single Python file that contains a whole strategy, such as the simple_pmm.py market-making example. All scripts now inherit from StrategyV2Base, which gives them access to executors and the market data provider. The strategies documentation recommends scripts for learning and prototyping.
  • Controllers Controllers are reusable V2 sub-strategies, such as the pmm_mister market-making controller, grouped into market-making, directional and generic folders. One bot can run several controllers, each with its own pairs and settings. Fields marked live-updatable are applied about ten seconds after hbot config changes them; other fields take effect on the next start.
  • Executors Executors are self-contained components that manage the order lifecycle of one task. The repository ships position, order, DCA, grid, arbitrage, cross-exchange market making (XEMM), TWAP and liquidity-provision executors. The position executor applies triple-barrier controls (take profit, stop loss and time limit) to a directional position.
  • V1 strategies Legacy strategies, including Pure Market Making, Avellaneda Market Making and Cross-Exchange Market Making, remain available through the interactive client. The documentation positions them for existing users and recommends the V2 framework, introduced from 2023, for new work.
  • Centralized exchange connectors CLOB CEX connectors standardize REST and WebSocket APIs for spot and perpetual markets on venues such as Binance, OKX, Bybit, Kraken, KuCoin, Gate.io, Bitget and Coinbase Advanced Trade. These exchanges hold custody of funds and connect through API keys. The maintained list changes between releases, so check the exchange pages for the current status of a venue.
  • Decentralized exchanges and Gateway CLOB DEX connectors such as Hyperliquid, dYdX v4, Injective Helix and the XRP Ledger connect with wallet keys. AMM venues, including Uniswap, PancakeSwap, Raydium, Orca, Meteora and Jupiter, are reached through Gateway, a TypeScript API server on port 15888 with router, AMM and CLMM connector types. Gateway is a separate repository and container with its own wallet storage.
  • Candle feeds and backtesting The data feed module provides candle feeds for many spot and perpetual venues. Controller configurations can be backtested before deployment, v2.16.0 enabled backtesting for Hyperliquid markets, and v2.17.0 bounded the executor view a controller keeps during a backtest. Backtest output is a model result based on historical data, not a forecast.
  • Encrypted credential storage Exchange API keys, secrets and wallet private keys are encrypted with a local password and stored in conf/connectors. The password itself is never uploaded; for unattended use it can be supplied with HBOT_PASSWORD or --password-stdin. Resetting the password means deleting the verification file and reconnecting every key, as the password page explains.
  • Trade database and history Trades are recorded in a local SQLite database under data/, with CSV exports. The history command summarizes trades, fees, volume, asset changes and profit and loss per market. Through SQLAlchemy the client can write to PostgreSQL, MySQL, Oracle or Microsoft SQL Server instead, after installing the matching driver.
  • Kill switch and health checks The optional kill switch stops a bot when its measured profit or loss reaches a configured rate, using the same calculation as history. hbot doctor checks the install, keystore, clock skew against internet time, free disk and stale state, and exits with 1 on any failure. Neither replaces exchange-side limits or position monitoring.
  • Hummingbot API, Condor and remote control For several bots, the separate Hummingbot API provides a REST backend for accounts, portfolios, orders and bot deployment, with an MCP interface for AI assistants. Condor builds on that API and is controlled from Telegram or a web dashboard. The client also includes an MQTT bridge for remote commands.
  • Anonymized usage reporting By default each instance sends aggregated USD trade volume, connector identifiers, version, general system information and a random instance ID to Foundation servers every 15 minutes. The reporting page states that no API keys, wallet addresses or individual trades are included. Setting anonymized_metrics_mode to anonymized_metrics_disabled turns it off.
Advertisements

Where Hummingbot fits

Testing a strategy with paper trading

Create the simple_pmm script with hbot create simple_pmm --set exchange=binance_paper_trade --set trading_pair=BTC-USDT, then start it and read hbot status. No API keys are needed because orders are simulated against live order books. Check how often orders are refreshed, how spreads behave as the market moves and what history reports after several hours. Treat the result as a functional test of the configuration rather than evidence about live returns, since simulated fills ignore queue position and some fee and latency effects.

Running a market-making controller on a centralized exchange

Store API keys with hbot connect binance, create a pmm_mister controller configuration with a connector, trading pair and total_amount_quote, and start it. Use status to see the run state and the count of recent errors, because a bot can be running and erroring at the same time. Change live-updatable fields with hbot config and confirm the reply says whether the change applies immediately or on restart. hbot stop cancels open orders before exiting.

Driving bots from scripts, CI or an agent

The hbot interface is designed for non-interactive use: deploy turns a configuration or strategy name into a running bot in one step, outputs are Markdown or JSON, and exit codes are stable. Supply the keystore password through HBOT_PASSWORD or --password-stdin from a secrets store rather than a shell history. Bound logs -f with a timeout in automation, and run hbot doctor before starting to catch clock skew, which causes signed exchange requests to fail.

Adding decentralized venues through Gateway

Answer yes to the Gateway prompt during make setup, or install Gateway from source, then add wallets and select chain, network and connector. Gateway starts in development mode with unencrypted HTTP; the production mode uses DEV=false and certificates generated with gateway generate-certs. Check RPC endpoints, token lists and slippage settings on a small transaction before connecting a strategy. DEX wallet setup and swaps are handled in the interactive client or the API, because hbot has no Gateway commands yet.

Backtesting and tuning a controller

Write or select a controller, download candles for the pair and backtest its configuration over a defined period. Compare several parameter sets on the same data, then run the chosen one with paper trading before using real keys. Keep the configuration file, data range and Hummingbot version together so a result can be reproduced after an upgrade. Historical results depend on the chosen period and on fill assumptions and do not predict live behavior.

Operating several bots on a server

The client runs one bot per install, so separate bots need separate installs or containers, or a single bot with several controllers. For larger setups the Hummingbot API deploys and monitors bot containers and is driven by Condor. The API always enables HTTP Basic Auth, and the documentation recommends keeping it on a private Tailscale network instead of exposing port 8000. Plan disk for logs and trade databases, and update containers with docker compose pull after reading the release notes.

Install

git clone https://github.com/hummingbot/hummingbot.git && cd hummingbot && make setup && make deploy

Reviews of Hummingbot

No reviews yet

Be the first to share your experience with Hummingbot.

Loading review form…

Alternatives to Hummingbot

Compare Hummingbot with these tools →