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
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).
  • 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.4.tar.gz (346.8 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.4-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: meridian_oss-1.1.4.tar.gz
  • Upload date:
  • Size: 346.8 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.4.tar.gz
Algorithm Hash digest
SHA256 df3cc0b733e049daa31408e529089030df794f7685a2a54dfcf9d037135469f7
MD5 f90b1b0079d037a44bba4ecdd757580c
BLAKE2b-256 bcf3a4ee2b4ea86930705684bb1cf9f440639516d6e3564af588a2df34cc3bc6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: meridian_oss-1.1.4-py3-none-any.whl
  • Upload date:
  • Size: 27.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-1.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 0e703d437c320285643052afcc315325c023b169cd97f2f95a52fcd0354a5bed
MD5 8ef5b5ca36d332dd51a901731048b459
BLAKE2b-256 bf539560421e1994c05617591b83b5086a70fd1cf3ac67c85a23144599c8329f

See more details on using hashes here.

Provenance

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