vike
Getting started

Install on Linux

The release assets, the checksum, one project folder with everything in it, the first commands, and the systemd unit when you want the daemon to outlive your shell.

Linux gets the whole product as native binaries. Expect ten minutes for the headless set and a first backtest; add the desktop app if the box has a display.

Requirements

x86-64 with glibc 2.39 or newer — the assets are dynamically linked against the release runner's Ubuntu 24.04, and an older host fails at exec, not at install. The desktop build additionally wants a Vulkan-capable GPU, an X11 or Wayland session and a font from the candidate set. Requirements has the measured numbers.

Steps

1. Choose a project root

One directory on a disk with room, owned by the user that will run the binaries, holding bin/, settings/ (with state/ and state/logs/), user_data/ and market_data/. The root is a parameter, not a convention.

R=/srv/vike-trader
mkdir -p "$R/bin" "$R/settings/state/logs" "$R/market_data"

Not under $HOME if a system unit will run it

Every shipped unit sets ProtectHome=yes, which replaces /home with an empty directory inside the unit's namespace, and ReadWritePaths= does not rescue it. The daemon then starts with no settings and no credentials — No such file, not Permission denied — every venue silently on paper. Measured, twice.

2. Download and verify

From the release: vike-cli, vike-tradehub, backtest, vike-datahub, vike-recorder, vike-study, tearsheet, the desktop vike-desktop, and SHA256SUMS. The manifest is the upload list — an asset cannot be published without a checksum — so verify the lines for what you took:

cd "$R/bin"
grep -E ' (vike-cli|vike-tradehub|backtest|vike-datahub)$' SHA256SUMS | sha256sum -c
chmod +x vike-cli vike-tradehub backtest vike-datahub

Every Linux binary embeds its dependency SBOM (cargo auditable), and --version prints the commit it was built from through vike_buildinfo::version_line.

3. First commands

cd "$R"
bin/vike-cli --version
bin/vike-cli config check      # the verdict on settings/ and the credential store: exit 0 = nothing broken
bin/vike-cli init              # scaffold user_data/ with runnable examples, and print the map
bin/backtest --seed-demo       # the synthetic demo tape, under venue `demo`, into market_data/hist

vike-cli init writes only what is absent and never touches a file you edited. config check judges the four settings files and the store; an absent credential store is fine, because absent credentials are the live gate. Every binary resolves the project by walking up from the working directory, so run them from $R, or set VIKE_SETTINGS_DIR=$R/settings to name it outright.

4. The desktop app, if you want it

bin/vike-desktop

The binary carries no hard dependency on libX11 or libwayland-client; winit loads them at window creation, so a missing library surfaces as XNotSupported(LibraryOpenError) after the version line. Install a font it can find — /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf is the floor vike_app_core::fonts names — or the window controls render as empty boxes.

5. The daemon under systemd, when you want it unattended

The shipped unit deploy/vike-tradehub.service carries the placeholder root /srv/vike-tradehub; substitute yours, check nothing was missed, install it as a system unit with a User= line, and create settings/state first — under ProtectSystem=strict a missing ReadWritePaths= target fails the unit with status=226.

cp settings/tradehub.example.toml "$R/settings/tradehub.toml"   # the source tree's template; the image prints the same bytes with --template
sed "s,/srv/vike-tradehub,$R,g" deploy/vike-tradehub.service > /tmp/vike-tradehub.service
grep -n /srv/vike-tradehub /tmp/vike-tradehub.service            # must print NOTHING
sudo install -Dm644 /tmp/vike-tradehub.service /etc/systemd/system/vike-tradehub.service
sudo systemctl daemon-reload && sudo systemctl enable --now vike-tradehub

The unit runs ExecStartPre=<root>/bin/vike-cli config check, so vike-cli must sit beside the daemon or the unit fails with status=203/EXEC; it sets VIKE_LOG_FILE_LEVEL=warn and no VIKE_LOG_DIR, so the log lands inside the one write grant; and it points EnvironmentFile= at <root>/.env, never at the credential store. sudo systemctl stop is a graceful stop: SIGTERM raises the same flag the interactive shutdown word raises and the ordinary teardown runs, as long as TimeoutStopSec= stays above the profile's shutdown_deadline_ms.

Verify

bin/backtest --list                                  # the compiled strategy names
journalctl -u vike-tradehub | grep '"kind":"ready"'  # the daemon's ready banner, with its mode

The daemon logs the identity line first and its settings dir: line after it; with recording on, its store open logs tick store root resolved … rung=project — read rung=, because exe-dir means no project was found above the working directory.

Next steps

  • Quickstart: first backtest — the demo tape you just seeded, through the standalone runner or the data service.
  • Quickstart: first paper mount.
  • Dukascopy needs the release's jforex-bridge.jar at bin/jforex/jforex-bridge.jar and a JRE under bin/jre/; LightGBM needs both bin/lightgbm/lightgbm and its PROVENANCE file. Both are Release assets, published beside the binaries and covered by the same SHA256SUMS; a source checkout also ships a helper that stages and verifies them into exactly that layout. See Updating.

Troubleshooting

  • version 'GLIBC_2.39' not found at exec. The host's glibc is older than the runner's.
  • status=226 or 203/EXEC from systemd. settings/state is missing, or bin/vike-cli is.
  • Empty boxes instead of window controls. No font from the candidate set is installed.
  • rung=exe-dir in the daemon's store line. No project above the working directory; run from the root or set VIKE_SETTINGS_DIR. More under Troubleshooting.

On this page