README.md

July 4, 2026 · View on GitHub

Wickra — streaming-first trading terminal

Built on Wickra Status CI CodeQL codecov License: MIT OR Apache-2.0 OpenSSF Scorecard OpenSSF Best Practices Build provenance Docs Live demo


One core. Ten languages. Two renderers. A streaming trading terminal built on the Wickra core — live charts, order-book, tape and 514 streaming indicators — with a native TUI and a Web front-end as a selectable renderer of the same logic (--render tui|web).

▶ Live demo: all 514 indicators over real Binance market data, computed live in your browser — live.wickra.org · zero backend, powered by wickra-wasm.

Part of the Wickra ecosystem: the same data-driven core and ten-language binding surface also power wickra-exchange, wickra-backtest, wickra-terminal, wickra-screener, wickra-xray, wickra-radar, wickra-copilot and wickra-shazam.

The heart is a single data-driven core, terminal-core: it folds market events into an O(1) AppState and turns panels into view-models (values, series, colours) — never renderer commands. The TUI maps a view-model to a ratatui widget; the Web app maps the same view-model to a canvas draw. One logic, N front-ends.

Data arrives through the DataSource trait, an activatable module:

  • Live — the wickra-exchange connectivity layer over the ten largest venues.
  • Replay — the wickra-backtest engine, driving a recorded feed with a time-machine seek.
  • Synth — a deterministic synthetic feed for demos and tests.

The core is exposed as a JSON-over-C-ABI data API (Terminal::command_json) in Rust, Python, Node.js, WASM, C, C++, C#, Go, Java and R — so a developer in any language builds their own front-end on the same core.

Status

Pre-release — functionally complete, CI-verified, not yet published. The core, both renderers (TUI + Web), all ten language bindings, the runtime source/symbol toggle, the panel set, the byte-exact golden corpus, property + fuzz tests, benchmarks and one runnable example per language are in place and green across the full CI matrix (10 languages × 3 OS). Not yet released to any registry — track progress in ROADMAP.md.

⚠️ Real orders move real money. Live execution is opt-in, testnet-first, and keys stay server-side (native renderer only). Both renderers default to read-only / paper mode. See THREAT_MODEL.md.

Documentation

Quickstart

# Native TUI renderer over a live Binance feed:
cargo run -p wickra-terminal -- --render tui --source live:binance:BTC/USDT

# Or a deterministic synthetic feed (no network):
cargo run -p wickra-terminal -- --render tui --source synth:1

Renderers

RendererWhereHow
TUInative terminalcrates/ui-tui (ratatui), --render tui
Webbrowserweb/ (Vue) over bindings/wasm, --render web

Both consume the identical Frame of view-models from terminal-core.

Use in any language

The same Terminal handle — construct from a JSON config, drive with command(json) -> json, read version — is reachable from every binding:

from wickra_terminal import Terminal
t = Terminal('{"sources":[{"Synth":{"seed":1}}]}')
frame = t.command('{"Tick":{}}')   # JSON frame of panel view-models

Project layout

crates/terminal-core   the data-driven core (DataSource, AppState, panels → view-models)
crates/ui-tui          the native TUI renderer (bin: wickra-terminal)
crates/terminal-bench  criterion benchmarks
bindings/{python,node,wasm,c,go,csharp,java,r}   the ten-language surface
web/                   the Vue/Vite Web renderer over the WASM binding
golden/                recorded feeds + byte-exact expected frames (cross-language parity)
fuzz/                  cargo-fuzz targets (feed_event, state_fold, view_model, config_parse)
examples/              one runnable example per language
docs/                  architecture, panels, sources, renderers, streaming, cookbook

Building from source

cargo build --workspace
cargo test  --workspace --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo run -p wickra-terminal -- --render tui --source synth:1

Requirements

  • Rust ≥ 1.86 (workspace MSRV; the Node binding needs ≥ 1.88).
  • Renderer/binding toolchains as needed: Node ≥ 22, Python ≥ 3.9, a C toolchain, .NET 8, JDK 22+, Go 1.23, R — see each bindings/<lang>/README.md.

Ecosystem

Part of the Wickra family — each one a data-driven core with a CLI and the same ten-language binding surface:

  • wickra — the core library: 514 O(1) streaming indicators across ten languages
  • wickra-exchange — unified market-data + execution across ten crypto exchanges
  • wickra-backtest — event-driven backtester over the Wickra core
  • wickra-terminal — the trading terminal: a TUI and a browser renderer over the stack
  • wickra-screener — parallel multi-symbol screening over 514 streaming indicators
  • wickra-xray — market-microstructure explorer: footprint, order-book heatmap, liquidation map, funding/OI divergence
  • wickra-radar — perp-universe alert radar: OI delta, funding flip, book imbalance, liquidation clusters, OI/price divergence
  • wickra-copilot — local market copilot grounded in real order-book, liquidation and funding microstructure
  • wickra-shazam — match an asset's current microstructure fingerprint against its entire history

Docs at docs.wickra.org; the marketing site and in-browser demo at wickra.org.

Contributing

See CONTRIBUTING.md and CODE_OF_CONDUCT.md. Commits are signed and in English; open a PR against main.

Security

See SECURITY.md and THREAT_MODEL.md. Report vulnerabilities privately — never in a public issue.

License

Dual-licensed under either MIT or Apache-2.0, at your option.

Disclaimer

This software is provided "as is", without warranty of any kind. It is a research and engineering tool, not financial advice. Trading carries risk of loss. Run in paper mode and against exchange testnets, and review the code before risking real capital.