---
title: Frameworks
description: 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`**

```json
{
  "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`](/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's `technical`, numpy/pandas. Not included: `pandas_ta` or other third-party indicator packages; an unavailable import fails at [validation](/runtime/deployments) with `strategy_invalid` naming the module, not silently at 3am.
- **nautilus**: `nautilus_trader` and 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](/reference/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`](/runtime/deployments) — same class, same config keys ([guide](/guides/freqtrade-cloud)). Same for a Nautilus strategy ([guide](/guides/nautilus-cloud)). No translation layer, no lock-in either direction: stop deploying and your strategy still runs anywhere the framework does.
