Armada iconArmada text

Client Libraries

Overview

Armada provides official client libraries for multiple programming languages, making it easy to integrate Armada into your applications. These libraries wrap the Armada gRPC APIs and provide type-safe, idiomatic interfaces for your preferred language.

All client libraries support the core Armada features:

  • Submitting, canceling, and reprioritizing jobs
  • Watching for job events
  • Managing queues
  • Stream processing and real-time updates

Available Client Libraries

Python Client

The Python client is the most mature and feature-rich client library. It's available on PyPI and can be installed with:

pip install armada-client

Requirements

  • Python 3.9+ - Required Python version

Features

  • Full support for all Armada operations
  • Event streaming and job watching
  • Comprehensive documentation and examples
  • Type hints for better IDE support

Quick Start

import grpc
from armada_client.client import ArmadaClient
from armada_client.k8s.io.api.core.v1 import generated_pb2 as core_v1

# Create client
channel = grpc.insecure_channel("localhost:50051")
client = ArmadaClient(channel)

# Submit a job
job = client.submit_jobs(
    queue="my-queue",
    job_set_id="my-job-set",
    job_request_items=[job_request]
)

# Watch job events
for event in client.get_job_events_stream(queue="my-queue", job_set_id="my-job-set"):
    print(event)

Full Python Client Documentation Python Client Repository

.NET Client

The .NET client provides C# bindings for Armada. It supports .NET Standard 2.0 and can be built from source.

Package Information

  • Package ID: ArmadaProject.Io.Client
  • Target Framework: .NET Standard 2.0

Features

  • Full gRPC API coverage
  • Async/await support
  • Strong typing with Protocol Buffers

.NET Client Repository

Java Client

The Java client provides JVM-based applications with access to Armada functionality.

Requirements

  • Java 11 - Required Java version (required by Jenkins K8s plugin)
  • Maven 3.9.9 - Build tool

Features

  • Full gRPC support
  • Compatible with Java 11+
  • Works with JVM languages (Java, Kotlin, etc.)

Building

Build from the root of the Armada repository:

mage BuildJava

Java Client Repository

Scala Client

The Scala client is designed for Scala applications and is particularly useful for Spark integrations.

Features

  • Native Scala API
  • Spark integration support
  • Type-safe operations

Building

Build from the root of the Armada repository:

# First, prepare proto files
mage BootstrapProto

# Then build Scala client
cd client/scala/armada-scala-client
mvn package

Or build in isolation from the repository root:

mage buildScala

Scala Client Repository

Go Client

The Go client is part of the Armada codebase and is used internally by armadactl. It can be imported as a Go package.

Features

  • Native Go implementation
  • Used by armadactl CLI
  • Full API coverage

Usage

Import the client package in your Go code:

import "github.com/armadaproject/armada/pkg/client"

Go Client Package

API Documentation

For comprehensive API documentation across all clients:

Choosing a Client

  • Python: Best for data science, ML workflows, and scripting
  • .NET: Best for C# applications and .NET services
  • Java: Best for Java applications and enterprise services
  • Scala: Best for Scala applications and Spark workloads
  • Go: Best for Go applications and contributing to Armada tooling
Edit on GitHub

Last updated on