From trained blob to deployed model in minutes

dstk is a data science toolkit for model registries, deployment, and monitoring. Infrastructure as Code for your ML models, in a way that mostly doesn't suck.

pipinstallgit+https://github.com/dstk-labs/pydstk.git
python3 deploy.py
from pydstk import ModelRegistry, Deployer

# Register your model
registry = ModelRegistry()
model = registry.register(
    name="fraud-detector",
    artifact="./model.pkl",
    version="1.2.0"
)

# Deploy with one call
Deployer().deploy(model)

✓ Registered fraud-detector v1.2.0
✓ Deployed to https://models.acme.io/fraud-detector
✓ Inference API live (200 OK)

Plays nice with

Register. Deploy. Monitor.

Three concepts, minimal configuration, and you pick the interface: Python, CLI, or Web UI.

Step 1: Register

Immutable model registry

Point dstk at your trained artifact. It gets versioned and stored immutably. No more "which pickle file was that?"

model = registry.register(
  name="churn-predictor",
  artifact="./model.pkl"
)

Step 2: Deploy

Painless, hardware agnostic

dstk wraps your model in a container with a standard inference API. No Dockerfiles, no Kubernetes YAML, no tears.

Deployer().deploy(model)

# That's literally it

Step 3: Monitor

Full audit trail, zero config

Every deployment is tracked. See what's running, when it shipped, which version, and roll back if something goes wrong.

# From Python
registry.deployments("churn-predictor")

[
  { version: "1.2.0", status: "live" },
  { version: "1.1.0", status: "retired" }
]
# Or from the CLI
$ pydstk deployments list churn-predictor

VERSION  STATUS   DEPLOYED
1.2.0    live     2 hours ago
1.1.0    retired  3 days ago
1.0.0    retired  2 weeks ago

Why not just use MLflow?

Existing tools are either too bloated, too proprietary, or too painful. Here's how dstk stacks up.

CapabilitydstkMLflowSageMakerAzure ML
Open sourceYesYesNoNo
Immutable model registryYesPartialYesYes
One command deployYesNoPartialPartial
Hardware agnosticYesYesNoNo
Minimal configurationYesNoNoNo
Standard inference APIYesPartialYesYes
No vendor lock inYesYesNoNo
Doesn't suckYesPartialPartialPartial