Skip to content

Crypto orderflow and trading on your machine.

Footprint and depth charts, alerts, strategies, backtests and one-click orders across eight crypto exchanges, with an AI assistant and MCP tools for your agents. It all runs on hardware you own; no account, no data in our cloud, no usage tracking.

8exchanges
14,022pairs
114MCP tools
4surfaces, one port
pricesylo · walkthrough

A walkthrough of the engine and the panel that ships with it. One process, one port, one machine none of it is hosted by us.

Spot and futures on every venue.

One catalogue across eight exchanges, refreshed every 24 h. Nothing is tracked until you ask for it the list is what you can reach, not what you are paying for.

Catalogue refreshed every 24 h.

Binance750 spot743 futures
Bybit488 spot836 futures
OKX659 spot438 futures
Bitget1,241 spot762 futures
KuCoin904 spot670 futures
Gate.io2,149 spot937 futures
Kraken88 spot298 futures
MEXC1,957 spot1,102 futures
8,236spot pairs
5,786futures pairs
14,022tracked in one catalogue
01See it

Terminal-grade orderflow, rendered locally.

Every print, every resting bid, every migration of value drawn on your own machine, from your own feed, with nothing in between. No chart service, no browser farm, nobody between you and the venue.

Book depth
300 levels a side
Seeded from
1,000-level snapshot
Footprint window
4 h · ≈0.4 MB
Volume footprint

See who paid up.

Bid against ask at every price, minute by minute. The outlined cells are where somebody stopped negotiating and started lifting; the delta under each bar says which side finished it.

BTCUSDT · binance · spot · 1m3 bars
price14:3114:3214:33
67,290··4.218.6
67,280·6.19.49.721.4
67,270·12.815.218.324.1
67,2605.47.921.619.824.920.4
67,25014.712.317.211.5·
67,24022.16.48.96.2·
67,23011.33.2··
delta−23.7−4.5+27.4

Illustrative values. Outlined cells are imbalances; the accent row is the heaviest price across the three bars.

DOM ladder

See both sides of the book.

Resting size at 300 levels a side, seeded from a 1,000-level snapshot, with the balance between the two sides on one meter under it.

BTCUSDT · order booklive
bidpriceask
67,246.00.74
67,245.53.62
67,244.51.08
67,243.00.51
67,242.00.39
mid 67,241.50spread 1.00
0.8667,241.0
1.4267,240.0
2.9767,239.0
0.6367,237.5
1.1167,236.0
52 % bidbook pressure48 % ask

Illustrative sizes. Top of book matches the venue exactly while the socket is current.

Liquidity heatmap

See where liquidity rests.

Time across, price down, resting size as heat. Walls that hold, walls that get pulled the moment price arrives, and the traded price running through the middle of it.

BTCUSDT · resting liquidity30 min
67,32067,24067,160
resting size14:0514:2014:35

Illustrative distribution. Brightness is resting size; the line is traded price.

Volume & session profiles

See how value migrates.

Where volume actually traded, and where each session left it Asia into London into New York, one band at a time.

BTCUSDT · profile3 sessions
volume by price
67,320
67,300
67,280
67,260heaviest
67,240
67,220
67,200
67,180
value by session
Asia67,186
London67,243
New York67,291

Illustrative distribution. The accent row is the heaviest traded price of the session.

Everything else on the tape.

The minute-by-minute bid×ask footprint is kept for 4 h and comes back after a restart about 0.4 MB for the whole window. Alert sounds keep a pair in earshot while you work another.

bubble fieldBBO tapevolume lanesalert sounds1-minute bid×ask footprintsurvives restarts4 h retained≈0.4 MB per window
02Read it

Analysis, not just data.

The engine does not hand you a firehose and wish you luck. It reads the market and hands you the read: 16 structural reads per pair per timeframe, 8 live orderflow reads beside them, and one compiled snapshot stamped to the price it was true at.

16 structural reads8 live orderflow reads3 read granularities
Compiled read

One request. One price stamp.

Ask once and the whole read arrives as a single object the structural reads for that timeframe, the live orderflow reads beside them, and the price all of it was true at. No second call, no stitching, no drift between the two halves.

BTCUSDT · binance · spot · 1hcompiled
{
"ok": true,
"price": 67241.5,
"kline": { /* 16 structural reads */ },
"orderflow": { /* 8 live reads */ }
}

Illustration, not a schema invented values, bodies elided.

Indicators

Values, not pixels.

EMA, RSI, VWAP and MACD arrive as numbers you can compare, threshold and act on not as a shape you have to eyeball off a chart.

BTCUSDT · 1h
EMA 9
67,188.40
EMA 20
67,102.75
EMA 21
67,094.10
EMA 50
66,842.30
EMA 200
65,970.55
RSI-14
61.4
VWAP
67,061.20
MACD
+48.62

Illustrative values, internally consistent: price above every average, the oscillator agreeing.

3 granularities

Ask for exactly as much as you need.

The same market, at three widths. Nothing forces you to take the whole object to answer one question.

One read1 / 16

the single read you asked for, and nothing beside it

One timeframe16 / 16

every structural read for that timeframe, in one object

Compiled snapshot16 + 8

the structural reads, the live orderflow reads, and the price stamp

Isolated read

One read at a time.

Ask for one read and you get one read not the other fifteen, not a page of JSON you have to walk to find it.

one read · BTCUSDT · 1h
{ … }
2 msp50 read latency
Timeframes

One minute to one week.

Every read is asked for on a timeframe. Change the timeframe and the same read comes back at a different resolution.

1m5m15m30m1h4h12h1d1w
03Act on it

Read the market, then trade it from the same window.

Spot and futures order entry sits inside the included panel that gave you the reason for the trade. Market and limit on all 8 venues, brackets on futures, leverage and margin settled once instead of on every ticket.

23venue operations
8venues, spot & futures
Order ticket · BTCUSDT · binance · futures
BUYSELL
LIMITMARKET

Limit price

67,241.5USDT

Size

0.25BTC

Leverage10×
Margincross
Reduce onlyoff

Bracket

Take profit69,400.0
Stop loss66,180.0

Step 1 of 2

Review orderConfirm

Confirm stays disabled until the ticket has been reviewed and a person has to be the one who presses it.

client ida41f-9c22-7e05

Illustrative. Two steps, always: review, then confirm. Nothing reaches a venue on the first one.

Positionslive
  • BUYBTCUSDTbinance · futures+58.13+0.35%
    ACTIVEFILLED
    Entry67,180.0
    Size0.25 BTC
    Leverage10× cross
    Mark67,412.5
  • SELLETHUSDTbybit · futures+12.39+0.28%
    ACTIVEFILLED
    Entry3,214.60
    Size1.40 ETH
    Leverage5× isolated
    Mark3,205.75
  • BUYSOLUSDTokx · futures−4.86−0.31%
    ACTIVEFILLED
    Entry172.40
    Size9.00 SOL
    Leverage3× cross
    Mark171.86

Illustrative. Order status reads the same on every venue one vocabulary, whatever the exchange happens to call it.

Market and limit, everywhere

The same two order types on spot and on futures, on all 8 venues. One ticket, one vocabulary you do not relearn the panel because you changed exchange.

Brackets on futures

Attach the take-profit and the stop at entry, so the exit exists the moment the position does. The plan goes in with the trade, not after it.

Leverage and margin, once

Set them on the pair and every ticket after that inherits them. No dropdown to forget, no ticket that quietly uses last week’s setting.

23

The account, not just the order

23 venue operations across spot and futures, reachable from the panel, the API, the CLI and your agent the same surface, whichever one you are holding.

balancestransfersorderspositionsleveragemarginopen interest
Rules that do not bend
  1. 01

    A human presses Confirm.

    Every submission is explicitly confirmed by a person. There is no autopilot, no queue that drains itself and no headless path to a live order.

  2. 02

    Every order carries a client id.

    You can find any order you sent, on any venue, by the id it was sent with including the ones the venue would rather you did not go looking for.

  3. 03

    Nothing is silently retried.

    If a submission fails, it fails in front of you. The engine will not re-send an order you did not re-send yourself.

04Automate it

Watch one condition. Get one signed event.

Point a predicate at any value the engine publishes and it becomes a webhook. Confirmation, cooldown and hysteresis are part of the subscription rather than part of your code, delivery is signed, and the log is durable enough to replay.

binance:spot:BTCUSDT:30m:price crosses_above 68000

binance:spot:BTCUSDT:30m
any venue, market, pair and timeframe
price
stands in for any value the engine publishes
crosses_above
one of 10 operators
68000
your threshold a number or a range
>>=<<===!=crosses_abovecrosses_belowentersexits
  1. 01

    Watch

    Aim a subscription at any published value, on any of the 14,022 pairs, on any timeframe.

  2. 02

    Condition

    One predicate against one threshold. 10 operators, four of which crosses above, crosses below, enters, exits only exist because the engine is already watching every tick.

  3. 03

    Confirm

    The condition has to hold before it counts. Cooldown and hysteresis come with the subscription, so a price wobbling across a level is one event, not forty.

  4. 04

    Deliversigned

    A POST to your endpoint, signed HMAC-SHA256 so you can prove it came from your own engine, retried on failure, and written to a log you can replay.

Event loglive
  • 14:32:07BTCUSDT · 30mdelivered 200

    crosses_above 68000

  • 14:18:44ETHUSDT · 1hdelivered 200

    enters 3180 … 3240

  • 13:57:02SOLUSDT · 15mretry 1 → delivered 200

    crosses_below 172.4

  • 13:41:19BTCUSDT · 4hdelivered 200

    exits 64800 … 67900

Illustrative. Every row above is signed, retried on failure, and still in the log replay it whenever you need it again.

No polling loop.

You subscribe once. The engine is already reading every tick, so nothing of yours has to wake up on a timer and ask whether anything happened.

No flapping.

Confirmation, cooldown and hysteresis ship inside the subscription. The noise is filtered where the data is, not in a queue on your side.

No lost events.

Delivery is retried and the log is durable. If your endpoint was down at 03:00, the events are still there when it comes back.

05Bring your agent

Your agent reads the same engine you do.

114 typed tools over MCP, at parity with the API or the assistant that comes with the included panel, running entirely in your browser tab with your keys and your rules.

Over MCP

Four keys, and your agent has the engine.

114 typed tools, one for one with the REST API if you can ask for it over HTTP, your agent can ask for it too. Stateless HTTP transport, so there is no session to keep alive and nothing to reconnect.

Claude CodeClaude DesktopCursorany MCP client

Charts come back as pictures

Ask a chart tool for a pair and the model receives a real PNG rendered in-process in ~110 ms, not described to it in words.

.mcp.json
{  "mcpServers": {    "pricesylo": { "type": "http", "url": "http://127.0.0.1:8420/mcp" }  }}
The whole integration. No SDK, no wrapper service, no key to mint the server is already listening on your machine.
114typed tools
1:1parity with the API
HTTPstateless transport
Assistant · your browser tab
  1. you

    Show me BTCUSDT on the 30m and tell me where value has been trading.

  2. chart · BTCUSDT · binance · spot · 30m · 1280×720
  3. BTCUSDT · binance · spot · 30m

    PNG · 1280×720 · rendered in-process in ~110 ms

  4. assistant

    Value has migrated up two levels since 12:00 and the last three sessions closed above it. The heaviest resting bids sit just under 66,900.

  5. you

    Fill a ticket buy 0.25, limit at 67,180.

  6. assistant

    Ticket filled. Review it whenever you are ready.

  7. Confirm is disabled for the assistant. A human presses it.

Illustrative. The values are invented; the refusal at the end is not it is what the control does.

Or use the one that is included

An analyst that runs in your tab.

The assistant is part of the panel that comes with the engine nothing to install, nothing to wire up. No relay, no hosted middleman, no round trip through us: it executes in the browser tab you already have open, against the engine already running beside it.

16LLM providers
7analyst skillseditable they are yours
6web-search backends
Your keys, in an encrypted vault
The panel records whether a key is present. It never stores, echoes or transmits the value.
Skills you can edit
7 analyst skills ship as text you can rewrite, because an analyst you cannot argue with is not much of an analyst.
Routines on a schedule
Have a read run on a timer and leave the result waiting for you.
The line an agent cannot cross

It can fill an order ticket. It can never press Confirm.

An agent can compose an order and hand it to you complete side, size, price, brackets, all of it. The submit controls refuse it, unconditionally. There is no flag, no mode and no permission that turns that off, because confirmation is the one thing on this machine that has to be a human act.

06Build on it

Four surfaces, one port.

REST, WebSocket, MCP and a CLI all mount on the same listener, speak the same envelope and answer to the same values. Pick the one your code already speaks.

127.0.0.1:8420

REST · WebSocket · MCP · CLI

  • REST104 endpointsPlain HTTP. Anything that can call a URL can read the market.
  • WebSocket10 channel familiesOne socket, one frame to subscribe, and then the market pushes to you.
  • MCP114 typed toolsYour agent gets the same reads, typed, with no glue code in between.
  • CLIone commandThe terminal you already have open. No client, no browser, no key.
curl
curl http://127.0.0.1:8420/api/spot/context/binance/BTCUSDT
{ "ok": true, "data": { … } }
One of 104 endpoints. The body is elided here on purpose what this page shows is the envelope, which is the part every surface has in common.

One envelope, everywhere

Every answer arrives in the same wrapper on every surface. The code that unwraps a REST read also unwraps a socket frame, a tool result and a line of CLI output one handler, four surfaces.

{ "ok": true, "data": { … } }

Errors name the field

A rejected request says which field it rejected and lists what it will accept. Nothing is silently corrected, substituted, or rounded into something that looked close enough to answer.

unknown op 'frobnicate'

valid ops: subscribe, unsubscribe, list, ping, chart

Charts as PNG, on demand

Ask any surface for a picture and a PNG comes back for any of the 14,022 pairs, rendered inside the same process in ~110 ms. No headless browser. No chart service. Nothing queued behind a screenshot farm.

9 timeframes4 styles2 themes4 overlaysup to 2560×14401000 bars
Local-first

Your machine. Your keys. Your data.

No account to create, no data in our cloud, no usage tracking to opt out of. The engine binds to localhost; its outbound connections go to the exchanges you asked it to watch, plus one encrypted licence check that proves your copy is licensed and carries nothing about your work.

No account, no data in our cloud

There is nothing to sign up for and nothing that reports on you. The listener binds to localhost, and every connection it opens is outbound to a venue you named, or to the licence check, which carries your licence and nothing else.

listener
127.0.0.1:8420bound to localhost
outbound
8 venuesthe ones you track
sent to us
licence onlyno market data, no usage

Zero idle cost

Nothing is tracked until you favourite a pair. The catalogue is what you can reach, not what you are paying to keep warm and the difference shows up in the process, not on an invoice.

idle~105 MB
two pairs streaming~160 MB

Resident memory, one process.

Honest under load

A degraded engine still answers, and it tells you it is degraded. Reconnects never give up. You are never handed a confident number that quietly came from a socket which died four minutes ago.

engine
degraded
reads
still answering
reconnect
never gives up
2 msp50 read latency
≤10 %CPU observed
1file to runno runtime to install
3operating systemsmacOS, Windows, Linux
Included with the engine

Every licence ships a panel that keeps its sockets.

The panel and the desktop app come with the engine, and they read it over the same published surfaces your own code would. Charts, orderflow and split views live in tabs that stay warm switching one costs a single paint, nothing reconnects, nothing is lost.

  • a static bundleserve it from anywhere
  • a desktop appmacOS build today
  • a reference buildthe blueprint for your own
pricesylo · workspacelive

An illustration of the panel, not a screenshot: the layout, the rail and the transport are real, every number in it is invented.

Tabs that stay warm

Kline, volume, orderflow and a split of all three live side by side. Switching one costs a single paint: the sockets stay open, the books stay seeded, nothing rewarms behind a spinner.

klinevolumeorderflowsplit multi

A full drawing rail

Channels, fibs, annotations and pattern tools draw straight onto the chart, and a notepad overlay keeps the reasoning next to the thing it is about.

channelsfibsannotationspatternsnotepad overlay

Record it, replay it

Record any session and play it back tick for tick through the identical live path the panel cannot tell the difference, which is the only way a replay is worth watching.

0.5× – 16×PNG captureWebM capture
01Favourite a pairNothing streams until you do. That is the whole cost model.
02Open a workspaceCharts, orderflow or a split of both, in tabs that stay warm.
03RecordThe session goes to disk while you keep working in it.
04ReplayPlay it back through the live path, from 0.5× to 16×.
Plans & pricing

Priced by the build. Never by the question.

You licence the engine; a desktop app is included. Personal is a {personal}; Commercial is a {commercial}. Both are renewable.

  • No metered requests.

    The engine runs on your loopback no usage meter, no per-read fees.

  • No per-symbol add-ons.

    All 14,022 pairs across 8 exchanges are included from day one. Adding more is your choice, not an extra charge.

  • No vendor deciding what you may read.

    All reads are available on both licences; they only differ in concurrency and licence duration, not access.

Personal

limited

$85/ year

1-year licence

  • 1-year licence, renewed
  • 3 market monitors
  • 3 cross-tracked timeframes
  • All chart indicators
  • Desktop App included
  • 12 months of updates included
  • Up to 3 connected devices
Request a licence

Commercial

Everything

$599/ 2 years

2-year licence

  • 2-year licence, renewable
  • Unlimited market monitors
  • 5 cross-tracked timeframes
  • Desktop App included
  • 12 months of updates included
  • Up to 5 connected devices
Request a licence

The ceiling is your hardware.

Try it on your own machine first: the free demo build is listed with Zatabox as a free digital product the same store the licences are bought from and it downloads and runs without a licence, so you buy after using the engine yourself, not before. It is the real engine, with its limits stated no CLI and no MCP surface, capped workspaces and timeframes, and every run stops after thirty minutes and starts fresh. Checkout is handled off this site by Zatabox, our payment provider, and the licensed build downloads to you the moment you purchase which is why all sales are final and no refunds are issued. Your licence key arrives by email the moment the purchase clears five blocks beginning LX- and entering it once is what activates the engine on your machine; the free demo build needs no key at all. Your copy then re-validates that key with us periodically, and keeps running through a short offline grace window when it cannot reach us. Rather ask a person first? The button does that too.

In both licences

8 exchangesspot + futurespanel + desktop app14,022 pairs16 structural reads8 live orderflow readsREST · WebSocket · MCP · CLI114 MCP tools104 REST endpoints23 venue operationsin-process PNG chartsrecord & replaysigned webhooksno account, no usage tracking

The only four differences

Licence term

How long the licence runs before anything is due again

Personal
1 year
Commercial
2 years

Market monitors

Pairs tracked at once, each opening its own streams and engines

Personal
5
Commercial
Unlimited

Cross-tracked timeframes

How many of the five analysis timeframes run per pair

Personal
Max 3
Commercial
All 5

Connected devices

Machines the licence covers at once, counted when the software verifies it

Personal
3
Commercial
5

Personal is licensed for {personal} and Commercial for {commercial}; both are renewed at the end of the term, and neither charges itself again. Every capability above is included in both the two differ in how long the licence runs and how much runs at once, never in what you may read. Each build activates with the licence key mailed to you after checkout, re-validates it with us periodically while it runs, and keeps going through a short offline grace window when it cannot reach us. Without a valid key it does not run at all.

Sponsors

Backed by people who run their own stack.

Self-hosted software only stays independent if someone pays for it directly. Licences do most of that; sponsors do the rest. A sponsorship buys a name on the wall and nothing else no seat at the table, no say in what gets built next.

See all sponsors and how to become one

The slots above are empty because nobody is standing in them yet. Placement is paid on this page.

Affiliate

Show the work. Run the engine.

Post original public videos about PriceSylo on Instagram or YouTube. If you qualify, you can get a 30-day Personal plan licence. A person reviews every application. There is no cash payout.

How the affiliate program works

The widget is the program. This band only points at it.

One file from a live engine.

Run the build for your OS, favourite a pair. From there the whole product is running on your own machine and answering on one port.

install
# no runtime to install just run the build for your OS./pricesylo          # Windows: pricesylo.exe
One file, one process no runtime to install. It runs on macOS (one universal build for Apple Silicon and Intel), Windows x64 or Linux x64, and binds to 127.0.0.1:8420.
Request a licence

or write to support@pricesylo.com

The demo build is a free digital product on Zatabox, where the licences are bought too no licence needed to run it, though every run stops after thirty minutes and starts fresh. The licensed build itself follows your purchase and comes to you; because it downloads at once, all sales are final.

What we will not claim about your machine

We cannot see a crash.
No stack trace ever reaches us. If the engine falls over at three in the morning, we find out when you tell us and not one second sooner.
We cannot see your usage.
No counters, no analytics, no usage log. We do not know which venues you watch, which pairs you favourite, or what you asked the engine for the licence check carries none of it.
We cannot see what you do with it.
The licence check tells us a licensed key was used, on a machine, on a build. That is the whole of it: no pairs, no reads, no orders and no record of when you did any of them, so there is nothing for a profile to be built out of.

That is the trade, and it runs both ways: the engine cannot report on you because nothing in it collects anything to report. It holds one socket to us the licence check, which carries your licence and nothing about your work and the rest are the venues you asked it to track.

Hear when the engine changes.

Occasional mail about new builds and what changed in them. No schedule, and no marketing sequence behind it.

One address, kept for this list and nothing else. Every mail carries a link that removes it, and you can leave at any time.