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
Metadata
Release files for geronimo 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| geronimo-0.5.0.tar.gz | 889.5 kB | With provenance | Details for geronimo-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| geronimo-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for geronimo-0.5.0-py3-none-any.whl |
Total release size: 1.0 MB
Release files / geronimo-0.5.0.tar.gz
| Download URL | geronimo-0.5.0.tar.gz |
|---|---|
| Size | 889.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2b29038dea106c1a0c95f7bf142d8480e541c6fee54e630c25fc756c85615e2
|
|
BLAKE2b-256 checksum How to use checksums |
5aec7966c8aab89151e27abe35ddf0d48a6bd7cdca3db36283f38a39aec0d993
|
| 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 Jul 30, 2026.
Transparency logRelease files / geronimo-0.5.0-py3-none-any.whl
| Download URL | geronimo-0.5.0-py3-none-any.whl |
|---|---|
| Size | 153.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
166e10bf14413335cde0b81b67de1152ed4b9e6a1a6cf97d12b55c1838588634
|
|
BLAKE2b-256 checksum How to use checksums |
68fac2b1cd87d60545ee5d75834011ed3de6f6748334e30d02585dfc7a29b708
|
| 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 Jul 30, 2026.
Transparency logSecurity for geronimo 0.5.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
All 2 files in this release have been uploaded with provenance metadata.
Attestation for geronimo-0.5.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 Jul 30, 2026.
Transparency logA 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.