Skip to main content

frontedge

The frontend layer for ML engineering: a ready-made design system and screens that mount into any FastAPI application.

from fastapi import FastAPI
import frontedge

app = FastAPI()
app.include_router(frontedge.runs(runs_provider=my_provider))

The provider returns frontedge.Run objects; the library knows nothing about authentication and hands the request to the provider, so access control stays on the application side.

What's inside

  • frontedge.mount(runs_provider, evals=..., datasets=..., actions=..., config=..., path="/frontedge") — the router: the list of runs, the run details, the log stream (SSE), the metadata and the built interface.
  • frontedge.runs(runs_provider, path="/frontedge") — the same router without the eval and dataset screens.
  • frontedge.models — the domain model: Run, Stage, MetricPoint, Artifact, Example, LogLine, EvalSummary, EvalComparison, DatasetInfo, DatasetDetail, the statuses and the freshness.
  • frontedge gen --out src/generated — the generator of TypeScript types and a typed client from the pydantic models. Pure Python, no Node needed.

One process, one port: the interface and the API are served by the same app.

Configuration

The configuration is data, not code — a TOML or JSON file that the same interface can edit by hand, from code and later with a visual editor:

# frontedge.toml
density = "default"          # compact | default | comfortable
theme = "light"              # light | dark
run_columns = ["name", "status", "ribbon", "dataset", "startedAt", "durationMs", "accuracy", "loss"]
app.include_router(frontedge.mount(my_runs_provider, config="frontedge.toml"))

UiConfig also knows eval_tabs, actions, live_refresh_seconds, baseline_run and page_size. The configuration is served to the browser as GET /frontedge/api/config.

Actions

The interface never invents what a button does: a project declares the actions it supports, and the library calls them.

[[actions]]
id = "stop"
label = "Stop"
placement = "run"        # run | runs | evals | datasets
danger = true
from frontedge import ActionResult

async def stop_run(request, payload) -> ActionResult:
    run_id = payload["runId"]
    await my_repository.stop(run_id)
    return ActionResult(ok=True, message=f"Run {run_id} stopped")

app.include_router(
    frontedge.mount(my_runs_provider, actions={"stop": stop_run}, config="frontedge.toml")
)

The handler receives the request and the payload of the interface and returns an ActionResult; its message is shown to the user.

The full description of the product and of the visual language: design document. The full contract: docs/integration.md.

MIT.

Metadata

Release files for frontedge 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for frontedge 0.1.0
File Size Uploaded Provenance Actions
frontedge-0.1.0.tar.gz 618.7 kB Without provenance Details for frontedge-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for frontedge 0.1.0
File Interpreter ABI Platform Actions
frontedge-0.1.0-py3-none-any.whl Python 3 none any Details for frontedge-0.1.0-py3-none-any.whl

Total release size: 1.2 MB

Release files / frontedge-0.1.0.tar.gz

Download URL frontedge-0.1.0.tar.gz
Size 618.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1e3299066cc61ccb6ecb78c4a637e0fc54f4445fbd038d3b70737a5a61b19fad
BLAKE2b-256 checksum
How to use checksums
3ab25db9f4519314f943178b1e35569d4d1b0e92f5c433795ef89bfb0fe38519
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / frontedge-0.1.0-py3-none-any.whl

Download URL frontedge-0.1.0-py3-none-any.whl
Size 627.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
26ce4d50d5703c092e6bba7eafcb84fa1b99f54547e68c91c63d7d77fe27d649
BLAKE2b-256 checksum
How to use checksums
3e1905484e74aa9f557276c4510b306360d4ee9e04c64391d9480944bde4df48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for frontedge 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page