Repositories
ArmoniK is spread across multiple repositories:
Repository |
What lives there |
|---|---|
Deployment configuration (this repo) — top-level Terraform configurations that wire together modules from ArmoniK.Infra |
|
Control Plane, Polling Agent, Metrics Exporter, and storage adapters |
|
gRPC API definitions and generated clients (C#, C++, Python, Rust, Java, JS) |
|
Reusable Terraform modules for all supported backends and cloud providers |
|
High-level C# SDK |
|
C++ SDK |
|
Java SDK |
|
Python client library |
|
Example applications in all supported languages |
|
Web admin dashboard |
|
Command-line tool for managing a deployment |
Dependencies between repositories
graph TD
API["ArmoniK.Api<br/>gRPC definitions & generated clients"]
Core["ArmoniK.Core<br/>Control Plane · Polling Agent<br/>Metrics Exporter · Storage adapters"]
GUI["ArmoniK.Admin.GUI<br/>Web dashboard"]
CLI["ArmoniK.CLI<br/>Command-line tool"]
SDKs["SDKs<br/>Extensions.Csharp · Extensions.Cpp<br/>Extensions.Java · PymoniK"]
Samples["ArmoniK.Samples<br/>Example applications"]
Infra["ArmoniK.Infra<br/>Terraform modules"]
Deploy["ArmoniK<br/>Deployment & configuration"]
API -->|gRPC definitions| Core
API -->|gRPC client| GUI
API -->|gRPC client| CLI
API -->|gRPC client| SDKs
SDKs -->|client libraries| Samples
SDKs -->|worker images| Deploy
Infra -->|Terraform modules| Deploy
Core -->|service & worker images| Deploy
GUI -->|web app image| Deploy
Deploy -->|required to execute| Samples
style API fill:#ff5a00,color:#ffffff,stroke:#ff5a00
style Deploy fill:#2d6a9f,color:#ffffff,stroke:#2d6a9f
style Infra fill:#2d6a9f,color:#ffffff,stroke:#2d6a9f
Note
ArmoniK.Samples can be built using only the SDK repositories. A running ArmoniK deployment is only required to execute the samples, not to compile or package them.
Note
The SDK repositories serve two distinct roles that the graph shows as separate arrows: they provide client libraries used in application code (→ Samples) and worker Docker images deployed in the compute plane (→ ArmoniK). Not every SDK ships a worker image — currently Extensions.Csharp (armonik-dynamic-dotnet-worker) and PymoniK (harmonic_snake) do; Extensions.Cpp and Extensions.Java do not.
Note
ArmoniK.Api is the root dependency for all components except ArmoniK.Infra. A breaking change to the protobuf definitions cascades down to Core, every SDK, the GUI, and the CLI simultaneously. When working on Api, plan coordinated updates across all dependents before merging.
Note
ArmoniK.Core ships two distinct kinds of images. The control-plane services (Control Plane, Polling Agent, Metrics Exporter) are always deployed. In addition, Core also contains test worker images (stream, htcmock, bench) that run as compute-plane workers in dedicated partitions — these are integration-test fixtures, not user-facing components. Both kinds are covered by the service & worker images arrow in the graph.
Note
You can deploy a custom worker in its own partition without modifying any of these repositories. A worker only needs to implement the worker-side gRPC protocol defined in ArmoniK.Api; the ArmoniK repo configures which Docker image to use per partition.
For most development work you need at minimum the main ArmoniK repo (for deploying the stack) and the repo containing the component you are working on. See Local Development Setup for getting started.