Download

Get the app

Accessible Trade Terminal is open source and free for individuals. Pick the package for your platform below, or try the live demo first with nothing to install.

Latest stable version 2.12.0 · September 22, 2026

If you downloaded 2.12.0 earlier on 22 September, please download it again. The first build of this release went out without three of the files it describes — the NVDA speech library, the Dot Pad tactile SDK, and the script worker on the WebHost packages — so on that build the chart was still silent for NVDA users, the Braille tab still could not reach a device, and custom indicators still could not run. The packages below have been rebuilt and replaced, and the checksums have changed, so verify against the current SHA256SUMS.txt rather than one you saved earlier.

Not ready to install? Run the terminal free in your browser with a paper-trading account (opens in a new tab) — every indicator, the sound designer, and simulated trading to learn risk-free. Grab the desktop app below when you want real-money trading, strategy building, the AI analyst, custom scripting, or a braille display.

What's new in 2.12.0

2.11.0 was about two keys that were documented, bound and tested and never actually arrived. 2.12.0 is about a whole application that had never been listened to — the Windows desktop client had never once been run with a screen reader. It was run on 21 September, and almost everything below is what that single session found. If you use the Windows app, this is the release that makes it work. For the full engineering changelog, see the v2.12.0 release notes on GitHub (opens in new tab), or read the plain-language What’s New page.

If you run the terminal in your browser instead, your headline is the second half of the release: the chart now takes about two thirds of the window rather than two fifths, pitch is spaced the way an ear actually hears it, and a dropped connection finally says so out loud.

The Windows app speaks

It speaks at all. The download was missing the NVDA controller library, so on every release before this one the chart said nothing whatsoever on the Windows desktop app. It is in the download now — nothing to fetch, nothing to place by hand. The shape of the bug, if you met it: the chart was silent and F2 said nothing, while the same build served to your browser was fine — because the desktop chart is drawn on a native canvas that a browser live region cannot reach.

JAWS is supported too. JAWS users previously got that same silence with no workaround and nothing anywhere saying why. The terminal speaks to JAWS directly, and again there is nothing to install: if JAWS is running, it is used.

A screen reader started after the terminal is picked up. It used to be ignored for the rest of the session, so starting NVDA a moment late meant restarting the terminal.

And the terminal says when it cannot speak. The Journal (Ctrl+Alt+Shift+J) records which route the speech is taking — NVDA, JAWS, or the browser’s live region — and says so plainly when none of them is available, rather than simply going quiet. Every sentence it could not say is written down there.

Three more things that were missing from the download

All three are features whose code was correct and whose files were never copied into the release package. Nothing was ever wrong with your installation.

  • The market dropdown lists every provider again, on Windows, macOS and every WebHost package. The file that vouches for the bundled providers was absent, so all 33 were refused as untrusted and only the built-in sources appeared.
  • Custom indicators and strategies run — on the Windows app and on all four WebHost packages, which is the one most people download. The worker process that compiles and runs your code was missing, and the app refuses to compile user code in-process by design, so the whole scripting surface was dead end to end. The macOS desktop app is the exception and always has been: Apple’s sandbox does not allow it to launch that worker, so user-compiled code is refused there by name. Use the macOS WebHost package for scripting.
  • Braille and Dot Pad support is actually in the download — the tactile SDK, its 419 braille translation tables and the Microsoft C++ runtime it needs, all in the Windows package. None of it had ever been included, so the Braille tab rendered perfectly and the device could never connect: a feature that looked present and was inert. It has still never been confirmed against a physical Dot Pad — that is the honest state of it.

There is also a log file now, at %LocalAppData%\AccessibleTrader\logs\terminal.log. The Windows app previously wrote no log of any kind, which is the honest reason all of the above went unnoticed for so long.

The chart no longer disappears in a small window. Below a certain height the toolbars took the whole window and the chart was squeezed to a strip of nothing with the data loaded behind it. The chart now keeps a minimum height and the page scrolls instead.

The chart gets its window back

Measured from a photograph of a maximised 1280×781 window carrying candles, volume, RSI and MACD: the terminal’s own toolbars and bars took 394 pixels and the chart got 279 — 41.5% of the window. The same window now gives the chart about 65%.

  • Toolbar captions are off by default, and are now a setting. The icons no longer carry a text label underneath. Settings → Appearance → Toolbar captions puts them back for anyone who reads them; it previews as you tick it and Cancel takes it back, like text size. Nothing spoken changed — the name your screen reader announces and the tooltip were always separate from that caption.
  • The two rows of icons became one, and the padding between every band was trimmed.
  • Tab order changed to match. Pan, zoom and the four display toggles now come after Help and before Market. The timeframe quick-picks moved to the end of the second row, after Load chart: Tab now goes Market, Provider, Symbol, Time, Load, with the provider’s timeframe pills after that. Before, a provider offering thirteen timeframes put thirteen tab stops between Time and Load.
  • The price pane is the largest pane again, at every window size. An 80-pixel floor under every indicator pane, plus a fallback that gave up the price pane’s share the moment those floors did not fit, had been making it exactly as tall as each indicator. The floor is 60 now, and a crowded stack keeps the price pane’s share — 40% with three indicator panes — instead of dropping it to a quarter.
  • Focus mode, Alt+Z, or the Focus mode button on the bar under the chart. The toolbar, tabs, indicator bar and footer disappear and the chart takes their height; the status line stays and carries an Exit focus mode button. Both directions are announced. In the browser this is what people had been reaching for F11 to do, and F11 cannot do it — it hides the browser’s chrome, not the terminal’s. (On the desktop apps F11 is bar replay, and stays that way.)
  • Formation labels stopped piling up. Three drawn formations used to produce six labels stacked in the corner, half of them under the pane legend. Only the dominant formation labels its target and floor now, and every label steps clear of the legend. A flag that was being reported twice — once for the consolidation and again for the same consolidation one bar longer — is reported once.

The chart and the ear, on every platform

Indicators drawn on the price chart stay inside it. A Bollinger band or Keltner channel wider than the candles used to be clipped off the pane — and because a pane’s range is also its pitch range, the part you could not see was also the part you could not hear. Press Alt+F for the old behaviour (“fitting price only”), which gives the price line the full pitch range at the cost of letting bands run off the edge.

Pitch is spaced the way the ear hears it. Equal steps up a pane are now equal musical intervals wherever you are in that pane. Before, the bottom quarter of a pane carried a whole octave and the top quarter a mere third, so a price high in the window barely moved in pitch as it climbed. The extremes are unchanged; the middle has been redistributed.

With one indicator, the price chart takes about two thirds rather than splitting the window evenly with volume. With four or more indicator panes nothing changes — the pane floors had already decided that layout.

A saved workspace with a stray zero level heals itself. A reference level saved at 0 on a price pane weeks ago was still flattening the axis to 0.00 … 80,000.00 at every launch, with the candles crushed into the top quarter and most of their pitch range gone with them. Those levels are dropped from price panes on restore — an oscillator’s zero is meaningful and is left alone — and the axis can no longer be dragged to zero by a single implausible value in the first place.

If you use the hosted terminal in your browser

A dropped connection is announced. When the circuit to the server was lost, a screen-reader user was told nothing at all: the reconnect banner had no live region, so the page simply went quiet. It now speaks each attempt, says whether the server is restarting, and answers the question that actually matters — orders already placed are held at the venue and are unaffected.

On this server, the two hosted heads also gained a liveness endpoint that the restart now waits for, so a deploy no longer reports itself finished while the terminal is still opening its socket; and the “restarting” page you land on during one reloads itself the moment the terminal answers again.

What was removed

Nothing you can reach was removed in 2.12.0. One default changed visibly: the text captions under the toolbar icons are off — one tick box under Settings → Appearance brings them back, and no spoken label changed with them.

In 2.11.0, two computations that nothing read were deleted — a Money Flow average in Cipher B and a Bollinger upper band in the Top/Bottom detector, each a full pass over the series on every recalculation — which is work you were paying for and no feature you were using.

The earlier removals still stand if you are upgrading from further back. The “Export Visual” and “Export Audio” buttons left Settings in 2.10.0: they looked like whole-tab exports and were nothing of the kind, saving only the current chart’s per-component colour or sound overrides. Share a soundscape as patch JSON from the Sound Designer and a theme as text from the theme editor — both carry what you would expect. Ctrl+Alt+Shift+N also went in 2.10.0; N is the narration switch, and two chords for one thing meant the second one drifted. The fifteen drawing tools left the Add Indicator dialog in the same release — moved rather than removed, onto Alt+D and their own chords.

From 2.6.0, and still true from 2.5.0 or earlier — split view (the second chart was read-only by construction, so the terminal drew a chart it could tell you nothing about; comparing two markets is coming back as an overlay on the same axis that the arrows already walk and the sonifier already plays) and Alt+Up / Alt+Down pane scrolling, which scrolled the drawing and nothing else. Since 2.8.0, Market Structure is no longer added to new charts — that is a default, not a removal, and one tick box under Settings → General → Analysis puts it back.

How this release was tested

The suite went from 7,910 to about 8,080 tests, with the browser-driven harness at 226 — and both numbers are measured rather than quoted: dotnet test --list-tests counts 8,075 on the released commit, the engineering changelog says 8,080 (the two always differ by a test or two), and the harness reports 226 of 226 passing on this server. But the honest summary of this release is that a test suite could not have found most of it: the code was correct and the payloads were missing from the release package, so every affected feature passed its tests and then shipped inert. What found it was one person running the Windows app with a screen reader for the first time — and then, after the first build of this release went out still missing three of them, reading the published zips themselves. The release now refuses to build if a payload is absent and refuses to publish if the finished zip does not contain it.

The chart’s share of the window is now measured, not eyeballed. A new guard drives a real browser, adds volume, RSI and MACD through the actual dialog, and fails if the chart drops below its share — printing every band of the shell with its height when it does. It read 44.9% on the old code and 65.0% on this one.

Two honest caveats. The Windows app has not been re-run with a screen reader since the toolbar diet and focus mode landed — its chart is a native canvas positioned from a rectangle the page reports, and both of those changes move it, so if the chart’s mouse or touch zone is offset on the Windows app, that is the first thing to suspect. And carried forward from 2.10.0: the spoken prompts for the drawing tools and their answers have still not been heard through a screen reader, so if one of them reads wrong, that is still why.

Everything else from 2.11.0 and earlier is unchanged

Apart from the removals noted above, nothing has been taken away. The previous releases’ headline features are all still here:

  • The pin keys reach the browser (2.11.0). ; pins the formation that leads the readout and Shift+; releases it. The whole vocabulary was bound, documented and tested on the .NET side and completely unreachable from a browser, which is what a pin you could not get out of was.
  • The sonification follows the log-scale toggle (2.11.0). Press Alt+L and the ear moves with the picture: on a 10,000–100,000 window, 31,623 is drawn halfway up the pane and now sounds halfway up the sweep.
  • Volume has a note of its own (2.11.0), at E4/E3 — a fourth below the candle body’s A4/A3, where it collides with neither the body nor a wick. It had been playing on the body’s own pitch, so the bed sat on the thing it was meant to sit under.
  • Ctrl+Left and Ctrl+Right use the focused component’s own line (2.11.0). On a pane with more than one reference line they had been reading the first one — on Aroon, landing where AroonUp crossed 50 and announcing it as the Oscillator’s zero cross, both halves of the sentence naming the wrong thing.
  • Four drawing defects that were in almost every screenshot (2.11.0): y-axis labels drawn on top of each other, the crosshair badge painted over a gridline label, empty space to the right of the data labelled with the last bar’s date over and over, and the pane legend running out of the bottom of its own pane.
  • Money got safer in four places (2.10.0). Bracket legs are reduce-only and share one pair, so a stop firing after you closed by hand cannot become a fresh position the other way; a key marked Paper on a venue with no practice environment is refused by name instead of routed live; the dashboard’s key dropdown chooses the key that signs and the status bar carries a LIVE badge beside the PAPER one; and the live-order review re-arms if the ticket changes underneath it.
  • One rule for where words go (2.10.0). Whatever is about the chart in front of you is spoken there; everything else — another tab, a symbol with no tab, the terminal with the browser closed — is a system notification. Three default-off switches became one that defaults on, and closing the browser tells you what will still be watched.
  • Alerts with the browser closed read a real chart (2.10.0). Indicator, point-of-control, trend, zone and condition-tree alerts are evaluated headless against the chart your saved tab describes. Desktop only — the hosted terminal is paper-only and never runs background monitoring.
  • Every oscillator has a pane of its own (2.10.0). Thirty indicators shared one pane called “Oscillator”, and a pane has one scale, so an RSI beside a MACD was drawn and played inside a sliver of MACD’s range. Seventeen bounded indicators now keep their full scale at every zoom, so RSI 70 is the same note on every chart.
  • A level says what it is, what it means and whose it is (2.10.0). ADX’s 20, 25 and 50 and Choppiness’s 38.2 and 61.8 name the band you have entered rather than reading out a number, and a level you hide stops being a navigation target, an earcon and a narration event.
  • Drawings are placed by name (2.10.0), with Alt+D or their own chords, each point requested in words — “Risk Reward: entry at 64,100. Navigate to the stop loss and press the shortcut again.”
  • The 0 key marks the line that matters (2.9.0). On an RSI it marks 50, not the zero a 0-to-100 oscillator never visits; on Williams %R, −50. In 2.10.0 the same key also toggles that line off again.
  • Ctrl+Left and Ctrl+Right reach the midline (2.9.0). Sixteen indicators spell that line four different ways between them and nine were invisible to the crossing keys; all sixteen are reachable, and 2.10.0 adds the band edges on ADX and Choppiness.
  • Braille has its own Settings tab (2.9.0). Shift+F4 opens Settings on it with focus already there, beside the other output channels — Speech, Narration, Sonification, Braille. There is no tab in the browser version, because a Dot Pad connects to the machine running the terminal. 2.12.0 is the first release whose download actually contains the tactile SDK behind it.
  • The Order book button is unconditional (2.9.0), and the dialog says which of two things is true: the venue publishes no order book at all, or it does and no depth came back just now.
  • A guard that checks every saved field at once (2.9.0). Seven times a switch had been written to the workspace file and thrown away on the way back in; the guard found four more nobody had reported, including Market Structure’s swing markers being drawn at the value rather than above the highs.
  • What you switched on stays on (2.8.0). Narration and mute on a component were written to the workspace file and thrown away on the way back in, so “narrate only this component” lasted exactly one session. Hidden or muted now also means silent, on bar closes and in playback alike.
  • The keys agree on every head (2.8.0). The drawing tools and the detailed bar summary are Alt+Shift+letter on the Windows and Mac apps and in the browser alike — they used to be Ctrl+Shift on the desktop, so the help had to explain the difference on every page.
  • Desktop notifications (2.8.0), under Alerts → Delivery settings. They arrived as three switches, each off until you turned it on; 2.10.0 replaces all three with one switch that is on by default — see “One rule for where words go” above.
  • Eight profiles (2.8.0). Volume or time-at-price (TPO), each over the visible range, a fixed range, one session, or anchored at a bar. Three of the eight existed before.
  • Every indicator can narrate (2.7.0). Thirty-five oscillators had no way to say anything at all: you pressed N, heard “narrating”, then silence for the session. They speak their own thresholds now, including levels you have moved yourself.
  • A bar close is one sentence, and it says which bar (2.7.0), with the closing time — and arrowing along an intraday chart reads the time, with the date only when you cross into a new day. Twenty-four candle patterns, up from twelve.
  • The order read back to you is the order that is sent (2.6.0). Arming the live-order review reads your ticket aloud, and for a screen-reader user that spoken review is the ticket. Every route that can invalidate a review now voids it and says so, with a backstop comparing the whole order at the moment you confirm.
  • The terminal stopped crashing (2.6.0). Both public heads were taking about two crashes a day for a month, always the chart renderer; drawing objects were being reused across frames while another thread disposed them.
  • Speech that actually arrives (2.6.0), and playback that says what it is doing — naming what it plays, where it paused, and “finished” versus “stopped” as two different words.
  • A refused request no longer reads as an empty one (2.5.0). Nine places were reading a venue’s reply without checking whether the request had succeeded — so the terminal could say “order placed” for an order that was never placed.
  • One place decides support versus resistance (2.4.0); API keys are no longer truncated in transit, and never spoken in an error (2.4.0); whole-chart playback stopped clipping (2.4.0); Undo (2.4.0), fifty edits deep, each one saying what it just undid.
  • Your account, not just your chart (2.3.0), with short selling modelled honestly and anything unpriceable called “unpriced” rather than counted as zero. Sixteen trading venues and seventeen analytics data sources.
  • The chart names its own shapes (2.2.0). Twelve formations announced as you move through them, with the neckline and the measured target — and you can place a trade from the chart in three keystrokes.
  • Watchlists, the screener, the respect report (Alt+R), Market Structure, Value Deviation, bar replay and the theme editor all arrived in 2.1 and are unchanged.

Known limitations, stated plainly

Withdrawals are built and pinned by tests but ship switched off — the button does not render and the code refuses before any request could leave your machine — and they stay off until one has been run end to end against a live venue. Kraken Futures’ request signing is verified against Kraken’s own documented example rather than against Kraken itself, because its test venue was decommissioned in July. Kraken deposit addresses are read, not created, so the first address for an asset has to be generated once on kraken.com. Coinbase live candles still don’t report volume, though historical bars do, and Schwab’s real-time account stream awaits Schwab developer-app approval. Schwab and Interactive Brokers publish no bulk symbol list, so on those two you type the ticker rather than browsing a complete one — both now say so rather than leaving you to guess what an empty or short list meant. Binance refuses connections from some regions outright, which the terminal now names as a geo-block rather than repeating the venue’s legalese. The Windows app’s desktop toast is built and shipping but has not yet been confirmed on a real Windows machine — whether the toast registers and whether Narrator, NVDA and JAWS read it are both untested; the Linux WebHost notification path is verified. None of these affects charting or order placement.

New in 2.12.0, and stated rather than glossed. Tactile output has never been confirmed against a physical Dot Pad — until this release the SDK was not in the download at all, so “it should work” is exactly as far as anyone can honestly go; the SDK’s Japanese dictionary is deliberately left out of the package, and if a Dot Pad fails to initialise with everything else present, that is the first thing to add back. User-compiled indicators and strategies do not run on the macOS desktop app — Apple’s sandbox does not allow the worker process, and the app refuses them by name rather than failing oddly; the macOS WebHost package has no such limit. And the Windows app has not been re-run with a screen reader since the toolbar and focus-mode changes — see the caveat under “How this release was tested”.

Questions or issues? See the User Manual, the Quick Start Guide, or the What’s New page for this release in plain language.

Which one do I want — WebHost or the desktop app?

There are two ways to run the terminal. They have the same features — charts, indicators, trading, alerts, custom scripts, sonification, and full keyboard navigation all work on both. The difference is how they run:

  • WebHost runs the terminal on your own computer and opens it in your web browser. It is self-contained — no .NET to install, just unzip and run. It works on Windows, macOS, and Linux, and is the easiest way to get started for most people. On Linux it is the only option (and an excellent one).
  • Desktop app is a traditionally-installed native app for Windows and macOS. It gives the deepest native integration — lowest-latency audio, native chart rendering, and your operating system's keychain for credentials. On Windows it is also the only version that drives a refreshable braille / tactile (Dot Pad) display. Phones and tablets (iOS / Android) will use this app too, once mobile builds ship.

Short version: start with the WebHost unless you want the native desktop integration or a braille display, in which case use the desktop app.

Available downloads by platform

Version 2.12.0 · September 22, 2026. All packages are .zip archives.

Every platform is on 2.12.0. All six packages built for this release, so Windows, macOS and Linux are on the same version with nothing pinned back to an older one.

Windows

Windows downloads for Accessible Trade Terminal version 2.12.0
Package Best for Size Download
WebHost
64-bit (x64)
Simplest. Runs on your PC and opens in your browser. Nothing else to install. 89.5 MB Download
Desktop app
64-bit (x64)
Native Windows app. Deepest integration, and the only build that drives a braille / Dot Pad display. 135.9 MB Download

macOS

macOS downloads for Accessible Trade Terminal version 2.12.0
Package Best for Size Download
WebHost
Apple Silicon (arm64)
For M1–M4 Macs. Runs in your browser; nothing else to install. 66.7 MB Download
WebHost
Intel (x64)
For Intel Macs. Runs in your browser; nothing else to install. 69.4 MB Download
Desktop app
Universal (Intel + Apple Silicon)
Native macOS app. Deepest integration and lowest-latency native audio. 30.9 MB Download

Linux

Linux downloads for Accessible Trade Terminal version 2.12.0
Package Best for Size Download
WebHost
64-bit (x64)
Linux's primary client. Orca speech over D-Bus, audio via PipeWire / PulseAudio. 67.8 MB Download

Android & iOS

Mobile builds aren't available yet — the iOS and Android apps use the desktop (MAUI) codebase and are gated on touch-gesture support that's still in development. They'll appear here when ready.

Before you run it

The binaries are not yet code-signed. On first launch, Windows SmartScreen or macOS Gatekeeper may warn you — this is expected for a new open-source project. On Windows choose More info → Run anyway; on macOS right-click the app and choose Open.

  • The Windows desktop app needs the .NET 10 Desktop Runtime. It is a framework-dependent build, so if it will not start, that is almost certainly why — install the .NET Desktop Runtime 10 (x64) from Microsoft’s .NET 10 download page (opens in new tab) and run it again. The WebHost packages and the macOS app carry what they need and require nothing extra.
  • Running the WebHost: unzip it and run the AccessibleTrader.WebHost program — it starts the terminal on your computer and opens your browser. Flags: --no-launch, --demo.
  • Verify your download: compare it against SHA256SUMS.txt. On Windows run certutil -hashfile <file> SHA256; on macOS or Linux run shasum -a 256 <file>.
  • Release notes: read the full v2.12.0 release on GitHub (opens in new tab).

Not sure yet?

Try the real engine in your browser, or browse the source.

Open the live demo   View on GitHub (opens in new tab)