# 2.2 Dependancies

JSONAir is intentionally designed to have a minimal footprint. There are two categories of dependencies: **runtime** (what the server and agent need to operate) and **build-time** (what you need to compile JSONAir from source).

***

## Runtime Dependencies

### Database

JSONAir requires a MySQL-compatible database to store API keys and configuration data.

| Engine                           | Minimum Version     |
| -------------------------------- | ------------------- |
| MySQL                            | 5.7 or later        |
| MariaDB                          | 10.4 or later       |
| Amazon Aurora (MySQL-compatible) | Any current version |

The database must be reachable by the JSONAir server over TCP. TLS connections to the database are supported and recommended for production deployments (controlled via the `MYSQL_TLS` environment variable).

### Operating System

JSONAir runs on any operating system supported by Go. It has been tested on Linux (the primary target) and macOS. Windows is not a tested or supported deployment target.

***

## Build-Time Dependencies

### Go

JSONAir is written in Go. To compile from source you need:

| Requirement  | Version         |
| ------------ | --------------- |
| Go toolchain | 1.26.2 or later |

Download the Go toolchain at <https://go.dev/dl/>.

### Third-Party Go Packages

The following packages are pulled automatically by `go mod download` and do not need to be installed manually. They are listed here for transparency and security review purposes.

| Package                          | Version | Purpose                                         |
| -------------------------------- | ------- | ----------------------------------------------- |
| `github.com/gin-gonic/gin`       | v1.12.0 | HTTP router and middleware framework            |
| `github.com/go-sql-driver/mysql` | v1.9.3  | MySQL/MariaDB database driver                   |
| `github.com/golang-jwt/jwt/v5`   | v5.3.1  | JWT generation and validation                   |
| `github.com/joho/godotenv`       | v1.5.1  | `.env` file loading for local development       |
| `github.com/tidwall/gjson`       | v1.18.0 | Fast JSON field extraction (request parsing)    |
| `github.com/tidwall/sjson`       | v1.2.5  | Fast JSON field setting (response building)     |
| `github.com/fatih/color`         | v1.19.0 | Colorized log output                            |
| `golang.org/x/time`              | v0.15.0 | Token-bucket rate limiter for the auth endpoint |

All transitive (indirect) dependencies are pinned in `go.sum` and verified at build time.

***

## No External Runtime Libraries

JSONAir compiles to a single static binary. There are no shared libraries, no runtime interpreters, and no package managers required on the server or agent host. Deploying JSONAir is as simple as copying the binary.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.k9.io/key9-identity/jsonair/2-install/2.2-dependancies.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
