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.2.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.2-py3-none-any.whl (16.1 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: matyan_ui-0.3.2.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.2.tar.gz
Algorithm Hash digest
SHA256 7c04638e1c62695dc6d4b67c193136b52ba7333a04df920de79664e0b7f4dfaf
MD5 abea543d691591dc875fff0f27103f9d
BLAKE2b-256 a1325bad7c3d244e8e5e7ad276bd03836380835e33a8097b10aa9c6cb23d1010

See more details on using hashes here.

Provenance

The following attestation bundles were made for matyan_ui-0.3.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: matyan_ui-0.3.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a0dbfb4cce387d5cef3ed4d5149bf9613e2ddaaecd0e750b894452be2892a96f
MD5 7a4873f4e45bb84b1f00f8626b59c0f9
BLAKE2b-256 eb425e60df0c0ac6f666099fa3b7705bf3bdf9ac6e1b4375a22b33e29eafdb94

See more details on using hashes here.

Provenance

The following attestation bundles were made for matyan_ui-0.3.2-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