How it works
Timestral is a forecasting model from Mistral AI. This site runs it in your browser, or on your computer with Docker.
The model
- Four sizes share one architecture: 5M, 28M, 123M and 209M parameters. Mistral released them on 15 October 2026.
- It forecasts series it has never seen, without training on your data.
- It returns 21 quantiles per step, from the 1st to the 99th percentile, so you get a range and a median.
- It can forecast several series together and use covariates known in the past or into the future.
- It predicts up to 1,024 steps per pass. Longer horizons append the median of one pass to the history for the next.
Mistral reports that the 209M model ranks first on the GIFT-Eval, TIME and fev-bench benchmarks, and that the 28M model beats Chronos-2, a model about four times its size, on GIFT-Eval and TIME.
Two ways to run it
In the browser
Browsers can't run PyTorch, so the model is exported to ONNX and run with onnxruntime-web, compiled to WebAssembly. Your data never leaves the page.
- Only 5M and 28M: the larger two weigh 490 MB and 837 MB.
- Weights are stored at 16-bit precision to halve the download. The math runs at 32-bit.
- The history is capped at 4,096 steps, because attention cost grows with the square of its length.
- A small service worker (coi-serviceworker) turns on multi-threading on GitHub Pages. The page reloads once on the first visit.
- A 168-step forecast from 4,096 hourly steps takes about half a second with 28M on a desktop.
The ONNX file holds one decoding pass. The rest of the forecast, about 200 lines of the official Python code, is ported to JavaScript. A test suite compares both on 18 cases: the largest difference is 0.03% of the largest forecast value. An 8-bit version was rejected because it moved forecasts by up to 84%.
What had to change for the export
Four changes, none of which changes the math:
- A running-statistics loop that depends on the series length. As exported, it gave wrong results past 3,072 steps, so it now runs a fixed number of steps.
- An early return that depends on the input values, which ONNX can't express.
cummax, which ONNX lacks, replaced with an equivalent cumulative sum.- A yes/no selection that onnxruntime-web can't run, rewritten as plain logic.
With Docker
The Docker image serves the same page, but forecasts come from the official Python package on your computer: all four sizes, full precision, and up to 16,384 steps of history. Weights download from Hugging Face the first time you use a size. Instructions are in the README on GitHub.
Reading the results
- Drag the blue line on the chart, or focus it and use the arrow keys, to pick where the forecast starts. It snaps to the ticks along the bottom, one forecast length apart.
- Drag across a chart to zoom in, and double-click it to go back. The buttons above the charts move back and forward in time, zoom out, or show all the data. Ctrl or ⌘ with the scroll wheel (or a pinch) zooms; Shift with the wheel (or a sideways swipe) moves along the time axis.
- Every forecast runs to the same place: the end of the data plus the steps ahead. The gray area is the history the model sees. Everything after the forecast start stays clear, up to the dashed line at the end of the data; past it there is nothing to check against, so the median is dotted there.
- Average error is the mean gap between the median and what happened.
- Repeating the last value is the same error for a naive forecast. If the model doesn't beat it, it adds little.
- Inside the 80% range should be near 80% when the model is honest about its uncertainty.
- With covariates selected, the page also runs the forecast without them and shows the change in error. They don't always help: on the bike data they lower the error in some weeks and raise it in others.
To use covariates past the end of your own data, add rows at the end with the covariates filled in and the forecast columns left empty.
Limits and license
- Up to 1,024 steps ahead per run, 8 forecast columns and 8 covariates.
- Categorical covariates are treated as numbers here. The Python package encodes them properly.
- The weights, and these ONNX files, are under Mistral AI's Modified MIT license: companies with more than $20 million in monthly revenue need a commercial license from Mistral. This site's code is Apache 2.0.
- Example data: NOAA Global Monitoring Laboratory (public domain), SILSO at the Royal Observatory of Belgium (CC BY-NC 4.0), Wikimedia Pageviews API (CC0), Open-Meteo (CC BY 4.0), UCI Machine Learning Repository (CC BY 4.0).