Hummingbot v2.17.0 Release Notes¶
Released on September 22, 2026
| Repository | Description | GitHub Release | DockerHub Release |
|---|---|---|---|
| Hummingbot Client | Core Client | v2.17.0 changelog |
version-2.17.0 |
| Gateway | DEX Middleware | v2.17.0 changelog |
version-2.17.0 |
Note
Other Hummingbot repositories such as Condor and Hummingbot-API follow a continuous deployment model without fixed version releases. Use the main branch for these repositories.
How to Install / Update¶
- Hummingbot Client: See the Hummingbot Client Quickstart โ upgrade to v2.17.0 for the Kalshi perpetual connector, Gateway unified-route client, and executor slippage ramp. Derive users must re-run
connect derive/connect derive_perpetualafter this release (config keys renamed). - Gateway: See the Gateway Installation guide โ upgrade to v2.17.0 for the unified
/tradingroute surface, Meteora DAMM v2 AMM, and Orca Whirlpools SDK migration. Connector-scoped/connectors/{dex}/{type}/*paths are removed; call/trading/{amm,clmm,router}/*instead. - Condor + Hummingbot API: See the Condor Quickstart or full documentation at condor.hummingbot.org. Pull the latest
mainbranches together โ this cycle hardens Tailscale and MQTT broker auth, so mixed versions can fail to connect.
Agent Builders Cup¶
The Agent Builders Cup live trading finals are October 6โ8, 2026, with winners announced October 7 at our Token2049 side event in Singapore. Sponsor teams: Orca, Derive, Gate, XRPL, Bitget, and Meteora. See botcamp.xyz/hackathons for the schedule and livestream.
๐ฆ What's New - Hummingbot Client¶
๐ New Connector (Kalshi Perpetual)¶
- Kalshi โ Perpetual connector for the USD-margined perpetual futures on Kalshi, the CFTC-regulated US exchange โ its margin markets, not its event contracts (
KXBTCPERPโBTC-USD). Full derivative lifecycle: RSA-PSS REST and WebSocket auth, order book and user streams, balances, positions, leverage, and funding. Resting close orders emulatereduce_only(Kalshi only accepts it on IOC) so a take-profit is cancelled once its position is gone. Also fixes sharedExchangePyBaseorder tracking so DNS/HTTP timeouts no longer count toward the lost-order limit.
See Kalshi for documentation on how to use this connector.
๐ Gateway Client: Unified Routes, Slippage Ramp & Commands¶
The client now matches Gateway's unified /trading surface. Token and pool methods send chainNetwork instead of separate chain + network, which had broken every Gateway executor after the Gateway-side change.
- Slippage ramp โ
LPExecutorConfigandOrderExecutorConfiggainslippage_pct/slippage_multiplier/max_slippage_pct, defaulting to a 0.05 โ 0.25 โ 1.25 โ 5 ramp that widens only onSLIPPAGE_EXCEEDED. LP volume is now fees รท fee rate (flow that crossed the position) instead of capital deposited. - Token discovery โ
GatewayHttpClient.add_token_by_addresspersists a token by mint/address throughPOST /tokens/save/{address}. - Trimmed
gatewaycommands โ LP and trading actions (gateway lp,pool,swap,token) move to Gateway routes, Hummingbot API, and Condor.gateway pingfolds into baregateway. Remaining surface:allowance,approve,balance,config,connect,generate-certs,list. Autocomplete for chains, namespaces, and DEX names is also fixed.
PRs: #8431 | #8441 (Thanks to mlguys! ๐) | #8438
๐ง LP Executor & Strategy V2¶
- Configurable position refresh โ
LPExecutorConfig.position_refresh_interval(default 1s) throttles on-chain position reads so multi-executor controllers don't flood RPC. Failed reads count toward the interval, so a 5xx cannot start a per-tick retry storm. (#8446). Thanks to mlguys! ๐ - Standardized executor configs โ Executor config models are aligned across Order, Position, Grid, DCA, TWAP, XEMM, Arbitrage, and LP, with improved Hyperliquid order-cancel parsing. (#8421)
- Faster backtesting โ The controller's
executors_infoview is now active executors plus those that closed within a time window (default one hour), so a long grid backtest is no longer O(nยฒ) in executor count. Executors created on the closing tick now appear in results. (#8447)
๐ ๏ธ Connector Updates¶
- Hyperliquid: Auth now rejects a private key that does not derive to the supplied
api_addressat connect time, instead of showing "connected" and failing on every signed request (#8212). Thanks to ipezygj! ๐ Builder fee (HGP-87) resolves on the first order even when the connector is embedded andstart_network()is skipped โ so grid executors deployed from Condor carry the Foundation builder code (#8417). - Derive: Config keys renamed to match session-key auth:
derive_api_keyโderive_wallet_address,derive_api_secretโsession_private_key,sub_idโsubacct_id(spot and perpetual, mainnet and testnet). Breaking: re-runconnect derive/connect derive_perpetualโ old YAML keys fail pydantic validation at password unlock and take down client startup. (#8430) - XRPL: Token balances no longer disappear when a market has no
trading_pair_symbol(including the shippedSOLO-XRPdefault). (#8448)
Other Updates¶
- #8402 โ Updated the README exchange tables on
developmentfor the v2.16.0 connector lineup - #8403 โ Refreshed the README on
master, updating the exchange tables along with the Getting Started and Strategies sections
๐ What's New - Gateway¶
๐ Unified Trading Route Surface¶
Gateway's public API collapses from 182 paths to 54. Trading type is now a path segment and the connector a parameter; openapi.json is generated from the route table without a running server.
| Was | Is |
|---|---|
/connectors/{dex}/{type}/* (128 paths) |
removed |
/trading/swap/{quote,execute} |
/trading/router/{quote-swap,execute-quote,execute-swap} |
/connectors/{dex}/{amm,clmm}/quote-swap |
/trading/{amm,clmm}/quote-swap |
/trading/amm/{add,remove}-liquidity |
/trading/amm/{add,remove} |
/chains/{solana,ethereum}/* |
/chains/{chain}/* |
Security: every route that signs is gated from what the route does, not a path allowlist โ closing unauthenticated POST /chains/ethereum/approve (GHSA-r4q2-79mv-2355). Amounts serialize as decimal strings so JSON floats cannot round lamports. Unknown request keys are rejected instead of silently stripped.
PRs: gateway #683 | hummingbot #8431 | hummingbot-api #221
๐ Meteora DAMM v2 (AMM) & Wide DLMM Ranges¶
Gateway adds Meteora DAMM v2 (constant-product cp-amm) under /trading/amm/* as a second Meteora trading type alongside existing DLMM (clmm). Pool info, swap quote/execute, add/remove liquidity, and create-pool (requires an explicit configAddress; seed price defaults to the unified swap-router quote so new pools open on-market). Positions are NFTs: remove requires a positionAddress, and add without one opens a new position rather than topping up an existing one.
Meteora DLMM openPosition no longer rejects ranges wider than 70 bins. 70 is a transaction limit, not a position limit (POSITION_MAX_LENGTH is 1400). Wide ranges are chunked across transactions; quote-liquidity reports positionCount and transactionCount so callers see the cost before opening.
See Meteora and Connectors.
๐ Orca Whirlpools SDK Migration¶
The Orca connector moves to @orca-so/whirlpools 8.x, client 7.x, core 3.x, and Solana Kit 5.x. Position closure is reward-complete and Token-2022-aware (fixes ClosePositionNotEmpty from uncollected rewards). Position, pool, mint, and tick-array reads come from one getMultipleAccounts snapshot so fee math no longer mixes slots.
PRs: #676 | #687 | Thanks to mlguys! ๐
Other Updates¶
- #675 โ Fixed Uniswap CLMM
execute-swapreverting with "Too little received" by clearingsqrtPriceLimitX96, which had capped every swap at its own average execution price and turned normal price impact into a failed, gas-burning transaction (slippage already comes fromamountOutMinimum) - #695 โ Fixed swap responses to report confirmed on-chain amounts, returned complete CLMM position listings, resolved Raydium positions from an address instead of requiring custody of the wallet key, and corrected the CoinGecko Demo and Pro onchain endpoints
- #703 โ Fixed the default wallet to resolve from the chain a request names, so an EVM swap no longer inherited the Solana default address and failed validation
- #677 โ Switched the Docker buildx workflow to build images on every push to
main/development, not only on merged pull requests
๐ฆ What's New - Condor and Hummingbot API¶
๐ค New Condor Agents¶
This cycle ships a set of ready-to-run trading agents โ CLMM LP, HIP-3 funding, XRPL CLOB, Derive flow, Meteora launch LP, and adaptive grids:
- Solana DEX LP Expert โ autonomous CLMM liquidity on Meteora / Orca / Raydium: scan GeckoTerminal by fee yield, size into slots, place LP Executors, recycle out-of-range idle capital. (#162)
- Delta-Neutral Funding Agent โ HIP-3 (
XYZ:issuer perps on Hyperliquid) carry: twopmm_mistercontrollers, beta-weighted long/short so net delta โ 0, leaned to the funding-favorable side. (#165) - XRPL CLOB Market Maker โ on-ledger maker for RLUSD/XRP that quotes tighter than AMM pool fees so pathfinding routes takers to the CLOB; fair value from a CEX, not on-ledger. (#176)
- Derive Perp Smart-Money Flow Agent โ directional LONG/SHORT on
derive_perpetualfrom cross-market capital-flow plus a Solana on-chain pulse. (#178) - Meteora Launch LP โ early LP on tokens graduating into DAMM v2, with mint/freeze-authority and holder-concentration gates, plus a chain-agnostic
manage_ammtool. (#192) - Adaptive Grid Trader โ grid whose range comes from measured ATR, re-leaned hourly, with
limit_priceas the known worst-case exit. (#179)
See Condor for documentation.
๐ DEX Trade Panel¶
The Condor web dashboard trade panel now treats a Gateway network like a CEX: pick a DEX venue, chart the pool, and manage LP positions. Venue traits (order book? LP? which strategies?) come from the API instead of a CEX/DEX boolean. Follow-up polish shares the default server with Telegram and warns on Meteora's bin cap before Gateway rejects the open.
PRs: #203 | #214 | hummingbot-api #206
๐ง Agent Runtime, Primitives & Custom LLMs¶
- Custom OpenAI-compatible endpoints โ Venice, Together, Fireworks, vLLM, or LM Studio work as a first-class model source across Telegram, the web dashboard, and agent consults/loops. Endpoints live in
config.yml; agent keys arecustom@<endpoint>:<model-id>. (#175) - General agent upgrade โ finished background tasks stream back into the chat that started them; Telegram conversations and agent bindings survive respawn; shared skill/routine library (
routine_cookbook,backtest_flow,self_improve); backtesting on one surface. (#194) - Discoverable primitives โ
catalog()/describe()/call_routine()index fetchers and routines from the live code so agents can find and compose them without guessing imports. (#217) - Orphaned CLMM recovery โ
manage_clmmplusmanage_executorsorphaned/resolve_orphanactions, so a terminal LP executor still holding an on-chain position is visible and recoverable instead of minting a second one. (#204)
๐ Tailscale, MQTT & Broker Hardening¶
Condor and Hummingbot API close the remaining public-bind gaps from the v2.15.1 Tailscale work:
- Postgres and EMQX bind
127.0.0.1only. Docker no longer publishes them on all interfaces ahead of the host firewall. - Tailscale is exclusive. Enabling it binds the API and Condor dashboard to loopback and proxies through
tailscale serve, instead of joining the tailnet while port 8000 stayed public. - MQTT requires authentication. The EMQX broker no longer accepts anonymous
hbot/#subscribe orhbot/<id>/stoppublish. Existing Linux deploys that came up with zero broker accounts needmake emqx-auth-reset. make doctorchecks deps,.env, model readiness, dashboard bind, and API/broker connectivity. Condor delegates hummingbot-api setup instead of rewriting.env.
See the Tailscale guide.
PRs: condor #213 | condor #231 | hummingbot-api #220 | hummingbot-api #222 | hummingbot-api #225 | hummingbot-api #229
Other Updates¶
- condor #172 โ Fixed agent startup failing on an unquoted numeric MCP username or password in
config.yml, which had broken LM Studio and other pydantic-ai backends - condor #180 โ Added ticker volume to the web dashboard trade page
- condor #196 โ Fixed the executor risk gate to measure planned exposure in quote units, instead of counting a base-token
amountas quote and rejecting valid executors Thanks to mlguys! ๐ - condor #200 โ Fixed the risk gate to accept
controller_idas a top-level argument as well as insideexecutor_config, unblocking executor creates on the Derive Perp Smart-Money Flow agent - condor #205 โ Added the user feedback survey to the README
- condor #224 โ Hardened sharing: matched BIP-39 recovery phrases regardless of separator, fixed outbox unshare, flush, and off-switch handling, and added secret redaction at ingress
- condor #240 โ Completed a 114-item security, correctness, and performance sweep, including owner-scoped reports, live share revocation, and moving Gateway infrastructure off the agent surface
- hummingbot-api #202 โ Added compression to bot data payloads
- hummingbot-api #204 โ Fixed controller config class resolution and removed the deprecated stat-arb controller
- hummingbot-api #205 โ Improved backtesting storage by archiving results to disk instead of holding them in memory
- hummingbot-api #215 โ Improved Gateway certificate generation and fixed order book validation when registering trading pairs
- hummingbot-api #221 โ Adopted Gateway's unified route surface, and recorded landed reverts and position rent on LP and swap executor events
- hummingbot-api #223 โ Added the human-readable field prompt to the connector
config-mapendpoint, so clients no longer had to invent their own labels for credential forms - hummingbot-api #226 โ Added executor performance as a first-class read surface (
GET /performance/historyand/latest), so an executor's PnL survived a restart instead of being booked at zero - hummingbot-api #234 โ Fixed order-history search to page by a real keyset cursor, instead of returning the same
"0:"cursor and looping on page one forever