Requirements¶
What you need¶
| Requirement | Notes | |
|---|---|---|
| Container runtime | Docker 24+ or any OCI runtime (Kubernetes, Cloud Run, ECS, …) | Images are multi-arch: linux/amd64 and linux/arm64. |
| PostgreSQL | 17 recommended (the version used in development and CI). Technical minimum 13. | No extensions required. See Database. |
| Registry access | A Quay token for quay.io/axiumlab |
One token works for core and ui. |
| License | Your Axium license key (40 hexadecimal characters) | See License. |
| Outbound network | HTTPS to your LLM providers, and to meta.axium-lab.com for license checks and telemetry |
Telemetry can be disabled; see Environment variables. |
| TLS termination | A reverse proxy or load balancer in front of the core and the ui | Axium does not terminate TLS. See Reverse proxy & TLS. |
Nothing else: no Node.js, no Redis, no object storage, no message queue. The core image embeds its own runtime (Bun) and runs as a non-root user.
Sizing¶
The core is stateless and light. What drives memory is request size, not request count:
- Every file upload is held entirely in RAM for the duration of the
request, up to
MAX_UPLOAD_SIZE(default 50 MB). - Every streamed response is kept in memory until it finishes, so usage and cost can be read at the end.
- The observability buffer holds up to 10,000 traces per process.
- JSON bodies are capped at 10 MB.
Starting points that work:
| Workload | Core | Ui | PostgreSQL |
|---|---|---|---|
| Evaluation, a handful of developers | 512 MiB · 0.5 vCPU | 256 MiB | smallest tier (the GCP installer uses db-f1-micro, 10 GB) |
| Production, chat traffic | 1 GiB · 1 vCPU per replica, concurrency ≈ 20 | 512 MiB | 2 vCPU · 4 GB · SSD, automated backups |
| Production with large uploads | 2 GiB+ per replica, or lower MAX_UPLOAD_SIZE |
512 MiB | as above |
Scale the core horizontally rather than vertically; see Scaling & sizing.
Ports¶
| Component | Port | Protocol |
|---|---|---|
| core | 3000 (configurable with PORT) |
HTTP. Everything is under /v1/. |
| ui | 3001 |
HTTP. Static files. |
| PostgreSQL | 5432 |
Reached only by the core. |
Database permissions¶
The core installs and migrates its own schema. The database user needs to be
able to CREATE SCHEMA and create tables, types, functions and triggers in the
database. It creates the schemas core, llm, rm and stats, plus
telemetry if the PostgreSQL observability destination is enabled.
Time zone¶
Daily statistics and budget windows are computed with the PostgreSQL server's
time zone (CURRENT_DATE, date_trunc(..., now())). Set the database to the
time zone you want your "days" and "months" to follow, typically UTC.