---
## What is Armada?
Kubernetes was built for services. Armada was built for batch.
When your job volume exceeds what a single cluster can handle, you need a control plane that sits above your fleet — routing jobs intelligently, fairly, and at scale. Armada is that layer.
**Armada solves the problems Kubernetes wasn't designed to handle:**
- **No job queue** — Kubernetes has no concept of ordering. Jobs compete for resources with no fairness guarantees. Armada adds a proper queue with priority, fair-share, and rate limiting.
- **No multi-cluster coordination** — Each Kubernetes cluster is an island. Armada routes jobs across as many clusters as you need from a single API.
- **Fine grained gang-scheduling** — Distributed jobs that need all workers to start together (MPI, PyTorch, Spark) are either fully scheduled or held in queue. Armada's implementation is battle-tested at scale with deep fairness and preemption integration.
- **No fairness across teams** — One team can starve everyone else. Armada enforces fair-share scheduling so heavy users don't permanently dominate shared infrastructure.
Armada is used in production at [G-Research](https://www.gresearch.co.uk/) since 2020, processing **millions of batch jobs per day** across tens of thousands of nodes.
---
## Features
| Feature | Description |
|---|---|
| 🌐 **Multi-cluster scheduling** | One API across unlimited Kubernetes clusters |
| ⚖️ **Fair-share queuing** | Dominant resource fairness across teams and queues |
| 🔗 **Gang scheduling** | Atomic startup for distributed workloads |
| ⚡ **Preemption** | Urgent jobs bump lower-priority work automatically |
| 📊 **Prometheus metrics** | Full observability into queue health and cluster utilisation |
| 🔭 **Lookout UI** | Web interface for monitoring jobs, queues, and clusters |
| 🔒 **Enterprise-ready** | Secure, highly available, OIDC authentication support |
---
## Getting started
The fastest way to get Armada running locally is with the [Armada Operator](https://github.com/armadaproject/armada-operator):
```bash
git clone https://github.com/armadaproject/armada-operator.git
cd armada-operator
make kind-all
```
→ **[Full quickstart guide](https://armadaproject.io/getting-started)** — get up and running in an instant!
### armadactl
`armadactl` is installed automatically when you run `make kind-all`. To install it standalone or on a machine without the full Armada setup:
```bash
# download via script
scripts/get-armadactl.sh
# or grab the binary from the release page
https://github.com/armadaproject/armada/releases/latest
```
---
## Local development
Armada runs locally via [Goreman](https://github.com/mattn/goreman) — dependencies (Redis, Postgres, Pulsar) run in containers, Armada components run as host processes built from source. Iteration is fast and debuggers attach directly.
```bash
mage kind # one-time: create local Kubernetes cluster
export KUBECONFIG=.kube/external/config
mage dev:up # default — no auth
mage dev:up auth # with OIDC via Keycloak
mage dev:up fake-executor # no Kubernetes cluster needed
mage dev:down # stop dependency containers
```
→ **[Full local development guide](https://armadaproject.io/docs/developer-guide)** — profiles, procfiles, service ports, authentication, and debugging.
---
## Use cases
Armada is used wherever batch jobs are too large, too many, or too complex for a single Kubernetes cluster:
- **Quantitative finance & HPC** — millions of short-lived simulations per day with fair-share across research teams
- **ML and AI training** — distributed GPU training with gang scheduling across clusters
- **Platform engineering** — multi-tenant batch infrastructure with a single API surface
- **SLURM migration** — familiar scheduling semantics (queues, priorities, preemption) on Kubernetes-native infrastructure
- **CI/CD at scale** — priority control so critical merges always run first
---
## In production
Armada has been running in production at [G-Research](https://www.gresearch.co.uk/) since 2020.
**Running Armada in production?** Open a PR to add yourself to [ADOPTERS.md](./ADOPTERS.md) 🙌
---
## Community
Everyone is welcome — come and say hi! 👋
- 💬 **Slack** — [#armada on CNCF Slack](https://cloud-native.slack.com/archives/C03T9CBCEMC) — fastest way to get help and talk to maintainers
- 💡 **GitHub Discussions** — [longer-form questions and ideas](https://github.com/armadaproject/armada/discussions)
- 🐛 **GitHub Issues** — [bug reports and feature requests](https://github.com/armadaproject/armada/issues)
- 📅 **Community meetings** — bi-weekly, open to all. Join [#armada on Slack](https://cloud-native.slack.com/archives/C03T9CBCEMC) for the invite link
- ⭐ **Star the repo** — helps more people find Armada
---
## Contributing
We'd love your contributions — code, docs, bug reports, or ideas. All are welcome.
- Read [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines
- Check [good first issues](https://github.com/armadaproject/armada/labels/good%20first%20issue) for a starting point
- All commits require a [DCO sign-off](https://developercertificate.org/): `git commit -s`
- Please review [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) before contributing
---
## Documentation
| Resource | Link |
|---|---|
| Website & overview | [armadaproject.io](https://armadaproject.io) |
| Quickstart | [armadaproject.io/getting-started](https://armadaproject.io/getting-started) |
| Architecture | [armadaproject.io/docs/architecture](https://armadaproject.io/docs/architecture) |
| API reference | [armadaproject.io/docs/api](https://armadaproject.io/docs/api) |
| Developer guide | [armadaproject.io/docs/developer-guide](https://armadaproject.io/docs/developer-guide) |
| Release notes | [github.com/armadaproject/armada/releases](https://github.com/armadaproject/armada/releases) |
---
## Talks and videos
- [Armada — high-throughput batch scheduling](https://www.youtube.com/watch?v=FT8pXYciD9A)
- [Building Armada — Running Batch Jobs at Massive Scale on Kubernetes](https://www.youtube.com/watch?v=B3WPxw3OUl4)
---