Tenzro Testnet is live —request testnet TNZO
← Back to Tutorials

Forecast a Time Series with Chronos-Bolt

ForecastingIntermediate15 min

Tenzro's forecast runtime serves five univariate time-series foundation models out of the box: chronos-2, chronos-bolt-small, chronos-bolt-base, timesfm-2.5, and granite-ttm-r2. This tutorial downloads chronos-bolt-small— the cheapest end-to-end path — and runs a 24-step probabilistic forecast over both the CLI and JSON-RPC.

1. Download the model

Chronos-Bolt ships under a permissive Apache-2.0 license, so no extra flags are required. The downloader pulls the ONNX bundle (encoder + decoder + config) and verifies SHA-256 for each file.

# Download Chronos-Bolt small (permissive Apache-2.0 license)
tenzro model download chronos-bolt-small

# Output:
# Resolving artifact bundle from HuggingFace Hub...
#   Source: amazon/chronos-bolt-small (ONNX export)
#   License tier: Permissive
#   Files: encoder.onnx, decoder.onnx, config.json
#   SHA-256 verified for all files
#   Saved to: ~/.tenzro/models/chronos-bolt-small/

2. Load it into the forecast runtime

The forecast runtime keeps the ORT session warm so subsequent calls skip cold-start cost. Models are unloaded explicitly with tenzro forecast unload <model_id>.

# Load the model into the forecast runtime
tenzro forecast load chronos-bolt-small

# Output:
# Forecast runtime loaded:
#   Model: chronos-bolt-small
#   Modality: forecast
#   Context length: 512
#   Default horizon: 64
#   Quantile heads: [0.1, 0.5, 0.9]

3. Forecast via the CLI

Pass the recent context window as a comma-separated series and a horizon length. The CLI prints the median trajectory plus the q10 / q90 quantile bands.

# Forecast a 24-step horizon from a recent context window
tenzro forecast \
  --model chronos-bolt-small \
  --series 100,102,98,105,107,110,108,112,115,118,120,122,119,124,127,130,128,132,135,138 \
  --horizon 24

# Output:
# Forecast (24 steps):
#   median: [140.2, 141.8, 143.5, ...]
#   q10:    [137.1, 138.2, 139.0, ...]
#   q90:    [143.8, 145.1, 146.9, ...]
#   latency_ms: 84

4. Forecast via JSON-RPC

Any client can hit tenzro_forecast directly. The public testnet endpoint is available at rpc.tenzro.network.

# Equivalent JSON-RPC call against the public testnet
curl https://rpc.tenzro.network \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tenzro_forecast",
    "params": {
      "model_id": "chronos-bolt-small",
      "series": [100, 102, 98, 105, 107, 110, 108, 112, 115, 118,
                 120, 122, 119, 124, 127, 130, 128, 132, 135, 138],
      "horizon": 24
    }
  }' | jq

A typical response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "model_id": "chronos-bolt-small",
    "horizon": 24,
    "median": [140.2, 141.8, 143.5, "..."],
    "quantiles": {
      "0.1": [137.1, 138.2, 139.0, "..."],
      "0.5": [140.2, 141.8, 143.5, "..."],
      "0.9": [143.8, 145.1, 146.9, "..."]
    },
    "latency_ms": 84
  }
}

5. Browse the forecast catalog

# Discover other forecast models in the network catalog
curl https://rpc.tenzro.network \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tenzro_listForecastCatalog",
    "params": {}
  }' | jq

# Returns: chronos-2, chronos-bolt-small, chronos-bolt-base,
#          timesfm-2.5, granite-ttm-r2

See also