About vike-cli
vike-cli is the command-line interface for a Rust trading platform, aimed at strategy research, backtesting, and execution. It combines historical data services and venue bridges with agent procedures, while trading actions pass through a mandatory two-call preview gate.
Key features
- 01Backtest strategies and optimize parameters
- 02Fetch and query historical market data
- 03Connect to multiple trading venues
- 04Execute trades through a preview gate
- 05Provide agent procedures for platform tasks
Use cases
- 01Research and backtest a trading strategy
- 02Retrieve historical market data
- 03Preview and execute trades on a node
- 04Guide an agent through trading tasks
MCP support
Agents can drive the project through `vike-cli mcp`, with repository skills covering backtesting, strategy authoring, data setup, and trading. It supports MCP clients operating trading tools behind the preview gate.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEvike
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 (backtesthub, 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-desktop) | charts, order entry, a data manager and a connections editor, on egui/wgpu — a client of the daemons: it mounts no venue itself |
Data (vike-datahub, vike-recorder) | a Parquet/DataFusion history store, a live recorder, and a query server |
| Venues | binance, bybit, okx, deribit, hyperliquid, aster, alpaca, ctrader, ig, oanda, polymarket, dukascopy, fxcm, ibkr — each a crate under crates/bridges/ |
Agent skills (skills/) | procedures for an agent driving vike-cli mcp — backtesting, authoring a strategy, getting data in, and trading on a node through the preview gate — one SKILL.md each, indexed in skills/README.md |
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 and Windows; 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
On Windows with no Rust at all, download the executable from the release — it needs nothing installed and no toolchain:
curl.exe -L -o vike-cli.exe https://github.com/vike-io/vike-trader/releases/latest/download/vike-cli.exe
.\vike-cli.exe --version
Verify it against the release's own manifest before running it:
curl.exe -L -o SHA256SUMS https://github.com/vike-io/vike-trader/releases/latest/download/SHA256SUMS
(Get-FileHash vike-cli.exe -Algorithm SHA256).Hash.ToLower() # compare with the vike-cli.exe line
⚠ Neither path updates itself. cargo binstall records the install under a crate version that never
moves, so a re-install needs --force; a downloaded executable is replaced by downloading it again.
⚠ On Windows the standalone backtest ENGINE is not published, so data hist fetch --source demo|starter
and backtest run --local are unavailable until you build one. The remote path needs no engine:
vike-cli backtest run --addr HOST:PORT runs on a vike-datahub server instead.
From source:
cargo build --workspace # no native dependencies on default features
cargo run -p vike-desktop # the desktop shell (charts stay empty with no backend)
For an agent (Claude Code, Cursor, any MCP client), the skills install straight from this repo:
npx skills add vike-io/vike-trader # every procedure under skills/, one SKILL.md each
A fresh install has no market data — this fixes that
vike-cli init # example strategies, indicators and run profiles under user_data/
vike-cli data hist fetch --source demo # a SYNTHETIC demo tape, written under the venue id `demo`
vike-backend datahub & # serves this project's store: key-less, loopback only
vike-cli backtest run --local --profile user_data/profiles/backtest.toml \
--script user_data/strategies/rhai/sma_cross/sma_cross.rhai
The datahub line is not optional: every history READ goes through one, a --local run included —
--local moves the backtest ENGINE onto this machine, never the history. Started with no
environment it serves the same <project>/market_data/hist the seeding command wrote into, and with
no hub keys it authenticates nothing and binds loopback only, which is where --local looks by
default. If the tape went somewhere else, name that directory:
vike-backend datahub --store DIR # DIR: where the tape went
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:
vike-cli data hist fetch --source starter # the published dataset, over plain HTTPS
vike-cli data hist fetch binance:BTCUSDT:1h --days 180 # public history, no credentials; asks the datahub
Credentials, and the gate that keeps you on paper
There is exactly one credential store, the settings database <project>/settings/db/vike.db, and
absent credentials are the live gate — a demo or live account with no keys does not run. Each
account trades at its own tier (paper, demo or live) only while its account row is active, or
it does not run: no row, an inactive row, or a tier its keys cannot bind exactly runs nothing — never
paper in its place. vike-cli secrets accounts
lists the rows, and vike-cli secrets account activate|deactivate|set-tier --id <N> changes one.
⚠ A credential belongs to its ACCOUNT, and storing one never creates an account or chooses its
tier: vike-cli secrets account add --venue <VENUE> --tier <paper|demo|live> --no-label creates
the row, born ACTIVE, so a live row that then holds its keys arms that account at the next start
of a live daemon.
On a fresh box vike-cli secrets init creates the empty store; vike-cli secrets set --account <ID> <FIELD> adds one of an account's credentials (the value on stdin, never on the command line);
vike-cli secrets path prints which store answers; vike-cli secrets list shows which keys it
holds, account by account.
Nothing in this workspace deletes, moves or rewrites that database 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.
Where to put a bug, a question, or nothing at all
A bug or a wrong claim in these pages belongs in
issues. Issues are open and read. Say what you ran, what happened, what you expected, and the output of vike-cli --version.
A question about using it belongs in discussions.
What this repository cannot take is a pull request, and the reason is structural rather than a policy about contributors: this mirror is a SNAPSHOT — one commit per release, force-pushed, with no history — because a mirror that kept history would hand back every file an earlier release withheld. A branch here is replaced by the next publish. So a patch is welcome as an issue carrying the diff, and it lands upstream by hand.
What will not be answered: requests to run your strategy, judge whether an edge is real, or support a fork. The tests and the decision records in this tree are the argument for every claim it makes; start there.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.