Repositories

ArmoniK is spread across multiple repositories:

Repository

What lives there

ArmoniK

Deployment configuration (this repo) — top-level Terraform configurations that wire together modules from ArmoniK.Infra

ArmoniK.Core

Control Plane, Polling Agent, Metrics Exporter, and storage adapters

ArmoniK.Api

gRPC API definitions and generated clients (C#, C++, Python, Rust, Java, JS)

ArmoniK.Infra

Reusable Terraform modules for all supported backends and cloud providers

ArmoniK.Extensions.Csharp

High-level C# SDK

ArmoniK.Extensions.Cpp

C++ SDK

ArmoniK.Extensions.Java

Java SDK

PymoniK

Python client library

ArmoniK.Samples

Example applications in all supported languages

ArmoniK.Admin.GUI

Web admin dashboard

ArmoniK.CLI

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.