- API Layer – FastAPI + Celery + Redis connection (HTTP endpoints, task orchestration, webhooks).
- Engine Layer – Ray cluster + Ray Serve (extractors, inference, clustering, taxonomy runs).
Local Development
./start.sh scripts spin up a full stack with Docker Compose:
mongodb– metadata (mongodb://localhost:27017)mvs– vector storage (MVS)redis– task queue/cache (redis://localhost:6379)localstack– S3 emulator (http://localhost:4566)
curl http://localhost:8000/v1/health to confirm readiness, then follow the Quickstart.
Production Topology (Kubernetes)
- API nodes – general purpose (e.g.,
t3.xlarge), scale FastAPI/Celery horizontally. - CPU workers – compute-optimized (e.g.,
c5.4xlarge) for text extraction, clustering. - GPU workers – GPU instances (e.g.,
p3.2xlarge) for embeddings, rerankers, video processing.
Ray on Kubernetes (KubeRay)
This page describes Mixpeek operating a Ray cluster it deploys. If you already
run Ray or KubeRay and want Mixpeek to use yours instead, see
Bring Your Own Ray — it covers the three contracts, every
permission we ask for, and what we check before
deploying anything.
minReplicas and maxReplicas, and Ray’s autoscaler moves within
that range on pending-task pressure.
The API layer reaches the cluster over ENGINE_API_URL, a plain in-cluster HTTP address
such as http://mixpeek-engine-svc-head-svc.mixpeek-engine:8265.
Namespace-scoped or cluster-wide
Two different scopes, and only one of them is per-deployment:
So a second Mixpeek deployment on the same cluster means a second namespace with its own
RayService, not a second operator. The operator needs cluster-level permission to create
pods and services in the namespaces it watches, which is the one privilege you cannot
scope away.
Isolate deployments by namespace, one per tenant, with a
LimitRange and a
NetworkPolicy on each. Separate node pools with taints keep GPU work off shared
capacity, since namespaces alone do not partition nodes.
Core Environment Variables
Secrets should be injected via Kubernetes secrets, environment managers, or cloud secret stores.
Health & Verification
- Endpoint:
GET /v1/health– checks Redis, MongoDB, MVS, Celery, Engine, ClickHouse (if enabled). - Smoke test: create namespace → bucket → collection → upload object → submit batch → execute retriever.
- Tasks: ensure Celery workers process webhook events, cache invalidations, and maintenance tasks.
Scaling Guidelines
Monitor Ray dashboard (port 8265) for job status, resource utilization, and Serve deployments.
Deployment Checklist
- Provision MongoDB, MVS, Redis, and S3/GCS buckets (with IAM roles).
- Deploy Ray cluster (head + workers) and confirm job submission works.
- Deploy FastAPI + Celery services; configure environment variables to point to Ray + data stores.
- Configure ingress/HTTPS, secrets, and network policies.
- Run health checks and quickstart workflow to verify end-to-end functionality.
- Set up observability (logs, metrics, webhooks) and configure backups for MongoDB.
References
- Architecture – full system design
- Observability – metrics, logs, dashboards
- Security – tenancy, auth, secret management
- Webhooks – event processing pipeline

