Skip to main content

Matyan web UI server — serves the React app and static assets

Project description

Matyan UI

React single-page application for browsing runs, metrics, params, and artifacts. Part of the Matyan experiment-tracking stack (fork of Aim). The UI talks only to the matyan-backend REST API (never to the frontier).

Layout

  • web/ — React app (TypeScript, React 17, react-scripts 4, Material-UI, Highcharts, etc.). All frontend source and package.json live here.
  • src/matyan_ui/ — Python package that serves the built static files and injects config at runtime via a Jinja-rendered index-template.html.
  • Build output: npm run build in web/ writes assets into src/matyan_ui/static/ (and produces index-template.html with placeholders for base path and API host).

Prerequisites

  • Build: Node.js and npm (e.g. Node 20; see MAINTENANCE.md for known workarounds on Node 17+).
  • Run: Python 3.12+. The package uses uv in the repo; uv run matyan-ui or install then matyan-ui CLI.

Development

  • Option A — React dev server: From web/, run npm install --legacy-peer-deps (or npm ci) then npm start. Configure the app to use the backend (e.g. proxy or API_HOST_BASE); the app reads window.API_HOST_BASE / window.API_BASE_PATH_SUFFIX from the served HTML (in production these come from the Python server's Jinja template).
  • Option B — Production-like: Build once (npm run build from web/), then run the Python server so it serves from src/matyan_ui/static/ with the same env vars you would use in deployment.

The backend must be running (e.g. on http://localhost:53800) for the UI to load runs and metrics.

Build (production)

From repo root (or from extra/matyan-ui):

cd extra/matyan-ui/web && npm ci --legacy-peer-deps && npm run build

On Node 17+, if the build fails with OpenSSL errors, set NODE_OPTIONS=--openssl-legacy-provider (see MAINTENANCE.md).

Result: src/matyan_ui/static/ is populated (and committed or not per .gitignore; Docker builds do this in the image).

Run (production-like)

From the matyan-ui package directory: uv run matyan-ui (or matyan-ui if the package is installed).

Options: --host, --port (defaults from env: MATYAN_UI_HOST, MATYAN_UI_PORT). Default port: 8000. The app is served under MATYAN_UI_BASE_PATH (default empty = root).

Configuration (environment variables)

Variable Default Purpose
MATYAN_UI_BASE_PATH "" URL path prefix where the UI is served (e.g. /matyan).
MATYAN_UI_API_BASE_PATH /api/v1 Path suffix for backend API (used with MATYAN_UI_API_HOST_BASE).
MATYAN_UI_API_HOST_BASE http://localhost:53800 Backend base URL; UI sends REST requests here.
MATYAN_UI_API_AUTH_TOKEN "" Optional bearer token for UI → backend requests.
MATYAN_UI_HOST 0.0.0.0 Bind address for the server.
MATYAN_UI_PORT 8000 Bind port.

These are injected into the HTML so the React app can call the correct backend; for subpath or multi-domain setups, set MATYAN_UI_BASE_PATH and/or MATYAN_UI_API_HOST_BASE accordingly.

Deployment

  • Docker: Use Dockerfile.dev or Dockerfile.prod (context from repo root; build copies web/ and produces an image with Python + pre-built static).
  • Kubernetes/Helm: The main chart in deploy/helm/matyan deploys the UI as a separate deployment; configure ui.hostBase, ui.apiHostBase, and optionally ui.basePath and auth. See the chart README for values.

The UI is deployed independently from the backend; CORS and ui.hostBase are configured so the backend allows requests from the UI origin.

Maintenance and workarounds

See MAINTENANCE.md for: security audit, outdated deps, build verification, and current workarounds (--legacy-peer-deps, NODE_OPTIONS=--openssl-legacy-provider, GENERATE_SOURCEMAP=false).

Related

  • Backend: matyan-backend serves the REST API; the UI is API-compatible with the Aim UI contract.
  • Monorepo: This package lives under extra/matyan-ui 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_ui-0.3.0.tar.gz (18.4 MB view details)

Uploaded Source

Built Distribution

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

matyan_ui-0.3.0-py3-none-any.whl (16.1 MB view details)

Uploaded Python 3

File details

Details for the file matyan_ui-0.3.0.tar.gz.

File metadata

  • Download URL: matyan_ui-0.3.0.tar.gz
  • Upload date:
  • Size: 18.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for matyan_ui-0.3.0.tar.gz
Algorithm Hash digest
SHA256 100ea574cde90e7cc5a837fddb7c3285e51279791be91a823d3af3fd7f347369
MD5 c0b39a6e4bfd8d7a79e5b78a435226cf
BLAKE2b-256 cc699d93824713eb788317677cec22567f43c1633997897194a3e31e71067993

See more details on using hashes here.

Provenance

The following attestation bundles were made for matyan_ui-0.3.0.tar.gz:

Publisher: release.yml on 4gt-104/matyan-ui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file matyan_ui-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: matyan_ui-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 16.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for matyan_ui-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 21024c660f8858d695a62301d5c6f37c3ae1b14112b355c2777b9c08e7db9e13
MD5 af0289804448de81bcddfd316db93d4b
BLAKE2b-256 4054a45aa76b3efdc4fa1d6fc002175381e441249e5052b4b7b357ec4d095109

See more details on using hashes here.

Provenance

The following attestation bundles were made for matyan_ui-0.3.0-py3-none-any.whl:

Publisher: release.yml on 4gt-104/matyan-ui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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