From trained model to reviewed prediction.

Upload a model bundle, run predictions through a form generated from its schema, ask people to review the results and export everything for evaluation or retraining. Every result keeps the exact model and schema that produced it.

Open source under the MIT license. Use the live instance or self-host it with Docker Compose.

mlsuite.irlab.org/predict/…
The live instance at mlsuite.irlab.org. The models are demos trained on the public Palmer penguins dataset.
  1. Upload a bundleA .mlbundle carries the model, its manifest and its input schema.
  2. Shape the schemaCombine models into one form, edit it as a reviewed change, publish a snapshot.
  3. Run and keepRun one record or a whole file. Saved runs stay tied to their snapshot.
  4. Review and exportMembers answer for each result. Answers become columns you export.

Start from a bundle.

Drop in .mlbundle files exported with MLbundle. MLsuite reads the algorithm, its classes and parameters, and the feature importance from the model itself. It accepts no other artifact format.

mlsuite.irlab.org/models/…
mlsuite.irlab.org/models/…?tab=provenance
  • Four libraries, no pickle

    scikit-learn, XGBoost, CatBoost and ONNX models in their native formats, for tabular classification and regression.

  • The schema comes with it

    Fields inferred from the training data by MLschema arrive with the bundle. Without it, every feature becomes a number field.

  • Identity you can check

    The stored file's SHA-256, the bundle id, the hash of every member and the training environment it declares.

The schema is the contract.

One versioned schema draws the form with MLform, maps each value to the model's own feature names and names every column of the results. Changing it is a reviewed step, never a silent edit.

mlsuite.irlab.org/schemas/…/conflicts
mlsuite.irlab.org/predict/…
  • One form, several models

    A schema combines the inputs and reports of the models you pick. Each field maps to every model that reads it.

  • Changes, then snapshots

    Edit labels, units, ranges and help as a change, review it as a diff, then publish a numbered snapshot.

  • Bookmarks point to one snapshot

    Predict, public pages and API clients run a bookmark, so they always run the exact snapshot it names.

Every run, kept.

Inferences lists every run in the organization, from the workspace, a public page or an API client. Each schema's inputs, outputs and reviewer answers become columns.

mlsuite.irlab.org/inferences
  • One record or a whole file

    Fill the form, or upload a CSV or XLSX file to run every row. Runs wait in a session until you save them.

  • Kept with what made them

    A saved run keeps its inputs, each model's output, the bookmark, the snapshot and where it came from.

  • Every column, one table

    Search, filter on any input, output or answer, sort, and export what you see to CSV.

Feedback closes the loop.

A prediction is not the end. Ask the people who know the domain to check results, record what was right, and turn their answers into evaluation and retraining data.

  1. AssignPick a snapshot's inferences and the members who review them, with an expiry date.
  2. AnswerEach report asks for the correct class or value, or its own questionnaire when the schema defines one.
  3. SendSaved answers wait in the reviewer's tray until the review is completed, then appear in Inferences and the export.
mlsuite.irlab.org/review/…

Share the model, not the workspace.

Publish a bookmark as a public page, or give it to outside software as an API client. Both run the same snapshot and land in the same Inferences.

mlsuite.irlab.org/api-access/requests

Built from the family.

MLsuite is the last step of the eshkra path. The libraries before it work on their own; here they meet.

  • MLbundle

    Packages the model, its manifest and its schema in the one file MLsuite accepts. The runtime loads models through it.

  • MLschema

    Infers the fields from the training data on your machine, at export. MLsuite starts every schema from them.

  • MLform

    Renders every form, result and review questionnaire, and runs the fields and reports that plugins add.

Three runtimes, one product.

Results return through the API, so the model, schema, inputs, outputs and feedback of a run stay traceable from end to end.

  1. clientReact + MLformDraws forms, results and reviews.
  2. apiSpring BootSign-in, workspace permissions, persistence and every business rule.
  3. runtimePythonLoads bundles, checks records and runs predictions and explanations.
  • statePostgreSQL
  • artifactsMinIO
  • Organizations

    Members, roles, invitations and permissions. A new account starts with its own personal organization.

  • Plugins

    Upload TypeScript plugins that add MLform fields and reports to a workspace's schemas.

  • Explanations

    Supported decision-tree models can be explained with Crystal Tree.

  • Administration

    Superadmins moderate public bookmarks, watch API traffic and set each organization's monthly limit.

Try it, or run your own.

MLsuite is early software: expect rough edges and breaking changes. The full stack is open to inspect, change and fork.

Use the live instance

Create an account at mlsuite.irlab.org. It comes with a personal organization, ready for your first bundle.

Create an account

Self-host with Docker Compose

You need Git and Docker. Fill in every blank secret in .env before you start.

Terminal
git clone https://github.com/UlloaSP/mlsuite.git
cd mlsuite && cp .env.example .env
docker compose -f docker-compose.yml \
  -f docker-compose.dev.yml up --build -d
# then open http://localhost:5173
  1. PackageMLbundle
  2. DescribeMLschema
  3. RenderMLform
  4. Run & reviewMLsuite