Frameworks
Supported open-source frameworks, pinned versions, capability matrix.
GET/runtime/frameworks#
Which frameworks the runtime executes and at which exact versions. The digest values in the example below are illustrative 64-hex examples only; GET /runtime/frameworks is the authority for the exact deployed digest.
Response — 200
{
"frameworks": [
{
"id": "freqtrade",
"language": "python",
"version": "2026.7",
"image_digest": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"strategy_shape": "IStrategy subclass (populate_indicators / populate_entry_trend / populate_exit_trend)",
"docs": "https://www.freqtrade.io/en/stable/strategy-customization/"
},
{
"id": "nautilus",
"language": "python",
"version": "1.220.0",
"image_digest": "sha256:fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210",
"strategy_shape": "nautilus_trader Strategy with venue-native instrument IDs",
"docs": "https://nautilustrader.io/docs/"
}
]
}
Engine x venue matrix#
| Framework | Supported now | Coming soon |
|---|---|---|
| freqtrade | Hyperliquid | Binance |
| NautilusTrader | Hyperliquid, Lighter, Polymarket (backtests) | — |
Pinning#
image_digest is the contract: every deployment and backtest records the digest it ran on, and the runtime never upgrades a running deployment underneath you. Creates use the digest currently listed here; to stay on an older listed digest, pass it explicitly ("image_digest" on POST /runtime/deployments) — new versions appear as new entries and never change what an existing or pinned deployment runs.
What's in the image#
Your code is one strategy file, imported inside the framework's official image — so "will my imports work" is answered by the image, not by us:
- freqtrade: the official image's full dependency set —
talib.abstract,qtpylib, freqtrade'stechnical, numpy/pandas. Not included:pandas_taor other third-party indicator packages; an unavailable import fails at validation withstrategy_invalidnaming the module, not silently at 3am. - nautilus:
nautilus_traderand its standard dependencies.
Multi-file strategies and custom packages aren't supported in stage 1 — inline the helper into the strategy file. (Requirements-per-deployment is a tracked candidate in the design log.)
Bring the strategy you already have#
The point of running open frameworks rather than a proprietary DSL: your existing bot works here. A freqtrade strategy file that runs locally is the same file you send to POST /runtime/deployments — same class, same config keys (guide). Same for a Nautilus strategy (guide). No translation layer, no lock-in either direction: stop deploying and your strategy still runs anywhere the framework does.