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.
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.
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
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.
Illustrative values. Outlined cells are imbalances; the accent row is the heaviest price across the three bars.
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.
Illustrative sizes. Top of book matches the venue exactly while the socket is current.
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.
Illustrative distribution. Brightness is resting size; the line is traded price.
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.
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.
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.
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.
{"ok": true,"price": 67241.5,"kline": { /* 16 structural reads */ },"orderflow": { /* 8 live reads */ }}
Illustration, not a schema invented values, bodies elided.
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.
- 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.
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.
the single read you asked for, and nothing beside it
every structural read for that timeframe, in one object
the structural reads, the live orderflow reads, and the price stamp
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 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.
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.
Limit price
67,241.5USDT
Size
0.25BTC
Bracket
Step 1 of 2
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.
- BUYBTCUSDTbinance · futures+58.13+0.35%ACTIVEFILLEDEntry67,180.0Size0.25 BTCLeverage10× crossMark67,412.5
- SELLETHUSDTbybit · futures+12.39+0.28%ACTIVEFILLEDEntry3,214.60Size1.40 ETHLeverage5× isolatedMark3,205.75
- BUYSOLUSDTokx · futures−4.86−0.31%ACTIVEFILLEDEntry172.40Size9.00 SOLLeverage3× crossMark171.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.
- 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.
- 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.
- 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.
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.
One line is the whole rule
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
10 operators
Watch → Condition → Confirm → Deliver
- 01
Watch
Aim a subscription at any published value, on any of the 14,022 pairs, on any timeframe.
- 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.
- 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.
- 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.
- 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.
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.
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.
Drops into
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.
{ "mcpServers": { "pricesylo": { "type": "http", "url": "http://127.0.0.1:8420/mcp" } }}- you
Show me BTCUSDT on the 30m and tell me where value has been trading.
- chart · BTCUSDT · binance · spot · 30m · 1280×720
BTCUSDT · binance · spot · 30m
PNG · 1280×720 · rendered in-process in ~110 ms
- 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.
- you
Fill a ticket buy 0.25, limit at 67,180.
- assistant
Ticket filled. Review it whenever you are ready.
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.
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.
- 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.
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.
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.
One listener
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 http://127.0.0.1:8420/api/spot/context/binance/BTCUSDT{ "ok": true, "data": { … } }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.
Rejected
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.
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.
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
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.
Ships as
- a static bundleserve it from anywhere
- a desktop appmacOS build today
- a reference buildthe blueprint for your own
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.
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.
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.
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
$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
Commercial
$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
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
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.
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.
The slots above are empty because nobody is standing in them yet. Placement is paid on this page.
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.
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.
# no runtime to install just run the build for your OS./pricesylo # Windows: pricesylo.exeor 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.
Newsletter
Hear when the engine changes.
Occasional mail about new builds and what changed in them. No schedule, and no marketing sequence behind it.