Skip to main content

Lakehouse platform

Project description

Phlo

Modern data lakehouse platform. Plugin-driven. Storage-agnostic.

CI PyPI Python 3.11+

Features

  • Template-first projectsphlo init creates focused starters for CSV, REST APIs, dbt medallion projects, Sling replication, and observability demos
  • Decorator-driven ingestionphlo-dlt and phlo-sling register assets without hand-written Dagster boilerplate
  • Type-safe quality contractsphlo-pandera schemas validate data before it lands in managed tables
  • Capability plugins — packages contribute services, CLI commands, assets, resources, catalogs, hooks, and Observatory surfaces through Python entry points
  • Storage-agnostic data plane — Iceberg, Delta, ClickHouse, Trino, MinIO, RustFS, Nessie, and PostgreSQL can be composed as needed
  • Operator surfacesphlo-api, Observatory, MCP, PostgREST, Hasura, Superset, pgweb, and observability packages expose runtime state and actions
  • Local-first operationsphlo services generates and runs the project stack through Docker or Podman

What It Looks Like

from pathlib import Path

import pandas as pd
import pandera.pandas as pa
from pandera.typing import Series

from phlo_dlt.decorator import phlo_ingestion


class EventsSchema(pa.DataFrameModel):
    id: Series[int] = pa.Field(ge=1)
    name: Series[str]
    value: Series[int] = pa.Field(ge=0)

    class Config:
        strict = True
        coerce = True


@phlo_ingestion(
    table_name="events",
    unique_key="id",
    validation_schema=EventsSchema,
    group="demo",
    freshness_hours=(1, 24),
)
def events(partition_date: str):
    return pd.read_csv(Path("data/events.csv"))

Prerequisites

  • uv — Python package manager
  • Docker — Container runtime

Quick Start

# Install with default plugins
uv pip install phlo[defaults]

# Initialize a runnable local starter
phlo init my-project --template csv-batch
cd my-project

# Generate service configuration, start services, and materialize
phlo services init
phlo services start
phlo materialize dlt_events --partition 2026-05-04

Documentation

Full documentation source lives under docs/index.md. The published site is generated with pymdx, matching the GitHub Pages workflow:

pymdx generate src/phlo --docs docs --output docs-site
pymdx build docs-site

Primary entry points:

Development

uv pip install -e .    # Install Phlo in dev mode
make check             # Lint, format, typecheck, and test (parallel)

# Services
phlo services start    # Start infrastructure
phlo services stop     # Stop services
phlo services logs -f  # View logs

# Individual gates
uv run ruff check .    # Lint
uv run ruff format .   # Format
uv run ty check        # Typecheck
uv run pytest          # Test

Architecture

Phlo is a monorepo of composable packages — install only what you need:

Layer Packages
Orchestration phlo-dagster
Ingestion phlo-dlt, phlo-sling
Quality phlo-pandera
Transforms phlo-dbt
Table formats phlo-iceberg, phlo-delta, phlo-clickhouse
Infrastructure phlo-traefik, phlo-postgres, phlo-oauth2-proxy
Storage phlo-minio, phlo-rustfs
Catalog phlo-nessie, phlo-openmetadata
Query phlo-trino
Observability phlo-otel, phlo-clickstack, phlo-grafana, phlo-prometheus, phlo-loki, phlo-alloy, phlo-alerting
UI phlo-observatory, phlo-pgweb, phlo-superset
API phlo-api, phlo-mcp, phlo-hasura, phlo-postgrest
Dev/Test phlo-testing

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

phlo-0.9.0.tar.gz (282.6 kB view details)

Uploaded Source

Built Distribution

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

phlo-0.9.0-py3-none-any.whl (384.1 kB view details)

Uploaded Python 3

File details

Details for the file phlo-0.9.0.tar.gz.

File metadata

  • Download URL: phlo-0.9.0.tar.gz
  • Upload date:
  • Size: 282.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for phlo-0.9.0.tar.gz
Algorithm Hash digest
SHA256 e73db61c32f293e294d2e7573e772a04895b45b566c8a7c27644fd9596e0fc1b
MD5 0add34c163bf72a29a9413331e58e8bc
BLAKE2b-256 20328e2c51c582e0cddd0a20c9b3cd245aabea95320689bee1f41aec104a9bbd

See more details on using hashes here.

File details

Details for the file phlo-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: phlo-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 384.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for phlo-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d824f8bb9f47c5428391e73888e455c0df0b902091a2f4dd58a076281080d5cb
MD5 828be2698ff58e519b73b2cbd4419605
BLAKE2b-256 525e8663770616b5993576aecac8d7c8165968d920d150c47b7811da19b0a082

See more details on using hashes here.

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