Plugin Interface Reference
This directory contains the Abstract Base Class (ABC) definitions for all floe plugin interfaces. Plugins extend floe’s capabilities while maintaining consistent contracts and composability.
Each interface defines the methods that plugin implementations must provide, enabling platform teams to swap implementations (e.g., DuckDB vs Snowflake compute, Dagster vs Airflow orchestration) without changing data product code.
Composability Principle: See ADR-0037 for how plugins compose to form complete platform configurations.
Category Count: The implementation-truth plugin category list is Plugin Catalog. This interface reference documents the public ABC surface and may lag newly introduced implementation categories until their dedicated interface pages are published.
Interface Overview
Section titled “Interface Overview”| Interface | Purpose | Location | ADR |
|---|---|---|---|
| ComputePlugin | Where dbt transforms execute | floe_core/interfaces/compute.py | ADR-0010 |
| OrchestratorPlugin | Job scheduling and execution | floe_core/interfaces/orchestrator.py | ADR-0011 |
| CatalogPlugin | Iceberg table catalog | floe_core/interfaces/catalog.py | ADR-0008 |
| StoragePlugin | Object storage (S3, GCS, Azure, MinIO) | floe_core/interfaces/storage.py | ADR-0036 |
| TelemetryBackendPlugin | OTLP telemetry backends (traces, metrics, logs) | floe_core/interfaces/telemetry.py | ADR-0035 |
| LineageBackendPlugin | OpenLineage backends (data lineage) | floe_core/interfaces/lineage.py | ADR-0035 |
| DBTPlugin | dbt compilation environment (local/fusion/cloud) | floe_core/interfaces/dbt.py | ADR-0043 |
| SemanticLayerPlugin | Business intelligence API | floe_core/interfaces/semantic_layer.py | ADR-0001 |
| IngestionPlugin | Data loading from sources | floe_core/interfaces/ingestion.py | ADR-0020 |
| DataQualityPlugin | Data quality validation | floe_core/interfaces/data_quality.py | ADR-0044 |
| SecretsPlugin | Credential management | floe_core/interfaces/secrets.py | ADR-0023 |
| IdentityPlugin | User authentication (OIDC) | floe_core/interfaces/identity.py | ADR-0024 |
Interface coverage: This page documents the public plugin ABC reference surface. See Plugin Catalog for the canonical PluginType category count and entry point groups.
Note: PolicyEnforcer and DataContract are now core modules in floe-core, not plugin interfaces. See ADR-0015 and ADR-0026.
Plugin Metadata
Section titled “Plugin Metadata”All plugins must declare metadata for registration and compatibility checking:
from dataclasses import dataclassfrom typing import Final
FLOE_PLUGIN_API_VERSION: Final[str] = "1.0"
@dataclassclass PluginMetadata: """Metadata for plugin registration and compatibility checking.""" name: str # Plugin name (e.g., "dagster") version: str # Plugin version (e.g., "1.0.0") floe_api_version: str # Required API version (e.g., "1.0") description: str # Human-readable description author: str # Author/maintainer homepage: str | None = None # Plugin homepage URL license: str | None = None # License identifierRelated Documents
Section titled “Related Documents”- Plugin Architecture - Plugin structure, discovery, and registration
- ADR-0037: Composability Model - How plugins compose together
- ADR-0008: Repository Split - Plugin architecture origins