# Core Documentation
## What is ArmoniK.Core ?
This project is part of the [ArmoniK](https://github.com/aneoconsulting/ArmoniK) project. ArmoniK.Core is responsible for the implementation of the services needed for ArmoniK which are defined in [ArmoniK.Api](https://github.com/aneoconsulting/ArmoniK.Api).
ArmoniK.Core provides services for submitting computational tasks, keeping track of the status of the tasks and retrieving the results of the computations. The tasks are processed by external workers which interfaces are also defined in ArmoniK.Api. ArmoniK.Core sends tasks to the workers, manages eventual errors during the execution of the task and and stores the results of the tasks.
More detailed information on the inner working of ArmoniK.Core is available [here](https://aneoconsulting.github.io/ArmoniK.Core/)
## Development Setup
ArmoniK Core can be setup only on Linux machines. For windows users, it is possible to do it on [WSL2](https://learn.microsoft.com/en-us/windows/wsl/about).
### Prerequisites
- [Terraform](https://www.terraform.io/) version >= 1.4.2
- [Just](https://github.com/casey/just) >= 1.8.0
- [Dotnet](https://dotnet.microsoft.com/en-us/) >= 6.0
- [Docker](https://www.docker.com/) >= 20.10.16
- [GitHub CLI](https://cli.github.com/) >= 2.23.0
### Local deployment
To deploy Armonik Core locally, you need first to clone the repository [ArmoniK.Core](https://github.com/aneoconsulting/armonik.core). Then, to see all the available recipes for deployment, place yourself at the root of the repository ArmoniK.Core where the justfile is located, and type on your command line:
```
just
```
More about local deployment, see [Local Deployment of ArmoniK Core](https://hackmd.io/QNtD2vdJQHCDzDB0YFDsYw).
### Tests
There are a number of tests that help to verify the successful setup of ArmoniK.Core. Some of them depend of ArmoniK Core deployment, others do not.
More about tests, see [Tests of ArmoniK Core](https://hackmd.io/3cHeKypeQA2J11f3dNbgFQ).