Market data without the permission slip.
Live and historical futures-grade data, built only from open, independent price discovery. Signed per block. Mirrored everywhere. Public domain. The legacy data giants can keep their order forms.
- Code Apache-2.0
- Data CC0
- No API key
- No token
Prices are made in public. Then somebody fences them off.
A trade happens, the whole market learns from it, and a contract decides who may look. Receive licensed prices, or anything derived from them, and you inherit the contract. So does whatever you build.
- Priced per user, per device, per screen.Counted by you, checked by them.
- Real time costs extra. Depth costs extra again.The free tier is a delay.
- No redistribution. No derived data.Your backtest is somebody's licensed product.
- Stop paying, stop having history.And please delete what you kept.
We are not breaking the fence. We are measuring the same thing from the public side of it.
Same exposure. Open sources. Clean lineage.
The same economic risk now trades in places where every order is public. bleh.xyz reads those places directly and publishes what it sees, with the method attached.
On-chain order-book venues
Read from nodes we run ourselves, starting with every market on Hyperliquid: crypto, index, oil, metals, FX, rates and grains.
First source · in developmentUS public swap dissemination
Swap trades that US law requires to be published free of charge. They give rate curves, commodity swaps and options context.
Parallel lane · in developmentMore open venues, then agencies
Further on-chain venues, and public-domain cash-market and rates data from US agencies. Each one passes a public admission review first.
PlannedHonest label. These are prices for the same economic exposure, discovered in the open. Arbitrage keeps them close to exchange prices; the link is economic, not contractual. They are not exchange prices or official settlements, and we will publish the measured basis instead of hiding it.
The whole feed. No tiers.
Everything below is planned for the first releases and is being built in the open. None of it is live yet.
Trades with aggressor side
Trade-by-trade tapes for every market on each venue. The aggressor is native venue data, never inferred from the quote.
Order-level books, no embargo
Order-by-order books from our own nodes, with depth and top of book derived from them. Nothing delayed, nothing held back.
Bars, 1 second to 1 day
Time, tick, volume and range bars built from trades only. A gap is published as a gap, never quietly filled in.
Open order-flow analytics
Footprint, delta and CVD, volume profile and heatmaps, each with a versioned method you can read and recompute.
History back to the start
A versioned archive backfilled to each venue's earliest public data. Query it in place, or download all of it.
Signed per block
Each block's records hang off a Merkle root signed with secp256k1. Any relay or mirror can carry them; you check the maths.
Replay API
Play any archived day back as if it were live, in order, at the speed you choose. Backtests and production read the same records.
SDKs, compat layers, MCP
Python, TypeScript and Rust SDKs, compatibility layers for the tools you already run, and an MCP server so agents can ask too.
Nodes in. Signed blocks out. Copies everywhere.
A short pipeline with no licensed input at one end and no single host at the other.
- 01 · Nodes
Read the venue directly
Two of our own nodes on two providers read every market. Disagreement between them is an integrity alarm.
- own venue nodes
- public swap prints
- 02 · Signed blocks
Sign what was seen
Each stream's records in a block become Merkle leaves. The root is signed, so any single record can be proven.
- 03 · Gateway + archive
Stream it and keep it
A websocket gateway for live data and replay. A static Parquet archive you can query in place with the tools you have.
- websocket
- replay
- Parquet
- 04 · Mirrors
Let anyone carry it
The same content-addressed files over four independent networks. Every copy verifies against the signed manifest.
- CDN
- BitTorrent
- IPFS
- Arweave
What we expect to cover, labelled honestly.
Estimates from the public source register. They will move as venues list markets, and several listings are still to be confirmed from node data. Every market will carry a liquidity grade.
- Strongdeep enough to lean on
- Tapereal trades, thin market: a tape, not a benchmark
- Noneno open venue yet
| Asset class | Trades, books, order flow | Curves and reference data |
|---|---|---|
| Crypto | CompleteHere the open markets lead price discovery. | Option surfaces from open venues, later phase. |
| Equity indices | StrongUS large-cap and other index perpetuals. | Equity-index swap prints. |
| Gold, silver | StrongPerpetuals now; tokenized-metal pools later. | Good. |
| Crude oil | StrongBoth main crude benchmarks' exposures. | Public swap and commodity-option prints. |
| Other metals, natural gas | TapeCopper, platinum, palladium, gas. Listings to confirm. | Partial; public swap prints for gas. |
| FX | TapeEuro, yen and a dollar index. Listings to confirm. | Public NDF and FX-option prints; daily official reference rates. |
| Rates, Treasuries | TapeOne thin bond perpetual. That is all there is. | StrongOvernight-rate swaps, swaptions and caps from public prints. |
| Grains | TapeCorn and wheat. Listings to confirm. | Daily public cash prices, later phase. |
| Credit, power, refined products, livestock | NoneNo open venue trades these yet. | Public swap prints and agency data only. |
Known gaps. Listed options on indices and commodities, tick-level rates, and depth in agriculture. One venue carries most of the first release, which more venues are meant to dilute. We would rather tell you now.
Reference data, already flowing.
Read from public bodies and published as they release it, refreshed every few minutes. This panel loads a public snapshot; read the JSON yourself.
Sources and notices
One socket. No API key.
Subscribe by instrument and kind. Every record carries its source, its lineage and a path to a signed root, so you never have to take our word for it.
- Python, TypeScript, Rust. The same model in each: subscribe, verify, replay.
- Query the archive where it sits. Static Parquet behind a CDN, readable by DuckDB, Polars or anything that speaks HTTP range requests.
- Bring your existing client. Compatibility layers are planned so current market-data code can switch with small changes.
- Agents welcome. An MCP server exposes the same live, history and replay calls to tools.
import asyncio, bleh
async def main():
live = bleh.Live() # no key, no account
async for rec in live.subscribe(
"BTC-PERP",
kinds=["trade", "book_add", "book_cancel"],
):
rec.verify() # proof against the signed root
print(rec.kind, rec.price, rec.size, rec.side)
asyncio.run(main())
# history is the same records, replayed
bars = bleh.history.bars("GOLD", "1m", start="2026-03-18")import { Live, replay } from "bleh";
const live = new Live(); // no key, no account
const feed = live.subscribe("BTC-PERP", {
kinds: ["trade", "book_add", "book_cancel"],
});
for await (const rec of feed) {
await rec.verify(); // proof against the signed root
console.log(rec.kind, rec.price, rec.size, rec.side);
}
// any archived day, in order, at any speed
const day = replay("WTI", { from: "2026-06-01", speed: 60 });use bleh::{Kind, Live};
use futures::StreamExt;
#[tokio::main]
async fn main() -> bleh::Result<()> {
let mut feed = Live::connect().await? // no key, no account
.subscribe("BTC-PERP", &[Kind::Trade, Kind::BookAdd])
.await?;
while let Some(rec) = feed.next().await {
let rec = rec?.verified()?; // signed root, checked
println!("{:?} {} {}", rec.kind, rec.price, rec.size);
}
Ok(())
}# any websocket client works
websocat wss://live.bleh.xyz
# send
{"op":"subscribe","instrument":"BTC-PERP",
"kinds":["trade","book_add","book_cancel"]}
# receive: a book snapshot, then contiguous deltas,
# and a signed root with every block
{"kind":"trade","price":"104250","size":"0.412",
"side":"buy","seq":[812440112,3]}
{"kind":"heartbeat","block":812440112,
"root":"0x3fa9…","sig":"0x…"}There is nobody to send the letter to.
Takedowns work on things that are licensed, centralised or secret. The design avoids all three.
- 01
Nothing upstream is licensed
A source joins only if nothing above it carries an exchange data contract. Each admission is a public record.
- 02
The data is public domain
CC0 means rehosting needs no permission from anyone, including us.
- 03
Every copy is the original
Files are content-addressed and manifests are signed, so a mirror you have never heard of is as good as ours.
- 04
The record is anchored
Manifest hashes are timestamped on Bitcoin. History cannot be quietly edited, by a critic or by us.
Illustration of the plan, not a status page. The archive and its mirrors are in development.
Take it. That is the license.
Code
Nodes, gateway, archive tools and SDKs. Use it, fork it, run your own.
Data, registry, methods
Public domain. Redistribute, resell, train on it, print it on a mug. No attribution required.
Nothing to buy
No coin, no points, no waitlist with a referral code. It is a data project.
Where this is.
Early. The first three phases are being built in parallel; the rest has not started. The full plan and its open questions are in the repository.
- 00
Foundation In progress
Governed repository, data model, instrument registry, first source admissions.
- 01
Live data In progress
A signed, active-active live stream of every market on the first venue: trades, order-level books, bars, order-flow analytics, SDKs, and public swap prints alongside.
- 02
Historical data In progress
The static archive over CDN, BitTorrent, IPFS and Arweave, anchored on-chain; backfill to the venue's earliest public data; compatibility layers; a second venue.
- 03
More venues, curves, surfaces Not started
A third venue, consolidated tapes, intraday rate curves, option surfaces, agency data.
- 04
Composites and an open oracle Not started
Composite prices per exposure, dated-contract equivalents, an open daily reference close.
- 05
Federation Not started
Independent operators running the same adapters and signing their own output.
Fair questions.
Can I use it today?
No. This is an early preview of a project in development. Nothing is live, there is no endpoint to connect to, and the code samples on this page are sketches. The repository is public, so you can watch it get built or help.
Is this exchange data?
No, and it never will be. It contains no exchange-licensed feed and nothing derived from one. It is data for the same economic exposure, collected from venues and public sources where that exposure trades in the open.
How close are the prices to the exchange's?
Arbitrage keeps them close, but they are proxies and are labelled as proxies. Measuring that basis and publishing it is on the roadmap. Do not use these as official settlements or to mark positions held at an exchange.
What does "tape, not benchmark" mean?
Some markets are thin. Their trades are real and worth recording, but one small print should not be mistaken for the price of wheat. Each market will carry a published liquidity grade so you can tell which is which.
Can I redistribute it, resell it, or build a product on it?
Yes. The data is dedicated to the public domain under CC0 and the code is Apache-2.0. You do not need to ask, pay or credit anyone.
How do I know a mirror did not change the data?
You verify it. Live records prove against a per-block Merkle root signed with secp256k1. Archive files check against a signed, hash-chained daily manifest that is timestamped on Bitcoin.
Who pays for this, and is there a token?
There is no token and there will not be one. Hosting funding and long-term governance are listed as open questions on the roadmap. The design keeps running costs low: static files, zero-egress storage, and mirrors run by anyone who wants one.
Is this legal advice?
No. We publish how each source was reviewed and what was admitted, so you and your counsel can judge the lineage yourselves.
Market data? bleh.
It is early and it is all in the open. Watch the repository, read the plan, tell us where it is wrong.