Skip to main content

Heroku for ML Features

Project description

Meridian

The Heroku for ML Features

PyPI version License Python Version No YAML

Define features in Python. Get training data and production serving for free.

Stop paying the infrastructure tax. Meridian takes you from Jupyter to Production in 30 seconds.

📚 Read the Documentation

⚡ The 30-Second Quickstart

Option A: The "I just want to see it work" (Clone & Run)

git clone https://github.com/davidahmann/meridian.git
cd meridian
pip install -e ".[ui]"
meridian serve examples/basic_features.py

Option B: The "Builder" (Pip Install)

  1. Install Meridian
pip install "meridian-oss[ui]"
  1. Create a file named my_features.py:
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 len(user_id) + random.randint(0, 100)
  1. Serve it immediately:
meridian serve my_features.py
# 🚀 Meridian server running on http://localhost:8000
  1. Query it:
curl -X POST http://localhost:8000/features \
  -H "Content-Type: application/json" \
  -d '{"entity_name": "User", "entity_id": "u1", "features": ["user_click_count"]}'
# Output: {"user_click_count": 42}

🚀 Why Meridian?

Most feature stores are built for the 1% of companies (Uber, DoorDash) with platform teams. They require Kubernetes, Spark, and complex microservices.

Meridian is built for the rest of us.

Feature The "Old Way" The Meridian Way
Config 500 lines of YAML Python Decorators (@feature)
Infra Kubernetes + Spark Runs on your Laptop (DuckDB)
Serving Complex API Gateway meridian serve file.py
Philosophy "Google Scale" "Get it Shipped"

Key Features

  • Local-First, Cloud-Ready: Runs on your laptop with zero dependencies (DuckDB + In-Memory). Scales to production with boring technology (Postgres + Redis).
  • No Magic: Your code is your config. Explicit caching (materialize=True) and explicit refresh logic.
  • Production Reliability: Built-in circuit breakers, fallback chains (Cache -> Compute -> Default), and Prometheus metrics (meridian_feature_requests_total).
  • Rich UI & TUI: Includes a Streamlit dashboard and a production-grade Terminal UI for live monitoring.
  • Hybrid Features (v1.1.0): Mix Python logic (for complex math) and SQL (for heavy joins) in the same API.
  • Point-in-Time Correctness (v1.1.0): Zero data leakage using ASOF JOIN (DuckDB) and LATERAL JOIN (Postgres).
  • Write Once, Run Anywhere (v1.1.0): Switch from Dev to Prod just by setting MERIDIAN_ENV=production. No code changes.

🏗️ Architecture

Meridian is designed to grow with you.

graph TD
    subgraph Dev [Tier 1: Local Development]
        A[Laptop] -->|Uses| B(DuckDB)
        A -->|Uses| C(In-Memory Dict)
        style Dev fill:#e1f5fe,stroke:#01579b
    end

    subgraph Prod [Tier 2: Production]
        D[API Pods] -->|Async| E[(Postgres)]
        D -->|Async| F[(Redis)]
        style Prod fill:#fff3e0,stroke:#ff6f00
    end

    Switch{MERIDIAN_ENV} -->|development| Dev
    Switch -->|production| Prod

Tier 1: Local Development (The "Wedge")

  • Perfect for prototyping and single-developer projects.
  • Offline Store: DuckDB (Embedded)
  • Online Store: Python Dictionary (In-Memory)
  • Infra: None (Just pip install)

Tier 2: Production (The "Standard")

  • Robust, scalable, and boring.
  • Offline Store: Postgres / Snowflake / BigQuery
  • Online Store: Redis
  • Infra: 1x Postgres, 1x Redis, Nx API Pods

🗺️ Roadmap

  • Phase 1 (Now): Core API, DuckDB/Postgres support, Redis caching, FastAPI serving, PIT Correctness, Async I/O.
  • 🚧 Phase 2: Drift detection, RBAC, and multi-region support.

🤝 Contributing

We love contributions! This is a community-driven project. 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-1.1.1.tar.gz (346.1 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-1.1.1-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for meridian_oss-1.1.1.tar.gz
Algorithm Hash digest
SHA256 ce70661d75af57e4152d8fe3f435a5abe44e85998306fbe973adb77f6a25a2be
MD5 293128e8d1cbdcd908f0de3081dd53b2
BLAKE2b-256 3272c447f0fce0cdf81e7b97b336c7d556538ffa96b588436646a89e166d21d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for meridian_oss-1.1.1.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-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: meridian_oss-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 26.8 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-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 12b47722621213e11381548f9473fde7b32df17aa667cfd2f8b18d44906cf7aa
MD5 bedc4c4ba5d94499422f6e8de01553e4
BLAKE2b-256 749beebbea3c35c3106b6ed93783b3e833695617f42c8fadf85b384a9b682550

See more details on using hashes here.

Provenance

The following attestation bundles were made for meridian_oss-1.1.1-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