Quickstart

TL;DR

Create a project, replace the scaffold with a bar-subscribing strategy, and run it. You’ll have a working C++23 application printing BTC/USDT one-minute bar closes in under five minutes.

Create the project

aurum create signal-watch
cd signal-watch

The scaffold contains CMakeLists.txt, main.cpp, and config.hpp. Replace main.cpp with:

#include <aurum/sdk.hpp>
#include <aurum/venue/okx.hpp>

using namespace aurum;

class SignalWatch final : public sdk::Application {
public:
  SignalWatch() : sdk::Application({.mode = sdk::RuntimeMode::LIVE}) {
    bind<Datafeed>(venue::okx::Bar("BTCUSDT", "1m"));

    on(TOPIC<"bar://okx/BTCUSDT@1m">,
       [](const Tick<schema::BarRow>& tick) {
      if (tick.payload.close_timestamp == 0) return;
      log::info("BTCUSDT close={}", tick.payload.close.to_string());
    });
  }
};

AURUM_EXPORT(SignalWatch)

Run it

aurum run .

aurum run resolves the installed SDK, compiles the project when necessary, and starts it in the foreground. Press Ctrl-C to stop.

Tip

If you don’t see bar output immediately, the current one-minute interval may not have closed yet. Bars fire on every update (open, high, low, close) but the close price is only confirmed when close_timestamp != 0. Wait up to 60 seconds for the first confirmed bar.

Check the project contract

The generated CMakeLists.txt declares a literal name and version through aurum_project. Forge uses both values as deployment identity:

aurum_project(
  NAME signal-watch
  VERSION 0.0.1
)

Increment VERSION before pushing a replacement release. Forge rejects an existing name@version instead of overwriting it.

Note

This is the same aurum_project declaration used in production deployments. The project contract you create in the quickstart is the same contract Forge reads when you push to a server. There is no “development mode” with different rules.

Common first-time errors

``aurum`` command not found.

The CLI is not on your PATH. Verify with command -v aurum. The default install prefix is ~/.local, so add ~/.local/bin to your PATH or use the full path.

CMake cannot find the Aurum package.

The SDK is not installed or CMAKE_PREFIX_PATH does not point to the Aurum installation. Use aurum run . from the project directory — it resolves the SDK automatically.

No bar output after 60+ seconds.

Check that your network can reach the OKX WebSocket. Run with --log debug to see connection diagnostics. If you are behind a proxy, configure AURUM_ENABLE_PROXY and AURUM_HTTP_PROXY in aurum.toml.

Next steps