ML deployment framework - from local development to production with one command
Project description
Geronimo: The Declarative ML Framework For AI
Build, train, and deploy ML models with production-ready infrastructure and Generative AI MCP support from the start.
Geronimo is like dbt for AI:
Why Geronimo?
๐ Ship Models Faster
Stop writing boilerplate. One command creates a runnable project with FastAPI endpoints, MCP Support, monitoring, and CI/CD ready to go.
geronimo init --name iris-realtime --framework sklearn --template realtime
Initializing project: iris-realtime
Template: realtime
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ Project 'iris-realtime' created successfully! โ
โ โ
โ Template: realtime โ
โ โ
โ Next steps: โ
โ 1. cd iris-realtime โ
โ 2. uv sync โ
โ 3. uvicorn iris_realtime.app:app --reload # Run API server โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
๐งฉ Simpler Development
Define your model's what, not the how. The SDK has 4 componentsโeach maps to one file:
| Component | File | Purpose |
|---|---|---|
| DataSource | data_sources.py |
Where your data comes from |
| FeatureSet | features.py |
How to transform raw data |
| Model | model.py |
Training and prediction logic |
| MonitoringConfig | monitoring_config.py |
Monitoring and drift detection settings |
Then, depending on the template you choose, you'll also have:
| Component | File | Purpose |
|---|---|---|
| Endpoint | endpoint.py |
Request/response handling (realtime) |
| Pipeline | pipeline.py |
Batch job orchestration (batch) |
Common Components:
data_sources.py โ Declare your data
training_data = DataSource(name="training", source="snowflake", query=Query.from_file("train.sql"))
features.py โ Define transformations
class IrisFeatures(FeatureSet):
sepal_length = Feature(dtype="numeric", transformer=StandardScaler())
sepal_width = Feature(dtype="numeric", transformer=StandardScaler())
petal_length = Feature(dtype="numeric", transformer=StandardScaler())
petal_width = Feature(dtype="numeric", transformer=StandardScaler())
model.py โ Train and predict
class IrisModel(Model):
name = "iris-realtime"
features = IrisFeatures()
def train(self, X, y, params): ...
def predict(self, X): ...
monitoring_config.py โ Configure monitoring
class IrisMonitoringConfig(MonitoringConfig):
drift_threshold = 0.1
alert_email = "[EMAIL_ADDRESS]"
Deployment Specific:
pipeline.py โ Run batch jobs
class ScoringPipeline(BatchPipeline):
schedule = Schedule.daily(hour=6)
def run(self): ...
endpoint.py โ Handle realtime requests
class IrisRealtimeEndpoint(Endpoint):
def preprocess(self, request): ...
def postprocess(self, prediction): ...
๐ค GenAI Agent-Ready
Every project is automatically exposed as an MCP tool. AI agents like Claude can call your models directlyโno extra work required.
{
"mcpServers": {
"iris-realtime": {
"command": "uv",
"args": ["run", "python", "-m", "iris-realtime.agent.server"]
}
}
}
"Analyze this transaction for fraud risk"
โ Claude calls your model โ Returns risk score
Getting Started
Installation Options
pip install geronimo # Core
pip install geronimo[mlflow] # + MLflow
pip install geronimo[databases] # + Snowflake, Postgres Connectors
pip install geronimo[all] # Everything
1. Install and Configure
pip install geronimo
# First-time setup: configure artifact storage
geronimo config init
The setup wizard lets you choose where to store trained models:
- local โ
~/.geronimo/artifacts(default) - s3 โ Your S3 bucket
- cloud โ Geronimo Cloud (requires
geronimo auth login)
2. Create a Project
geronimo init --name my-model --template realtime
Choose your template:
| Template | Use Case | Output |
|---|---|---|
realtime |
REST APIs, low-latency | FastAPI + monitoring |
batch |
Scheduled jobs, bulk scoring | Metaflow + drift detection |
both |
APIs + scheduled pipelines | Everything |
What You Get
A complete, runnable project structure (realtime shown):
my-model/
โโโ src/my_model/
โ โโโ sdk/ # Define your model here
โ โ โโโ model.py # train() + predict()
โ โ โโโ features.py # Feature transformations
โ โ โโโ endpoint.py # Request/response handling
โ โ โโโ monitoring_config.py
โ โโโ app.py # FastAPI (auto-generated)
โ โโโ train.py # Training script
โโโ geronimo.yaml # Deployment config
โโโ models/ # Saved artifacts
Focus on the sdk/ folder. Everything else is generated for you.
Integrations
| Integration | Purpose |
|---|---|
| MLflow | Experiment tracking, artifact store |
| Snowflake/Postgres Connectors | Data sources for training |
| CloudWatch | Production metrics |
| Slack | Alerts for drift/errors |
| MCP | AI agent tool exposure |
Deploy to Production
Deploy Directly through Pulumi
geronimo deploy up --project my-model --target aws
Deploy through CI/CD
geronimo generate all
This will generate:
- Terraform โ ECS Fargate infrastructure
- Dockerfile โ Optimized for ML serving
- CI/CD โ Azure DevOps / GitHub Actions pipelines
Deploy to Geronimo Cloud (managed)
geronimo auth login
geronimo deploy up --project my-model --target gdc
Documentation
- Getting Started: Realtime
- Getting Started: Batch
- Monitoring & Drift Detection
- MCP Integration
- SDK Reference
Apache 2.0 License โข GitHub
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file geronimo-0.4.0.tar.gz.
File metadata
- Download URL: geronimo-0.4.0.tar.gz
- Upload date:
- Size: 869.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb137b37b6bce275c4cf68aff2191f2bab1e575d6cf5a568bb6c518832691f8b
|
|
| MD5 |
c5a7b12c5852102234ece5c517d090ba
|
|
| BLAKE2b-256 |
46996a2275ec0c019b26dfe5840717244cec51b25271642996862aac1afd8108
|
Provenance
The following attestation bundles were made for geronimo-0.4.0.tar.gz:
Publisher:
publish.yml on geronimo-deploy-cloud/geronimo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geronimo-0.4.0.tar.gz -
Subject digest:
fb137b37b6bce275c4cf68aff2191f2bab1e575d6cf5a568bb6c518832691f8b - Sigstore transparency entry: 953647402
- Sigstore integration time:
-
Permalink:
geronimo-deploy-cloud/geronimo@d1aea82f8acc13b7fef8ca12848f11ede0073e81 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/geronimo-deploy-cloud
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d1aea82f8acc13b7fef8ca12848f11ede0073e81 -
Trigger Event:
release
-
Statement type:
File details
Details for the file geronimo-0.4.0-py3-none-any.whl.
File metadata
- Download URL: geronimo-0.4.0-py3-none-any.whl
- Upload date:
- Size: 140.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da37307e05680ac649a6d07b38d02ea28b5f14d1c7a5a373cc37c18457352e4f
|
|
| MD5 |
e498d9c3c6cbb41433effeaeaa90d260
|
|
| BLAKE2b-256 |
8b59a9055baa354ba90bec08d9eca0743dc1f5c7792c2b4e65e88c5125448f8a
|
Provenance
The following attestation bundles were made for geronimo-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on geronimo-deploy-cloud/geronimo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
geronimo-0.4.0-py3-none-any.whl -
Subject digest:
da37307e05680ac649a6d07b38d02ea28b5f14d1c7a5a373cc37c18457352e4f - Sigstore transparency entry: 953647403
- Sigstore integration time:
-
Permalink:
geronimo-deploy-cloud/geronimo@d1aea82f8acc13b7fef8ca12848f11ede0073e81 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/geronimo-deploy-cloud
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d1aea82f8acc13b7fef8ca12848f11ede0073e81 -
Trigger Event:
release
-
Statement type: