📖 Documentation: workmanager.doc.virtufin.com
Worker lifecycle management and code execution service with Dapr integration.
virtufin-workmanager/
├── src/
│ ├── Virtufin.WorkManager/ # .NET service (gRPC server, worker engine)
│ ├── Virtufin.WorkManager.Client/ # .NET client NuGet package
│ ├── Virtufin.WorkManager.Protos/ # Protobuf definitions (workmanager.proto)
│ ├── Virtufin.Worker.DevKit/ # Worker base classes (WorkerBase, CommandWorker)
│ ├── Virtufin.WorkManager.Engines/ # Engine registry
│ ├── Virtufin.WorkManager.Engine.*/ # Engine implementations (Python, CSharpSource, DotNetDll, NativeDll)
│ ├── python/virtufin/workmanager/ # Python client library
│ └── typescript/src/ # TypeScript client library
├── tests/
│ ├── python/ # Python client tests
│ ├── typescript/ # TypeScript client tests
│ └── Virtufin.WorkManager.*.Tests/ # .NET tests
├── docs/ # MkDocs documentation
├── deploy/ # Deployment configs
├── versions.env # Version pin
└── AGENTS.md # Agent documentation
All deployment infrastructure is managed in dedicated repositories.
Run services natively with Dapr sidecars. No Docker containers for services. Requires Dapr CLI, .NET SDK, and Redis.
git clone https://git.haenerconsulting.com/virtufin/deploy-local.git
cd deploy-local
./scripts/deploy_workmanager.sh
See deploy-local for full documentation.
Build and run from source via Docker Compose.
git clone https://git.haenerconsulting.com/virtufin/docker-compose.git
cd docker-compose
./scripts/deploy_workmanager.dev.sh
Run pre-built Harbor images via Docker Compose.
git clone https://git.haenerconsulting.com/virtufin/docker-compose.git
cd docker-compose
./scripts/deploy_workmanager.prod.sh
See docker-compose for full documentation.
Deploy with the Virtufin Helm chart. Requires Dapr installed on the cluster.
helm repo add virtufin https://helm.haenerconsulting.com/virtufin/helm
helm install virtufin virtufin/virtufin \
--namespace virtufin \
--create-namespace \
--set stateStore.host=<redis-host> \
--set pubsub.host=<redis-host>
See helm for all configurable values.
WorkManager scales horizontally across different topics, not across the same topic. Multiple WorkManager replicas deployed against the same Dapr pubsub component will compete for messages on each topic, not share load — a message won by replica A is dropped at replica B (no re-routing). For throughput scaling, run multiple workers on different topics on the same replica, or optimize the worker code to handle higher per-message rates. See the Worker Manager Horizontal Scalability spec for the full design rationale.
| Protocol | Port | Description |
|---|---|---|
| HTTP | 25001 | Health checks, management |
| gRPC | 25002 | Worker lifecycle operations |
dotnet build
dotnet test
Proprietary - Virtufin