Docs

Project File Format

Reference for the amfelt.yaml project configuration file (PCF), generated from its released JSON schema.

Overview  

The Project Configuration File (PCF, amfelt.yaml) is the declarative source of truth for a project: its sources, targets, jobs, and plugins. This reference is generated directly from the released configuration schema, so it always matches the shipped format.

Full Schema Specification  

amfeltlabs-core-v3.44.10.json  

Example  

A complete amfelt.yaml skeleton. Every section is optional except the kind/apiVersion header and the project identity. The JSON schema below is the exhaustive reference; this example is the quickest way in.

PCF format version: v0.0.0

# A complete amfelt.yaml. Only the header (kind, apiVersion) and project
# identity (id, name, version, status) are required; every section is optional.
kind: amfeltProject
apiVersion: v0.0.0
id: 6aeafdc1-ed62-4c8f-bf0a-da1061c98cdb
name: acme-analytics
version: "1.0.0"
status: production
description:
  purpose: Load the CRM database into the data platform.
  usage: Deploy with `amfelt deploy`.
createdAt: "2026-07-05T10:00:00Z"
driftPolicy:      # recorded today; enforcing it on a run is on the roadmap
  onMinor: adapt
  onMajor: stop
sources:
  - name: crm
    plugin: postgres
    secretRef: infisical/crm-creds   # vault reference for credentials
    server:
      type: postgres
      host: db.acme.io
      port: 5432
      database: crm
    # objects are discovered by glob (see the job's select); a source may
    # instead pin an explicit ODCS contract file with `contract: <path>`.
targets:
  - name: warehouse
    plugin: duckdb
    server:
      type: duckdb
      database: /data/warehouse.duckdb   # the agent creates the file
    maxConnections: 1   # DuckDB is single-writer
jobs:
  - name: crm-sync
    source: crm
    target: warehouse
    layer: staging
    select:
      include: ["public.*"]
      exclude: ["public.audit_*"]
      objects:
        public.orders:
          tableType: transaction
          historyMode: scd2
          columns:
            expose:
              include: ["order_id", "total"]
            config:
              total:
                transform: "value / 100"   # "value" = the source column
                target: totalDollars
    runs:
      - strategy: full
        schedule: "0 * * * *"   # hourly (cron)
plugins:
  source:
    - plugin: postgres
      version: 1.2.3
      registry: local
  target:
    - plugin: duckdb
      version: 2.0.0
      registry: local

Last updated on October 10, 2026