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 | 🛠️ Unit Testing Guide

⚡ 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
import random

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).
  • Self-Healing: Run meridian doctor to instantly diagnose config and connectivity issues.
  • Rich UI & TUI: Includes a Streamlit dashboard with Visual Dependency Graphs 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.7.tar.gz (353.0 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.7-py3-none-any.whl (31.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: meridian_oss-1.1.7.tar.gz
  • Upload date:
  • Size: 353.0 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.7.tar.gz
Algorithm Hash digest
SHA256 2b2fe7ab9185507116663186955bb25f4d097cc7265e735c359bdd276a612d77
MD5 f1e336c14add1d3dce72480b4ec03edf
BLAKE2b-256 5c4a9d95b23d1f0f8cd3ed21ee344f4dcd05b423a1afb031c67d06ca121b3a8a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: meridian_oss-1.1.7-py3-none-any.whl
  • Upload date:
  • Size: 31.0 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a694704080a776c07bd7e6467a31a9cf7567f3f555b8465bfbf72c6713902d5a
MD5 f884ed52fcc216063be66d1fa9476661
BLAKE2b-256 275b086924a45418f67331ac8aa2f880cd3e24873a4ac15557906ee784637b70

See more details on using hashes here.

Provenance

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