Heroku for ML Features
Project description
Meridian
"Define features in Python. Get training data and production serving for free."
Meridian is a developer-first feature store designed to take you from a Jupyter notebook to production in 30 seconds. It eliminates the infrastructure tax of existing tools—no Kubernetes, no Spark, no YAML. Just pure Python and SQL.
⚡ The 30-Second Quickstart
1. Install
pip install "meridian-oss[ui]"
2. Try the Quickstart Script Run a self-contained script to see the API in action:
python examples/quickstart.py
3. Define Features (examples/basic_features.py)
Or define features in a file to serve them:
from meridian.core import FeatureStore, entity, feature
from datetime import timedelta
store = FeatureStore()
@entity(store)
class User:
user_id: str
@feature(entity=User, refresh=timedelta(minutes=5), materialize=True)
def user_click_count(user_id: str) -> int:
return 42
4. Serve
meridian serve examples/basic_features.py
5. Query
curl -X POST http://localhost:8000/features \
-H "Content-Type: application/json" \
-d '{"entity_name": "User", "entity_id": "u1", "features": ["user_click_count"]}'
# {"user_click_count": 100}
6. Visualize Launch the built-in UI to explore your features interactively:
meridian ui examples/basic_features.py
Or see the rich terminal dashboard:
meridian serve examples/basic_features.py
7. Deploy Spin up a local production stack (Meridian + Redis + Postgres + Prometheus) in one command:
docker compose up -d
🚀 Why Meridian?
1. Local-First, Cloud-Ready
Most feature stores require a platform team to set up. Meridian runs on your laptop with zero dependencies (DuckDB + In-Memory) and scales to production with boring technology (Postgres + Redis).
2. No Magic, Just Python
We don't use YAML for configuration. Your code is your config.
- Explicit Caching: Use
@feature(materialize=True)to cache hot features. - Explicit Refresh: Use
@feature(refresh="5m")to define freshness.
3. Instant Wow ✨
- Meridian UI: A built-in Streamlit dashboard to explore your data.
- Rich Terminal: Production-grade TUI with live metrics.
- Jupyter Integration: Beautiful HTML representations of your feature store objects.
4. Production-Grade Reliability 🛡️
- Fallback Chain: Cache -> Compute -> Default. If Redis fails, we compute on-demand.
- Circuit Breakers: Built-in protection against cascading failures (fail fast).
- Deep Observability: Prometheus metrics (
meridian_feature_requests_total) and structured JSON logging out of the box. - Async Core: Fully async I/O for high-throughput serving.
🏗️ Architecture
Tier 1: Local Development (The "Wedge")
Perfect for prototyping and single-developer projects.
- Offline Store: DuckDB (Embedded)
- Online Store: Python Dictionary (In-Memory)
- Scheduler: APScheduler (Background Thread)
- Infrastructure: None (Just
pip install)
Tier 2: Production (The "Standard")
Robust, scalable, and boring.
- Offline Store: Postgres / Snowflake / BigQuery
- Online Store: Redis
- Scheduler: Distributed Workers with Redis Locks
- Infrastructure: 1x Postgres, 1x Redis, Nx API Pods
🗺️ Roadmap
- Phase 1 (Now): Core API, DuckDB/Postgres support, Redis caching, FastAPI serving.
- Phase 2: Drift detection, RBAC, and multi-region support.
🤝 Contributing
We love contributions! Please read our CONTRIBUTING.md to get started.
📄 License
Apache 2.0
Project details
Release history Release notifications | RSS feed
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 meridian_oss-1.0.1.tar.gz.
File metadata
- Download URL: meridian_oss-1.0.1.tar.gz
- Upload date:
- Size: 252.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab04c3224289cc0fe614204339f22cb4875caaeb87b3324740865fa18469f6c8
|
|
| MD5 |
346031bc6634d1aa97eee3dcd5044de8
|
|
| BLAKE2b-256 |
478e9bb4a1533bdb56000602b0aaef532f967b9392fabe1cfb04e243ed1a65bb
|
Provenance
The following attestation bundles were made for meridian_oss-1.0.1.tar.gz:
Publisher:
release.yml on davidahmann/meridian
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_oss-1.0.1.tar.gz -
Subject digest:
ab04c3224289cc0fe614204339f22cb4875caaeb87b3324740865fa18469f6c8 - Sigstore transparency entry: 743100098
- Sigstore integration time:
-
Permalink:
davidahmann/meridian@f3671dfd17bdac4018116d6a8f3aa40266f49026 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/davidahmann
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f3671dfd17bdac4018116d6a8f3aa40266f49026 -
Trigger Event:
push
-
Statement type:
File details
Details for the file meridian_oss-1.0.1-py3-none-any.whl.
File metadata
- Download URL: meridian_oss-1.0.1-py3-none-any.whl
- Upload date:
- Size: 22.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 |
8355c1c6d1ff875f1e2cf1fd4d019e093af902f8e49cf30e5f80968e98eee9d5
|
|
| MD5 |
ac6266e92d0a9127d7192eac2b3153bf
|
|
| BLAKE2b-256 |
64ed55bbfb3d35ae0251495d913e264658414fe2d3b8eefa9af1ba11cc10b9ff
|
Provenance
The following attestation bundles were made for meridian_oss-1.0.1-py3-none-any.whl:
Publisher:
release.yml on davidahmann/meridian
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meridian_oss-1.0.1-py3-none-any.whl -
Subject digest:
8355c1c6d1ff875f1e2cf1fd4d019e093af902f8e49cf30e5f80968e98eee9d5 - Sigstore transparency entry: 743100102
- Sigstore integration time:
-
Permalink:
davidahmann/meridian@f3671dfd17bdac4018116d6a8f3aa40266f49026 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/davidahmann
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@f3671dfd17bdac4018116d6a8f3aa40266f49026 -
Trigger Event:
push
-
Statement type: