Skip to content
MMX

Helm installation

Install MMX from its published OCI chart and GHCR images. No source checkout or image build is required.

Requirements

  • Kubernetes 1.29 or newer, Helm, and kubectl.
  • Three schedulable nodes and a default persistent-volume storage class.
  • At least 3 CPUs, 9 GiB of memory, and 45 GiB of persistent storage for the voters, plus capacity for gateways, consumers, and dependencies.
  • A CNI that enforces NetworkPolicy.

The default profile uses shared CPUs. Production operations covers capacity and the optional peak-throughput profile.

Install the exchange

Choose a released version and install its matching chart and images:

export MMX_VERSION=0.1.0-rc.1
helm upgrade --install mmx oci://ghcr.io/awesomepandapig/mmx/charts/mmx \
  --version "$MMX_VERSION" --namespace mmx --create-namespace \
  --wait --timeout 10m
helm test mmx --namespace mmx --logs

The initial release candidate is 0.1.0-rc.1; prereleases require an explicit version. See the release list for available versions.

The operator console is included. Markets and webhook settings start empty and survive upgrades.

Choose service exposure

kubectl get services --namespace mmx
ServicePortCallers
mmx-console8093Operators and native CLI
mmx-gateway8000Trusted game servers
mmx-websocket8080Market-data clients

Services default to ClusterIP. Choose your ingress, LoadBalancer, or NodePort configuration for your network. For example, a cluster with a load-balancer controller can expose the console with --set console.service.type=LoadBalancer. Inspect its assigned address with kubectl get service mmx-console --namespace mmx.

Terminate TLS at your ingress or proxy. Allow your game servers through networkPolicy.gameServers; this selects network callers, not player permissions. See Authentication.

Configure the native CLI

Install the CLI on Linux (amd64 or arm64) or macOS (Apple silicon):

curl -fsSLO "https://github.com/awesomepandapig/mmx/releases/download/v$MMX_VERSION/install.sh"
sh install.sh "$MMX_VERSION"
export PATH="$HOME/.local/bin:$PATH"

For manual installation, download the platform-specific mmx binary from the same release and put it on your PATH.

Set the reachable console and gateway addresses, then read the admin token using your Kubernetes operator credentials:

export MMX_URL=https://console.exchange.example
export MMX_GATEWAY_URLS=https://orders.exchange.example
kubectl get secret mmx-control --namespace mmx \
  -o jsonpath='{.data.MMX_ADMIN_TOKEN}' | base64 -d
# Set the decoded value in your operator environment.
export MMX_ADMIN_TOKEN='<decoded admin token>'
mmx health
mmx status

Sign in & credentials

To prevent initial credentials from being logged to container stdout (and indexed by log aggregators), provide a Kubernetes Secret holding the password:

kubectl create secret generic mmx-admin-password \
  --namespace mmx \
  --from-literal=password='<your-secure-password>'

Pass the secret when installing with Helm:

helm upgrade --install mmx oci://ghcr.io/awesomepandapig/mmx/charts/mmx \
  --version "$MMX_VERSION" --namespace mmx \
  --set console.adminPasswordSecret.name=mmx-admin-password \
  --set console.adminPasswordSecret.key=password

Option B: Automatic generation (Evaluation)

When console.adminPasswordSecret.name is left empty, MMX generates a temporary password on first boot and logs it once:

kubectl logs --namespace mmx \
  -l app.kubernetes.io/instance=mmx,app.kubernetes.io/component=console \
  --prefix=true --tail=200 | grep 'Console: first-run admin password:'

Open the console service on port 8093 and sign in.

Continue with Getting started.