Cross-platform desktop trading terminal for the Moonbot kernel
GPU-rendered charts · live MoonProto feed · Windows · macOS · Linux
Русский · English | Features · Screenshots · Architecture · Build · Configuration · Documentation
User guide — an interactive tour of the terminal interface
MoonTerminal is a native desktop trading terminal for the Moonbot cryptocurrency-trading kernel. It renders live charts, order books, orders, reports, and strategies for one or more Moonbot cores from a single GPU-accelerated window on Windows, macOS, and Linux.
Work in progress. This is the active development workspace for the terminal — a GPUI shell, MoonUI integration, the MoonProto live feed, per-platform GPU chart rendering, and debug tooling. It is not a finished, packaged product yet.
- GPU-rendered charts — an own-pass GPU renderer on every platform (DirectX 11 on Windows, Metal on macOS, native
wgpuon Linux). No CPU readback, so live scroll and zoom stay smooth without repainting the whole window. - Live MoonProto feed — event-driven market data through a waker-based backend loop. The visible chart pulls data on the frame tick instead of constant polling.
- Trading panels — orders and order editing, order book, reports, assets & wallets, a market screener, and a strategy tree for your Moonbot cores.
- Order lines on chart — live order lines are built from the current snapshot plus captured events, so short terminal statuses (
Cancel/Fail/Done) are never dropped. - Detachable multi-window layout — chart tabs and dock panels pop out into separate windows; dock and layout state persist between sessions.
- Localized UI — Russian, English, and Spanish via
rust-i18n. - Encrypted configuration — server credentials are stored through the OS secure storage / keyring (Secret Service on Linux).
- Desk-ready details — alert sounds, coin icons, custom hotkeys and themes, plus a built-in
chart-smokeFireTest probe that reports real chart bounds, native input, and CPU/GPU/RAM counters.
![]() |
![]() |
| Chart workspace — GPU-rendered candles, order book, order lines | Settings → Connections — per-core connection setup |
MoonTerminal is a Rust virtual workspace built around a UI-agnostic core with the GPUI shell on top.
| Crate | Responsibility |
|---|---|
moon-core |
UI-agnostic kernel — connections, config, sessions, market state, reports. |
moon-chart |
Chart math — time/price view, default scale, pan/zoom, axes (wgpu-free). |
moon-ui-gpui |
The moonterminal binary — GPUI shell, panels, debug tooling, chart integration. |
Moonbot-Tech/MoonUI |
External Git dependency — standalone GPUI runtime + Moon UI components. |
Rendering. The chart draws through a dedicated GPU pass on top of MoonUI/GPUI — DX11/HLSL on Windows, Metal on macOS, the native GPUI wgpu/WGSL backend on Linux. The chart decides whether a frame is needed and prepares its data for that same frame, so the shell and order panels never repaint at live-scroll or mouse-move frequency.
Data path. MoonProto events arrive through an event sink with a waker; the backend loop wakes on real events and commands rather than a timer. The visible chart pulls market data on the frame tick, while a core-owned shared read-model serves the other consumers.
See the architecture doc for the full picture.
git clone https://github.com/Moonbot-Tech/MoonTerminal.git
cd MoonTerminalRequirements:
- Git
- Rust via
rustup - Visual Studio 2022 Build Tools with the C++ toolchain and Windows SDK
- Optional:
make
cargo build -p moon-ui-gpui --bin moonterminal --target x86_64-pc-windows-msvcDebug executable:
target\x86_64-pc-windows-msvc\debug\moonterminal.exe
Requirements:
- Xcode or a working Metal toolchain
- Rust via
rustup
cargo build -p moon-ui-gpui --bin moonterminalFor canonical Metal validation see the macOS & Linux build guide.
Ubuntu/Debian baseline:
sudo apt update && sudo apt install -y git build-essential pkg-config \
libfontconfig-dev libwayland-dev libxkbcommon-dev libvulkan-dev libssl-devcargo build -p moon-ui-gpui --bin moonterminalThe Linux encrypted config uses Secret Service in the user GUI/DBus session. Details in the macOS & Linux build guide.
| Command | Purpose |
|---|---|
make run |
build and run the debug terminal |
make build |
debug build |
make release |
release build |
make check |
type check |
make fmt |
cargo fmt |
make clean |
clean target |
make update-moon-ui |
move the MoonUI pin in the committed Cargo.lock |
make update-moonproto |
move the MoonProto pin (its own deliberate commit) |
make update-all |
move EVERYTHING including the pinned forks — lifts the version freeze |
The Makefile selects the MSVC target on Windows and the native target on macOS/Linux.
Servers are configured in the application UI:
Settings → Connections
Per-core connection setup — see the Settings → Connections screenshot above.
Runtime config lives next to the executable. Server credentials are stored in encrypted config using the OS secure storage / keyring where available. Local config files and logs are ignored by Git.
| Guide | What's inside |
|---|---|
| User guide | Interactive tour: the main-window map, first connection, panels, hotkeys |
| Architecture | Crates, per-platform GPU rendering, and the live data path |
| FireTest | The built-in chart-smoke live probe |
| macOS & Linux build | Metal validation and Linux setup |
| Windowing | Custom title bar and borderless/CSD behavior |
Moonbot · Advanced terminal for cryptocurrency trading · moonbot.pro


