Skip to main content

ML deployment framework - from local development to production with one command

Project description

Geronimo

ML Development Framework — Build, train, and deploy ML models with production-ready infrastructure.

Geronimo is like dbt for ML: a framework developers build around, not just deployment scaffolding.

Features

Category Capabilities
SDK DataSource, FeatureSet, Model, Endpoint, BatchPipeline
Artifacts Versioned storage for models, encoders, transformers (local/S3/MLflow)
Deployment Terraform, Docker, CI/CD pipelines, real-time + batch
Monitoring Metrics, drift detection, alerting
Integrations MLflow, Snowflake, Postgres, SQL Server, MCP

Installation

# Core installation
pip install geronimo

# With optional integrations
pip install geronimo[mlflow]      # MLflow artifact store
pip install geronimo[databases]   # Snowflake, Postgres, SQL Server
pip install geronimo[all]         # Everything

Or from source:

git clone https://github.com/your-org/geronimo.git
cd geronimo && uv sync

Quick Start

Option A: New Project

# Initialize a new ML project
geronimo init --name credit-risk-model

cd credit-risk-model
uv sync
uv run start

Option B: Import Existing Project

cd /path/to/existing-project
geronimo import .

This generates:

  • geronimo.yaml — Deployment configuration
  • geronimo_sdk/ — SDK wrappers with TODO tags for manual config

SDK Overview

Data Layer

from geronimo.data import DataSource, Query

training_data = DataSource(
    name="features",
    source="snowflake",
    query=Query.from_file("queries/training.sql"),
)

df = training_data.load(start_date="2024-01-01")

Feature Engineering

from geronimo.features import FeatureSet, Feature
from sklearn.preprocessing import StandardScaler, OneHotEncoder

class CustomerFeatures(FeatureSet):
    age = Feature(dtype="numeric", transformer=StandardScaler())
    segment = Feature(dtype="categorical", encoder=OneHotEncoder())

# Training: fit + transform
X = features.fit_transform(train_df)

# Production: transform only (uses fitted encoders)
X = features.transform(prod_df)

Model Definition

from geronimo.models import Model, HyperParams

class CreditRiskModel(Model):
    name = "credit-risk"
    version = "1.2.0"
    features = CustomerFeatures()

    def train(self, X, y, params: HyperParams):
        self.estimator = XGBClassifier(**params.to_dict())
        self.estimator.fit(X, y)

    def predict(self, X):
        return self.estimator.predict_proba(X)

Artifact Storage

from geronimo.artifacts import ArtifactStore

# Save during training
store = ArtifactStore(project="credit-risk", version="1.2.0")
store.save("model", model.estimator)
store.save("encoder", features.encoder)

# Load in production
store = ArtifactStore.load(project="credit-risk", version="1.2.0")
model = store.get("model")

With MLflow (pip install geronimo[mlflow]):

from geronimo.artifacts import MLflowArtifactStore

store = MLflowArtifactStore(project="credit-risk", version="1.2.0")
store.save("model", model)
store.log_metrics({"auc": 0.95})

Production Endpoints

from geronimo.serving import Endpoint

class PredictEndpoint(Endpoint):
    model_class = CreditRiskModel

    def preprocess(self, request):
        return self.model.features.transform(request["data"])

    def postprocess(self, prediction):
        return {"score": float(prediction[0])}

Batch Pipelines

from geronimo.batch import BatchPipeline, Schedule

class DailyScoringPipeline(BatchPipeline):
    model_class = CreditRiskModel
    schedule = Schedule.daily(hour=6)

    def run(self):
        data = self.model.features.data_source.load()
        predictions = self.model.predict(data)
        self.save_results(predictions)

CLI Commands

Command Description
geronimo init Create new ML project
geronimo import Import existing project with SDK wrappers
geronimo generate all Generate Terraform, Docker, CI/CD
geronimo generate batch Generate Metaflow/Airflow pipelines
geronimo validate Validate configuration
geronimo monitor capture-reference Capture baseline for drift detection
geronimo monitor detect-drift Compare current data to baseline

Configuration

# geronimo.yaml
project:
  name: credit-risk-model
  version: "1.2.0"

artifacts:
  store: s3://ml-artifacts/

batch:
  enabled: true
  backend: step-functions
  jobs:
    - name: daily_scoring
      schedule: "0 6 * * *"

monitoring:
  drift_detection:
    enabled: true
    sampling_rate: 0.05
    window_days: 7

Documentation

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geronimo-0.1.0.tar.gz (715.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geronimo-0.1.0-py3-none-any.whl (99.8 kB view details)

Uploaded Python 3

File details

Details for the file geronimo-0.1.0.tar.gz.

File metadata

  • Download URL: geronimo-0.1.0.tar.gz
  • Upload date:
  • Size: 715.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geronimo-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5f2d1dc5d340c3dc88021df6f68dffc57952e0a301ce2e997e93d76310fc2847
MD5 bb9e0a1b8788e72acd51e8597fb4521d
BLAKE2b-256 ae5fec8ace72c068f9d65a3111e1fb8a3025d445f6349d8b55e18417f819749f

See more details on using hashes here.

Provenance

The following attestation bundles were made for geronimo-0.1.0.tar.gz:

Publisher: publish.yml on geronimo-deploy-cloud/geronimo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file geronimo-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: geronimo-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 99.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for geronimo-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fc355e297f1d094f040397bad1f3226df9b19c241e6d20325f2bb6160fb9513d
MD5 d40c028eaceebe342dac708f1731d166
BLAKE2b-256 4f2422544aa854d655884749ac0ce77d3b64273498bc7e7ff1fd51e7ffaa99a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for geronimo-0.1.0-py3-none-any.whl:

Publisher: publish.yml on geronimo-deploy-cloud/geronimo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page