Skip to content

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.