Skip to main content

Heroku for ML Features

Project description

Meridian


Heroku for ML Features
PyPI License

"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

🚀 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

  • Redis-Only Caching: We avoid complex multi-tier caches to guarantee data consistency.
  • Randomized Locking: Our distributed scheduler is self-healing and requires no leader election.
  • Zero-Code Serving: Auto-generated FastAPI endpoints with built-in metrics and logging.

🏗️ 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


Download files

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

Source Distribution

meridian_oss-0.2.0.tar.gz (243.9 kB view details)

Uploaded Source

Built Distribution

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

meridian_oss-0.2.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file meridian_oss-0.2.0.tar.gz.

File metadata

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

File hashes

Hashes for meridian_oss-0.2.0.tar.gz
Algorithm Hash digest
SHA256 62c68c7e55b59b92b7fe501867fdaabe114bfb52b698a18d0ad87e9b41ded066
MD5 35efb4ed8f228ee79369c9ce6d730628
BLAKE2b-256 550f0fddef549ca64fb41097bd5ebefbdc0bfb8adb142f7d6c5f822a1f9582c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for meridian_oss-0.2.0.tar.gz:

Publisher: release.yml on davidahmann/meridian

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

File details

Details for the file meridian_oss-0.2.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for meridian_oss-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8dae62d15091e18660329fe7cff147c136621d921d9cecfa1259c015218d76c6
MD5 1b9a6b170681e3c205166172532ef7f5
BLAKE2b-256 5d65ca1375db7625c436b92494d8914a13c4bceb94170b6f06ac76b204000c9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for meridian_oss-0.2.0-py3-none-any.whl:

Publisher: release.yml on davidahmann/meridian

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