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: