MLGatee
The platform

Model file in.
Key-protected API out.

MLGatee takes a trained model file and returns a live HTTPS endpoint, with versions, rollback and monitoring built in.

1 · Your side

You

  • Web appapp.mlgatee.com
  • Python clientmlgatee.deploy()
  • Any HTTP clientcurl, Python, your app
2 · Control plane

MLGatee

  • Sign-inGitHub, Google, email link
  • Private storagemodel files, newest 3 versions
  • Byte inspectorreads bytes, never loads
  • Deploys and versionskeys stored as hashes
  • Monitoringcounts and timings only
3 · Model runtime

Your model’s service

  • One service per modelnothing shared
  • Python 3.12FastAPI server
  • Exact packagespinned from your file
  • /predict/predict_proba for classifiers
POST /predict with your key goes straight to your model’s own address. MLGatee isn’t in the request path.
Read from the bytesExact versions pinnedNothing runs on load
model.pkl
installsscikit-learn 1.9.1
Byte inspector

Inspected, never loaded.

A pickle can run code the moment it’s opened, so we never open yours on our servers. We read its bytes, pin the exact versions it needs, and refuse files that would run commands.

app.py
app.py.env
import os, requests

url = "https://mlg-iris-7f3a9c21.onrender.com/predict"
key = os.environ["MLGATEE_KEY"]

res = requests.post(url,
    headers={"Authorization": f"Bearer {key}"},
    json={"input_data": [[5.1, 3.5, 1.4, 0.2]]})
print(res.json())  # {'output': [0], 'model': 'iris'}
Key checked on every call
Endpoint and keys

“The key ended up in a screenshot.”

Make a new key on the model’s page. The old one keeps working until the new one is live, so nothing breaks in between. Keys are shown once and stored only as a hash.

Servicesone per model · nothing shared
mlg-irisscikit-learn 1.9.1Live
mlg-pricingcatboost 1.2.10Sleeping · idle 15 min
mlg-reviewsonnxruntime · tokenizersBuilding version 2
Isolation

One model, one service. Nothing shared.

Replacing or deleting one model never touches another. On the free plan an idle model naps after 15 quiet minutes and wakes on the next call.

Calls1,284
Errors0.5%
Typical answer4 ms
Sample data · last 24 hoursInputs never recorded
🎉Version 3 is liveIts calls are counted separately
Monitoring

“Is anyone even calling this?”

Calls, errors and answer times, per hour and per version, for the last 24 hours or 7 days. Never your inputs, outputs or keys.

v1CatBoost
v2XGBoost .ubj
v3scikit-learn
v4from v2
Live
Roll back to v2

Same address. Same key. Every version.

Versions and rollback

“The new version is wrong.”

Roll back in one click, or one line of Python, to any of your three newest versions. Same address, same key, so nothing that calls it has to change.

digits.ipynbPython 3

>>> mlgatee.deploy(net, name="digits",

... example_input=X[:5], task="classifier")

converting PyTorch → ONNX (opset 18)

checking against the original… same answers

uploading · inspecting · building

✓ live https://mlg-digits-…onrender.com (version 1)

mlg_pat_… access token Python 3.9+ · no dependencies
Python client

Deploy from the notebook you’re in.

Sign in once with an access token, then call mlgatee.deploy(model). Keras and PyTorch models are converted in your own Python and checked against the original first.

Get started

Your model deserves
to see the real world.

Upload a file or deploy from your notebook. MLGatee handles the packages, the server and the key.

Free plan: one model, no card needed