Skip to main content
Your agent traces stay in your network. Moyai packages its whole backend as one Ankra stack profile, shares it with your organisation, and you apply it to a cluster you already run. Ankra deploys it, keeps it reconciled, and rolls out every new version Moyai publishes. There is no Helm chart to assemble and no runbook to follow. The profile pins every component, orders them, and asks you only for what is yours: your secrets, your sizes and where the LLM lives.
The vendor shares the moyai-observatory stack profile with your Ankra organisation. You apply it with a dry run, bind the secrets and deploy, and Ankra runs it on Proxmox VE, HPE Morpheus, an imported cluster or any cloud. On the cluster your AI agents send traces to the easterisland API, which uses Postgres with three CloudNativePG instances, SeaweedFS S3 for uploads and the Iceberg trace lake, a Lakekeeper Iceberg REST catalog and an OpenAI-compatible LLM. A lean Prometheus scrapes every component.

One shared profile puts the whole backend on your cluster


What runs

Everything lands in one Stack, moyai-observatory, in the order each part needs. The API is internal to the cluster unless you publish it on a host of your own.

What you need

  • An Ankra organisation that Moyai has shared the moyai-observatory profile with. Send Moyai your organisation slug (under organisation settings); they grant the share, and the profile appears in your catalogue. See Share with specific organisations.
  • A cluster in that organisation, wherever you run Kubernetes:
    • On-prem: Proxmox VE or HPE Morpheus (closed beta), which Ankra builds for you.
    • A cluster you already run: import it with one command.
    • Any cloud Ankra supports.
  • About 4 vCPU and 8 GiB of memory free, and a StorageClass. For three Postgres instances, use three nodes so each replica lands on its own.
  • The pull credentials and the WorkOS client ID Moyai issues you.
  • The Ankra CLI, or the portal: every step below is also Stack Profiles > moyai-observatory > Use Profile.

Install

1

See what the profile asks for

The dry run creates nothing. It prints every input with the value it would deploy with and where that value came from: your --set, a choice, or the default. Five inputs are secrets with no default, and the dry run lists them as unset until you bind them.
2

Write the secrets to files

Secrets are bound from files, so they never reach your shell history. You choose the S3 keys and the catalog key yourself:
REGISTRY, PULL_USER and PULL_TOKEN are the pull credentials Moyai gave you. Keep this directory: upgrades bind the same files.
3

Apply, review, deploy

Without --deploy this creates a reviewable Stack draft on the cluster. Read it in the Stack builder, then deploy it there, or run the same command again with --deploy. The secrets are sealed with SOPS before they reach the cluster’s GitOps repository.Add --set for anything you want to change from the default:
ankra stack-profiles apply takes --cluster more than once, so the same command installs the backend on several clusters at a time.

Choose the LLM

The analysis pipeline calls one OpenAI-compatible endpoint. Pick where it lives with llm_mode; the choice sets the model, the endpoint and whether the demo model runs.
The default. llama.cpp serves Qwen2.5 0.5B on CPU inside the Stack, with about 1 GiB of memory. It needs no GPU and no key, and it is right for evaluation, not for production analysis.

Verify

All pods are Running and ready (the create-buckets and create-warehouse jobs Completed), the four health checks answer healthy, and every Prometheus target returns 1: the API database, SeaweedFS, the catalog and, when it runs, the demo LLM. Then upload one trace end to end. With a WorkOS token in the X-Moyai-Authorization: Bearer <token> header, the API under /internal/v1/uploads takes four calls: create the upload record (POST), ask for a presigned URL (POST /{upload-id}/presigned-url), PUT the JSONL file to that URL, and start processing (POST /{upload-id}/process). GET /internal/v1/uploads/{upload-id} then reports its progress until the incident report is ready.
The presigned URL points at the in-cluster S3 service, so run the upload from inside the cluster or from a network that reaches it.

Upgrades

Moyai publishes new versions of the profile; you choose when each cluster takes one. A rollout replaces the Stack’s contents in place, so Kubernetes rolls the workloads and the data stays where it is.
Your non-secret inputs carry forward; pass the same secret files again. Never apply the profile a second time to upgrade: that creates a second Stack beside the first. Protect the Stack into a backup vault before the first upgrade, so a restore point exists if a version misbehaves.

Air-gapped clusters

The profile reaches the internet for three things: container images, the embedding model the API loads at startup, and the weights of the demo LLM. Each has a local replacement.
  • Images. Mirror the images into your registry and configure it as a registry mirror on the nodes. Set image to your mirrored easterisland reference and bind your registry’s pull secret in pull-secret.json.
  • Model weights. Mirror minishlab/potion-base-32M and Qwen/Qwen2.5-0.5B-Instruct-GGUF into a Hugging Face-compatible mirror inside your network and set model_mirror_url to it. With an external LLM, only the embedding model is needed.
  • Helm charts. Add internal mirrors of the CloudNativePG and prometheus-community charts as Helm registries.
  • Certificates. Keep the API internal, or publish it with cluster_issuer set to the cert-manager issuer for your internal CA instead of Let’s Encrypt.

Troubleshooting

The pull secret cannot pull image. Check the registry host and credentials in pull-secret.json, then bind it again with rollout and --set-file.
The cluster has no default StorageClass. Set storage_class to one that exists.
workos_client_id is empty. Set it to the client ID Moyai gave you.
It cannot reach model_mirror_url. Allow egress to Hugging Face, or point it at your mirror.

Next steps

Stack profiles

Versions, choices, sharing and fleet rollouts.

Proxmox VE clusters

Build the cluster on your own hardware.

Backups and restore points

Protect the trace lake and the databases.

Build a Monitoring Stack

Add Grafana, Alertmanager and logs on top of the bundled Prometheus.