Skip to main content

mlgatee

Deploy a trained model to MLGatee from a notebook, a script or the terminal, and get a live, key-protected HTTPS endpoint.

%pip install -q mlgatee

import mlgatee
mlgatee.login()                                  # paste an access token (hidden)
dep = mlgatee.deploy(model, name="churn-model")  # about 1.5 to 3 minutes
dep.predict([[5.1, 3.5, 1.4, 0.2]])
✓ saved with joblib (3 KB)
✓ uploaded
✓ checked without running it: numpy==2.5.3, scikit-learn==1.9.1

  Endpoint key (shown once, also in .key): mlg_live_…
  Save it somewhere safe: only its last 4 characters are kept.

… Installing libraries and downloading the model
… Starting the model server and loading the model
✓ live at https://mlg-churn-model-….onrender.com

Get an access token on app.mlgatee.com → Settings → Access tokens. MLGatee is invite-only during the beta.

How it works

The model is saved with joblib in your own Python, then goes through exactly the same steps as an upload on the web app: MLGatee reads the file's bytes (it never runs your code), picks the exact libraries, and gives the model its own server on Render.

Deploying the same name again uploads a new version: same address, same key. The current version keeps answering until the new one is live; if the new build fails, it keeps answering.

Rolling back builds a new version from an earlier version's file: rolling v3 back to v2 creates v4 with v2's file. The 3 newest versions can be rolled back to.

Python

Call What it does
mlgatee.login(token=None, save=True) Signs in. Without token it asks (hidden). save=True keeps it in ~/.mlgatee/token, readable only by you; use save=False on a shared computer. MLGATEE_TOKEN works too
mlgatee.deploy(model, name) A model object or a file path (.pkl, .joblib, XGBoost .json/.ubj, .onnx, TensorFlow Lite .tflite). Returns a Deployment
dep.predict(rows) / dep.predict_proba(rows) Calls the model. Rows can be lists, a NumPy array or a pandas DataFrame
mlgatee.predict(name_or_url, rows, key=None) Same, by name or endpoint URL. The key comes from key, this session's deploy(), or MLGATEE_KEY
mlgatee.models() Your models
mlgatee.versions(name) A model's versions, newest first, with current and can_roll_back
mlgatee.rollback(name, version) Back to an earlier version (one build); same address and key
mlgatee.plan() Your plan (free or Pro), its limits, what you've used, and the machines you can deploy on
mlgatee.deploy(model, name, plan="standard") Pro: a new model on an always-on machine, "starter" (512 MB) or "standard" (2 GB). A new version keeps the machine
mlgatee.resume(name) Starts a Pro model that was paused after 48 hours without calls; same address and key, no build
mlgatee.delete(name) Deletes a model and its endpoint (can't be undone)
mlgatee.logout() Forgets the token here (revoke it on the web app to stop it everywhere)

Errors are mlgatee.MLGateeError with a plain message and a stable .code.

Terminal

pip install mlgatee
mlgatee login
mlgatee deploy model.pkl --name churn-model
mlgatee models
mlgatee versions churn-model
mlgatee rollback churn-model 2
mlgatee plan
mlgatee resume churn-model
mlgatee delete churn-model --yes

Monitoring

mlgatee.usage("churn-model")              # last 24 hours; "7d" for a week
print(mlgatee.usage_text(mlgatee.usage("churn-model")))
dep.usage()                               # the same, from a Deployment
mlgatee usage churn-model --window 7d

Calls, errors (bad requests and server errors), answer times (p50, p95, max), rows predicted and when the model was last called, overall and per version: handy before deciding on a rollback. MLGatee records counts and timings only, never inputs or outputs. A model deployed before monitoring existed starts reporting after its next build.

Keras and PyTorch

Pass the model itself: it's converted here, in your Python, to a format MLGatee's free machines run (TensorFlow Lite for Keras, ONNX for PyTorch), checked against the original, then uploaded.

mlgatee.deploy(keras_model, name="my-keras-model")                      # -> TensorFlow Lite
mlgatee.deploy(keras_model, name="my-keras-model", quantize=True)       # 8-bit weights, ~4x smaller
mlgatee.deploy(torch_model, name="my-torch-model", example_input=X[:5], task="classifier")  # -> ONNX
  • Keras needs TensorFlow (the backend you trained with), PyTorch needs torch and onnx (pip install "mlgatee[torch]" installs the extras). With example_input, the converted model is compared with the original before uploading (needs ai-edge-litert / onnxruntime).
  • task="classifier": /predict returns the class and /predict_proba the probabilities (softmax of the scores). Without it, the model's outputs are returned as they are.
  • Custom or Lambda layers, and operations TFLite/ONNX don't have, are refused with the converter's own message. Full TensorFlow and PyTorch will come on the paid plan.
  • Already have a file? mlgatee.deploy("model.tflite", ...) or "model.onnx" works too.

Hugging Face text models

Small text models (MiniLM-sized: up to about 25 MB with 8-bit weights) run on the free plan:

mlgatee.deploy_hf("sentence-transformers/all-MiniLM-L6-v2", name="embeddings")
mlgatee.deploy_hf("philschmid/tiny-bert-sst2-distilled", name="sentiment")

Callers send plain texts: {"input_data": ["great product!"]}. A classifier answers label names (and /predict_proba the probabilities); an embeddings model answers one normalised vector per text. The model is exported to ONNX here, with 8-bit weights, checked against the original, and packed with its tokenizer into one file (pip install "mlgatee[huggingface]"). Bigger models (DistilBERT and up) don't fit the 50 MB limit; text generation comes later.

Good to know

  • Supported during the beta: scikit-learn, XGBoost, LightGBM and CatBoost, up to 50 MB, one model per person, 5 builds a day.
  • A model that uses a class defined in your notebook can't be loaded on a server. The client catches this before uploading and says which class to move into a .py file.
  • The endpoint key is shown once. Keep it out of notebooks you share.
  • The free instance sleeps after 15 idle minutes; the next request takes about a minute.

Development

pip install -e ".[dev]"
python -m pytest -q

Self-hosting MLGatee? Point the client at your project with MLGATEE_URL and MLGATEE_PUBLISHABLE_KEY.

Apache-2.0.

Metadata

Release files for mlgatee 0.8.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 mlgatee 0.8.0
File Size Uploaded Provenance Actions
mlgatee-0.8.0.tar.gz 38.4 kB With provenance Details for mlgatee-0.8.0.tar.gz

Built distribution (wheel)

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

Total release size: 69.8 kB

Release files / mlgatee-0.8.0.tar.gz

Download URL mlgatee-0.8.0.tar.gz
Size 38.4 kB
Tags Source
SHA-256 checksum
How to use checksums
656e5e267e03bb6cbc328d2388be5c5b6a844dfb5242581dcf1ae7596d31d624
BLAKE2b-256 checksum
How to use checksums
860e30f2a337e76587a7794d81757c891e47e77994f8c2ff09d1a2f0983e6009
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Release files / mlgatee-0.8.0-py3-none-any.whl

Download URL mlgatee-0.8.0-py3-none-any.whl
Size 31.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1055c78ee9ce3f73f799f3623ed0fcfe1cce497fc8d2c8d7424f7e8b11ba34db
BLAKE2b-256 checksum
How to use checksums
efb2e0d297a25400bebb34f0ea6179f34a638d7afbdd56e0910c56529b832f47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

Security for mlgatee 0.8.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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mlgatee-0.8.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.

Transparency log

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.

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files Full provenance

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