Voltstack
Documentation
What the product does today, written from the codebase rather than the pitch. If something below is wrong, it is out of date rather than aspirational: file it against this page.
Overview
Voltstack is a workspace for building analytics dashboards for European power and gas markets. A workspace is a grid of widgets: price charts, storage monitors, constraint tables, tickers. You add widgets from a palette, arrange them on a canvas, and the layout persists to your account.
The product is aimed at desks that would otherwise be pulling ENTSO-E, GIE, and Elexon data into spreadsheets by hand. Some of that pulling is done for you already; some widgets are still illustrative placeholders. The next section explains how to tell which is which, because that distinction matters more than anything else on this page.
Widgets and data
Widgets fall into three rough groups today:
- Live feeds: day-ahead power prices, cross-border flows, generation mix, gas storage (GIE AGSI+/ALSI+), gas pipeline flows (ENTSOG), GB balancing and system price (Elexon), weather (Open-Meteo), negative-price radar, and event/constraint feeds (JAO flow-based constraints, REMIT UMM messages, German redispatch). These read from a database that a background worker keeps refreshed from the real upstream APIs, not from the browser calling them live.
- Partially live: a few widgets bind some rows or series to real data and fill the rest with a modeled overlay (for example a historical storage band that isn't itself a live feed). Where that happens the widget says so in its own label.
- Illustrative: forward curves, hub basis spreads, LNG arbitrage, carbon spot, merit-order curves, and implied volatility have no free public feed behind them (they are licensed instruments from ICE, EEX, or Platts). These render generated numbers so you can see the widget shape, and they carry a badge so nobody mistakes them for real quotes.
For the exact, currently-registered feed list and how fresh each one is right now, see /status, a public page that reads its numbers from the same health check the app itself uses. That page is the source of truth; a fixed table here would go stale as feeds are added.
Data honesty
Every widget title bar carries a small dot that tells you what you're looking at:
- Connected, live data, fresh.
- Stale, a live feed whose last update is older than expected.
- Simulated, no live path, or a live feed that fell back; the widget also shows a violet SIM pill.
- Disconnected, a feed that should be live and isn't answering.
Live widgets also show a "Data age" line: how long ago the value you're looking at was actually fetched from the upstream source, not just when the page last redrew. Upstream publication schedules vary a lot (some feeds settle same-day, some lag by weeks), so a widget being a day old can be entirely normal rather than broken. The age is there so you can judge that for yourself instead of guessing.
Workspaces
A workspace is a saved arrangement of widgets. You can rename it, create as many as you want, and delete the ones you don't. Workspaces persist to your account (not just the browser you're on), and past versions are kept so you can restore an earlier layout if you rearrange something you regret.
Read-only share links
The Share button in the top bar copies a link that renders your current workspace layout at /view to anyone who opens it, signed in or not. It is a snapshot of the layout at the moment you copied it, not a live-editing session: the recipient sees the widgets and their data, but cannot rearrange or modify anything, and does not need an account.
CSV export
Every widget's overflow menu (the ⋮ in its title bar) has an Export CSV option that downloads whatever that widget is currently showing. For pulling more history than one widget displays, there is also a server-side export endpoint (/api/export/market) that returns CSV for a given feed, filtered by series, category, or date range. CSV only for now; there is no Excel export.
Getting started
Signing up creates your organization and a database provisioned for it automatically, no separate setup step. From there you land in a default workspace with a starter set of European power widgets already on the canvas. A short guided tour runs the first time you open a workspace; you can run it again from Help in the sidebar.
Plan structure and trial terms are on the pricing page. For the live status of every data feed, see /status.