Skip to main content

Production-ready experiment tracker

Project description

Matyan Backend

REST API and workers for the Matyan experiment-tracking stack (fork of Aim). Serves reads and control operations from FoundationDB; consumes ingestion and control events from Kafka; uses S3 for artifact blobs. The UI talks to this API; training clients send data via the frontier, which publishes to Kafka consumed by these workers.

Layout

  • src/matyan_backend/ — Python package: FastAPI app (app.py), API routes under api/ (runs, experiments, tags, projects, dashboards, reports, streaming), storage/ (FDB + S3), workers/ (ingestion + control Kafka consumers), jobs/ (FDB lock, used by CLI cleanup commands), backup/ (export/restore), CLI in cli.py.
  • Entrypoints: matyan-backend start (API server, default port 53800), matyan-backend ingest-worker, matyan-backend control-worker; plus one-off CLI commands (reindex, backup, restore, finish-stale, cleanup-orphan-s3, cleanup-tombstones, convert tensorboard).

Prerequisites

  • Python 3.12+. The package uses uv in the repo: uv run matyan-backend or install then matyan-backend CLI.
  • Runtime dependencies: FoundationDB (cluster file), Kafka (for workers), S3-compatible store (MinIO/RustFS in dev, AWS S3 in prod). For local dev, typically run FDB + Kafka + S3 via docker-compose.

Run

  • API server: uv run matyan-backend start (or matyan-backend start). Options: --host, --port (defaults: 0.0.0.0, 53800). API is under /api/v1; health at /health/ready/, /health/live/, metrics at /metrics/ when enabled.
  • Workers: uv run matyan-backend ingest-worker and uv run matyan-backend control-worker. Both require Kafka and FDB; ingestion worker also writes to FDB and reads S3 config for blob references.
  • CLI (one-off): reindex (rebuild indexes), backup / restore, finish-stale, cleanup-orphan-s3, cleanup-tombstones. Cleanup commands are intended for CronJobs or cron; use --dry-run to preview and --lock-ttl-seconds for FDB-based single-run locking. Optional: convert tensorboard to convert TensorBoard logs to backup format.

Configuration (environment variables)

Variable Default Purpose
MATYAN_ENVIRONMENT / ENVIRONMENT development When production, strict checks apply (see Production configuration).
LOG_LEVEL INFO Log level (loguru + uvicorn).
FDB_CLUSTER_FILE fdb.cluster Path to FoundationDB cluster file.
S3_ENDPOINT http://localhost:9000 S3-compatible API URL.
S3_ACCESS_KEY / S3_SECRET_KEY (dev defaults) S3 credentials.
S3_BUCKET matyan-artifacts Bucket for artifacts.
BLOB_URI_SECRET (dev default) Fernet key for blob URIs; must be set in production.
KAFKA_BOOTSTRAP_SERVERS localhost:9092 Kafka broker list.
KAFKA_DATA_INGESTION_TOPIC data-ingestion Topic for ingestion messages.
KAFKA_CONTROL_EVENTS_TOPIC control-events Topic for control events.
KAFKA_SECURITY_PROTOCOL / KAFKA_SASL_* (empty) Optional Kafka SASL.
METRICS_ENABLED true Expose Prometheus metrics.
METRICS_PORT 9090 Port for metrics HTTP server (workers).
INGEST_MAX_MESSAGES_PER_TXN 100 Max messages per FDB transaction (ingestion worker).
INGEST_MAX_TXN_BYTES 8388608 (8 MB) Target max transaction size; FDB limit is 10 MB.
CORS_ORIGINS (localhost list) Allowed origins for CORS.

Source of truth: config.py.

Production configuration

See docs/PRODUCTION_CONFIG.md for enabling production mode (MATYAN_ENVIRONMENT=production), required overrides, and supplying secrets via env or a secrets backend.

Deployment

  • Docker: Build the backend image (context from repo root); run API and workers as separate processes or containers.
  • Kubernetes/Helm: The chart in deploy/helm/matyan deploys the backend API, ingestion worker, and control worker as separate Deployments; optional CronJobs for cleanup-orphan-s3 and cleanup-tombstones. Configure FDB, S3, and Kafka via chart values; see the chart README. Set MATYAN_ENVIRONMENT=production and required env for production.

Related

  • UI: matyan-ui calls this backend REST API.
  • Frontier: matyan-frontier publishes to Kafka; backend workers consume.
  • API models: matyan-api-models shared types (Kafka messages, run creation, etc.).
  • Monorepo: This package lives under extra/matyan-backend in the matyan-core repo.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matyan_backend-0.2.0.tar.gz (111.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

matyan_backend-0.2.0-py3-none-any.whl (126.7 kB view details)

Uploaded Python 3

File details

Details for the file matyan_backend-0.2.0.tar.gz.

File metadata

  • Download URL: matyan_backend-0.2.0.tar.gz
  • Upload date:
  • Size: 111.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for matyan_backend-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5a7504256ab14ca759cfebfd9844c332abf9669a188cc7d9cc70465ab98d82b2
MD5 63a843c0a0a926f4892e34c5ede5363b
BLAKE2b-256 e5f1879b604b077f31f637fe032b0c9e17dcd45885cba29e4b91392f75ef8174

See more details on using hashes here.

File details

Details for the file matyan_backend-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: matyan_backend-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 126.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for matyan_backend-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 270cfae7e5c338e54510c52c0bca21809ab8dc4f62e513319a53522cd8ddbfde
MD5 b0ccd210de39f6137ed7dcac99d959ad
BLAKE2b-256 e5e09cf82fb66848c406a1d731041d73a8ae553514e8d094d2aaac5f71f573a2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page