FAQ

General

What is ArmoniK?

ArmoniK is an open-source distributed task scheduler built on Kubernetes. It lets you submit large numbers of computational tasks from a client application, execute them across a pool of workers, and retrieve results — with built-in autoscaling, fault tolerance, and support for multiple cloud providers. See What is ArmoniK for an overview.

What languages can I use to write a worker or a client?

ArmoniK provides SDKs for C#, C++, Java, and Python (PymoniK). The worker and client can be written in different languages.

Can I run ArmoniK on my laptop?

Yes. The quick-start guide walks through a local deployment using Docker Desktop or a similar Kubernetes backend.


Installation

What are the prerequisites?

See the prerequisites page for the full list of required tools and versions.

My local certificates expired and the deployment is broken. What do I do?

Local TLS certificates are valid for 7 days by default. Destroy and redeploy:

terraform destroy
terraform apply

To avoid this, set validity_period_hours = 8760 (one year) in your parameters.tfvars before deploying.

Can I add or change partitions without a full redeployment?

No. Partitions are static and must be defined before deployment. Changing partitions requires updating parameters.tfvars and redeploying. See How to configure partitions.


Tasks and workers

Tasks are submitted but nothing is processed. What should I check?

  1. Verify the partition name in your client matches a deployed partition.

  2. Check that worker pods are running: kubectl -n armonik get po.

  3. Check the logs for errors (Seq locally, CloudWatch or Cloud Logging on cloud deployments).

  4. Set the retry count to 1 in your task options to surface errors immediately.

See Troubleshooting for more detail.

Can tasks communicate with each other?

No. Task-to-task communication is not supported. Tasks can depend on each other through data dependencies (the output of one task becomes the input of another), but they cannot exchange messages directly while running.

How long should a task be?

The recommended range is 100 milliseconds to 10 minutes. Tasks shorter than 100 ms incur disproportionate scheduling overhead. Tasks longer than 10 minutes increase the risk of losing work on preemptible instances. Tasks longer than one hour must be split into smaller sub-tasks. See Golden Rules.

Can a worker maintain state between tasks?

A worker can hold in-memory state, but you cannot rely on it being available. Workers can be replaced or restarted at any time. Tasks must be designed to reconstruct any state they need from their inputs.


Operations

How does autoscaling work?

KEDA reads task-count metrics from the Metrics Exporter via Prometheus and drives the Kubernetes HPA to scale worker pods up or down per partition. See Scaling & performance.

Do I need to back up the queue?

No. The queue holds in-flight tasks only. Lost tasks will surface as errors on the client side and can be resubmitted. Back up MongoDB and object storage instead. See Backup & restore.

Where can I monitor task statuses?

Use the Admin GUI for a visual overview, or query the ArmoniK API directly. Grafana dashboards fed by Prometheus are available for deeper metrics. See Monitoring.