Skip to content

Get Started

The shortest path from zero to a running worker.

1. Bootstrap a local environment

The platform ships a one-shot installer that brings up the three services plus Dapr plus a NATS broker on a single host (Docker required):

git clone https://git.haenerconsulting.com/virtufin/deploy-local
cd deploy-local
./install.sh

When the script finishes, the following are live on localhost:

Service gRPC REST Docs
virtufin-api :5002 :5001 api.docs.virtufin.com
WebSocketManager :5002 :5001 websocketmanager.docs.virtufin.com
WorkManager :25002 :25001 workmanager.docs.virtufin.com

2. Pick a client SDK

The API gateway exposes the same surface in every language. Pick the one that matches the consumer you're writing:

Language Repo Package
C# / .NET virtufin/virtufin-dotnet Virtufin.Api.Client
Python virtufin/virtufin-python virtufin-api
TypeScript virtufin/virtufin-ts virtufin-api
Rust virtufin/virtufin-rust virtufin-api
Scala virtufin/virtufin-scala virtufin-api
Dart virtufin/virtufin-dart virtufin_api
OCaml virtufin/virtufin-ocaml virtufin-api
WasmCloud virtufin/virtufin-wasmcloud virtufin-api

A REST / Swagger UI is also live at http://localhost:5001/swagger once install.sh finishes.

3. Subscribe to a market-data lane

The fastest "hello world" is to subscribe to a live exchange. From the C# client (other SDKs are equivalent):

using Virtufin.Api.Client;

var client = new ApiClient(new ApiClientOptions
{
    Host = "localhost",
    Port = 5002,
});

await foreach (var evt in client.Pubsub.SubscribeAsync(
    new SubscribeRequest { Topic = "act.exchange.binance.orderbook.update" }))
{
    Console.WriteLine($"ce-type={evt.CeType} subject={evt.Subject} data={evt.Data}");
}

The full RPC surface (Invoke, Pubsub.PublishEvent, Pubsub.Subscribe, State.*, Config.*) is on the API gateway sub-site.

4. Try a sample worker

The virtufin-workers repo ships working workers in every supported engine. The fastest end-to-end is the Binance orderbook echo worker:

git clone https://git.haenerconsulting.com/virtufin/virtufin-workers
cd virtufin-workers/WebSocketManagerController/examples
python binance.py

This will start a worker that subscribes to act.exchange.binance.orderbook.update, logs every tick, and echoes a count event on sc.LIVE.worker.echo so you can see end-to-end the WorkManager → API gateway → state path.

To write your own worker, see the Worker DevKit page for the wire protocol and the Engine System page for which engine to use.

5. Read the spec

For anything that needs to be precise (topic naming, scenario registry semantics, state-key prefixes, worker wire contract), the spec is the answer: