Odel
vike-cli

vike-cli

Local
@vike-ioRustUpdated Yesterday

Backtest, validate and execute trading strategies behind a mandatory two-call preview gate.

vike

A Rust trading platform: a live execution core, a backtest and research harness, a desktop charting shell, and bridges to fourteen venues.

This repository is a source mirror. It carries the code and nothing else — no CI workflows, no operator runbooks, no history. Each publish is one commit. The development repository is private; what you see here is what the released binaries are built from.

What is in the box

Live daemon (vike-tradehub)headless execution: mounts a venue, runs a strategy, reconciles against the venue, and stops cleanly on SIGTERM with the resting book handled
Backtest + research (backtest, vike-study, tearsheet)a bar/tick harness with parameter sweeps, successive-halving refinement and a TPE optimizer; reports persist as a run manifest
Desktop shell (vike-app)charts, order entry, a data manager and a connections editor, on egui/wgpu
Data (vike-datahub, vike-recorder)a Parquet/DataFusion history store, a live recorder, and a query server
Venuesbinance, bybit, okx, deribit, hyperliquid, aster, alpaca, ctrader, ig, oanda, polymarket, dukascopy, fxcm, ibkr — each a crate under crates/bridges/
Agent skills (skills/)ten procedures for an agent driving vike-cli mcp — backtesting, authoring a strategy, and trading on a node through the preview gate — one SKILL.md each

Running it

Container images carry every headless tool as one binary with a symlink per tool:

docker pull vikeio/vike-tradehub:latest      # Docker Hub
docker pull ghcr.io/vike-io/vike-tradehub    # GHCR

The command-line tool installs from the release without a toolchain (Linux; any other target compiles from the clone — crates/vike-cli/Cargo.toml's [package.metadata.binstall] says why):

cargo binstall --git https://github.com/vike-io/vike-trader vike-cli

From source:

cargo build --workspace                      # no native dependencies on default features
cargo run -p vike-app                        # the desktop shell (live feed; needs internet)

For an agent (Claude Code, Cursor, any MCP client), the skills install straight from this repo:

npx skills add vike-io/vike-trader           # the ten procedures under skills/, one SKILL.md each

A fresh install has no market data — two commands fix that

vike-cli init                # example strategies, indicators and run profiles under user_data/
backtest --seed-demo         # a SYNTHETIC demo tape, written under the venue id `demo`
backtest --profile user_data/profiles/backtest.toml \
         --script user_data/strategies/rhai/sma_cross/sma_cross.rhai

The demo tape is a closed-form curve, not market data; it exists so the tools have something to draw and run, and it is written under its own venue id so it can never be mistaken for, or aggregated with, real rows. For real bars:

backtest --fetch binance:BTCUSDT:1h --days 180    # public history, no credentials

Credentials, and the gate that keeps you on paper

There is exactly one credential store, <project>/settings/secrets.env, and absent credentials are the live gate — a venue with no keys mounts as paper. A second ceiling sits above it: policy.venues.<venue> in <project>/settings/policy.toml defaults every venue to paper, and it can only ever refuse, never arm. A box with no [venues] table trades paper whatever its store holds.

vike-cli secrets template prints the whole key grid with empty values; vike-cli secrets path prints where the store belongs. Nothing in this workspace deletes, moves or rewrites that file as a whole.

Licence

FSL-1.1-ALv2 — source-available, and each version becomes Apache-2.0 on the second anniversary of its release. You may read, modify, self-host and run it, including commercially, and you may charge for support and consulting; you may not offer it as a competing product or hosted service. The two-year clock means every release eventually lands under a permissive licence.