Skip to content

CLI

daeda is the Typer-based command group that exposes every Daedalus operator surface: catalog/service inspection, the Version Protocol, materialization, the embedding store, the training pipeline, controlled serving, agent config, and the control-plane servers.

Every command and option below is transcribed verbatim from daeda ... --help. Run a command with --help at any level to see the same text inline.

bash
uv run daeda --help

Global options

bash
uv run daeda [OPTIONS] COMMAND [ARGS]...

🛸 Daedalus CLI — Feature store utilities for smoother engineering experience.

OptionDescription
--versionShow CLI version and exit.
--install-completionInstall completion for the current shell.
--show-completionShow completion for the current shell, to copy it or customize the installation.
--helpShow this message and exit.

Commands

CommandDescription
lineageShow upstream/downstream lineage for one feature view or service.
materialize-dayMaterialize one training-day partition so an agent can inspect sample output.
mcpRun the Daedalus MCP server over stdio.
serve-apiRun the Daedalus JSON-RPC control plane server.
catalogInspect the feature catalog: list views, show schema, dump lineage.
configPersist AI-agent CLI configuration to ~/.daedalus/config.toml.
devLocal dev utilities.
pipelineLoad and run YAML-defined feature pipelines.
serviceInspect feature services: list contracts, show schema, dump lineage.
materializeQuery and manage materialization metadata: list, show, gc.
registryVersion Protocol: lock, check, and diff the resolved feature schemas.
servingInspect and query materialized serving relations.
storeBuild and inspect the declared embedding stores.

catalog

Inspect the feature catalog: list views, show schema, dump lineage.

bash
uv run daeda catalog [OPTIONS] COMMAND [ARGS]...

catalog list

List feature views in the catalog with a one-line summary each.

bash
uv run daeda catalog list [OPTIONS]
OptionDefaultDescription
-d, --definitions-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
-f, --format TEXTtableOutput format: 'table' (default) or 'json'.
--helpShow this message and exit.

catalog show

Print a feature view's metadata + schema as JSON.

bash
uv run daeda catalog show [OPTIONS] NAME

Argument: name (required) — Feature view name.

OptionDefaultDescription
-d, --definitions-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--helpShow this message and exit.

catalog lineage

Dump the catalog's lineage graph as JSON or Graphviz DOT.

bash
uv run daeda catalog lineage [OPTIONS]
OptionDefaultDescription
-d, --definitions-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
-f, --format TEXTjsonOutput format: 'json' (default) or 'dot' (Graphviz).
--helpShow this message and exit.

service

Inspect feature services: list contracts, show schema, dump lineage.

bash
uv run daeda service [OPTIONS] COMMAND [ARGS]...

service materialize

Materialize a feature service's offline serving snapshot to Parquet.

bash
uv run daeda service materialize [OPTIONS] NAME

Argument: name (required) — Feature service name.

OptionDefaultDescription
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
--output-root DIRECTORYoutputDirectory where materialized Parquet snapshots and metadata.db are stored.
--repo-root DIRECTORYRoot used to resolve repo-relative feature-view source paths. Omit to preserve the catalog paths unchanged.
--run-id TEXTExplicit run identifier. Auto-generated if omitted.
--attempt INTEGER RANGE [x>=1]1Attempt number (increment when retrying the same run_id).
-f, --format TEXTtableOutput format: 'table' (default) or 'json'.
--onlinePublish the materialized snapshot to the online store.
--online-backend TEXTredisOnline store backend used with --online: 'memory' or 'redis'.
--redis-url TEXTredis://localhost:6379Redis/Valkey URL used when --online is set.
--online-prefix TEXTdaedalus:Redis key prefix used when --online is set.
--helpShow this message and exit.

service list

List feature services with a one-line summary each.

bash
uv run daeda service list [OPTIONS]
OptionDefaultDescription
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
-f, --format TEXTtableOutput format: 'table' (default) or 'json'.
--helpShow this message and exit.

service show

Print a feature service's full resolved contract as JSON (redacted).

bash
uv run daeda service show [OPTIONS] NAME

Argument: name (required) — Feature service name.

OptionDefaultDescription
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
--no-redactShow unredacted sensitive metadata (trusted local use only).
-f, --format TEXTjsonOutput format: 'json' (default).
--helpShow this message and exit.

service lineage

Dump the platform lineage graph (service → view → source).

bash
uv run daeda service lineage [OPTIONS]
OptionDefaultDescription
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
-f, --format TEXTjsonOutput format: 'json' (default) or 'dot' (Graphviz).
--helpShow this message and exit.

registry

Version Protocol: lock, check, and diff the resolved feature schemas.

bash
uv run daeda registry [OPTIONS] COMMAND [ARGS]...

registry lock

Write registry.lock.json from the current view + service definitions.

bash
uv run daeda registry lock [OPTIONS]
OptionDefaultDescription
-d, --feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
-s, --feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
-l, --lock-file PATHregistry.lock.jsonPath to registry.lock.json.
--helpShow this message and exit.

registry check

Fail (exit non-zero) on a breaking change or a missing version bump.

bash
uv run daeda registry check [OPTIONS]
OptionDefaultDescription
-d, --feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
-s, --feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
-l, --lock-file PATHregistry.lock.jsonPath to registry.lock.json.
--helpShow this message and exit.

registry diff

Show the structural diff against the lock (informational; never fails).

bash
uv run daeda registry diff [OPTIONS]
OptionDefaultDescription
-d, --feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
-s, --feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
-l, --lock-file PATHregistry.lock.jsonPath to registry.lock.json.
-f, --format TEXTtableOutput format: 'table' (default) or 'json'.
--helpShow this message and exit.

materialize

Query and manage materialization metadata: list, show, gc.

bash
uv run daeda materialize [OPTIONS] COMMAND [ARGS]...

materialize list

List materialization records, newest first.

bash
uv run daeda materialize list [OPTIONS]
OptionDefaultDescription
--output-root DIRECTORYoutputDirectory containing metadata.db and output artifacts.
-s, --service TEXTFilter records by service name.
--status TEXTFilter by status: running, succeeded, or failed.
-n, --limit INTEGER RANGE [x>=1]20Maximum records to return.
-f, --format TEXTtableOutput format: 'table' (default) or 'json'.
--helpShow this message and exit.

materialize show

Show the full materialization record(s) for a run_id.

bash
uv run daeda materialize show [OPTIONS] RUN_ID

Argument: run_id (required) — The run_id of the record to show.

OptionDefaultDescription
--output-root DIRECTORYoutputDirectory containing metadata.db and output artifacts.
-f, --format TEXTjsonOutput format: 'json' (default).
--helpShow this message and exit.

materialize gc

Garbage-collect old materialization records and optional output directories.

bash
uv run daeda materialize gc [OPTIONS]
OptionDefaultDescription
--output-root DIRECTORYoutputDirectory containing metadata.db and output artifacts.
-s, --service TEXTLimit garbage collection to this service.
--older-than TEXTPrune records older than an ISO datetime or day count (e.g. '2024-01-01T00:00:00Z' or '7d').
-k, --keep-last INTEGER RANGE [x>=0]Keep the most recent N records per service.
--delete-outputsAlso delete the output directories for pruned records.
--executeExecute the prune (default is dry-run).
--helpShow this message and exit.

pipeline

Load and run YAML-defined feature pipelines.

bash
uv run daeda pipeline [OPTIONS] COMMAND [ARGS]...

pipeline train

Canonical training entry point. Compile a feature service and run it through the operator executor as one operator DAG. Output is byte-identical to the now-deprecated daeda skeleton + daeda enrich (the executor wraps the same proven engine entry points).

--only selects a DAG sub-range, not a stage

There are no separate "skeleton" and "enrich" stages — just one operator DAG. --only source runs a contiguous sub-range of that DAG (the source-side operators that read sources in place and build the spine); --only enrich runs the complementary sub-range (the enrichment operators that append the Ray/Lance embeddings). --only sql / --only sql-arrow-udf / --only pythonic narrow to a single engine. See the Architecture Overview.

bash
uv run daeda pipeline train [OPTIONS] SERVICE

Argument: service (required) — Feature service name.

OptionDefaultDescription
--feature-views-dir PATHfeature_viewsDirectory of feature view YAML.
--feature-services-dir PATHfeature_servicesDirectory of feature service YAML.
--runtime-config-path PATHfeature_services/pixai_feed_relevance/settings.yamlTraining settings.yaml.
--aggregation-config-path PATHconfig/training/aggregations.yamlTraining aggregations.yaml.
--output-root PATHOverride the skeleton output root.
--target-date TEXTA single YYYY-MM-DD target day.
--day-workers INTEGERConcurrent target days (default config).
--only TEXT(full DAG)Run only selected engine units: source | enrich | sql | sql-arrow-udf | pythonic.
--ray-num-cpus INTEGER16Ray logical CPUs (enrich).
--helpShow this message and exit.

pipeline compile

Compile a feature service into an editable operator-pipeline YAML. The emitted DAG records each operator's declared engine (sql / sql_arrow_udf / pythonic); hand-edit <output-dir>/<service>.yaml to override. <service>.generated.yaml is the regenerated artifact.

bash
uv run daeda pipeline compile [OPTIONS] SERVICE

Argument: service (required) — Feature service name.

OptionDefaultDescription
--feature-views-dir PATHfeature_viewsDirectory of feature view YAML.
--feature-services-dir PATHfeature_servicesDirectory of feature service YAML.
--runtime-config-path PATHfeature_services/pixai_feed_relevance/settings.yamlTraining settings.yaml.
--aggregation-config-path PATHconfig/training/aggregations.yamlTraining aggregations.yaml.
--output-dir PATHconfig/pipelinesWhere to write the generated pipeline YAML.
--write / --no-writewriteWrite the YAML (else stdout only).
--helpShow this message and exit.

pipeline list

List YAML-defined pipelines in pipelines-dir.

bash
uv run daeda pipeline list [OPTIONS]
OptionDefaultDescription
-d, --pipelines-dir DIRECTORYconfig/pipelinesDirectory of YAML pipeline definitions.
-f, --format TEXTtableOutput format: 'table' (default) or 'json'.
--helpShow this message and exit.

pipeline show

Print a pipeline's definition as JSON.

bash
uv run daeda pipeline show [OPTIONS] NAME

Argument: name (required) — Pipeline name.

OptionDefaultDescription
-d, --pipelines-dir DIRECTORYconfig/pipelinesDirectory of YAML pipeline definitions.
--helpShow this message and exit.

pipeline run

Execute a pipeline end-to-end (Source → Ops → Sink).

bash
uv run daeda pipeline run [OPTIONS] NAME

Argument: name (required) — Pipeline name.

OptionDefaultDescription
-d, --pipelines-dir DIRECTORYconfig/pipelinesDirectory of YAML pipeline definitions.
--no-sinkSkip the sink write step. Useful for dry-runs and previewing the pipeline output without touching the destination.
--helpShow this message and exit.

serving

Inspect and query materialized serving relations.

bash
uv run daeda serving [OPTIONS] COMMAND [ARGS]...

serving health

Print the backend health status as JSON.

bash
uv run daeda serving health [OPTIONS]
OptionDefaultDescription
--output-root PATHoutputRoot directory containing materialized snapshots.
--backend TEXTlocalServing backend to use (local or quack).
--helpShow this message and exit.

serving relations

List the approved relation names for a service.

bash
uv run daeda serving relations [OPTIONS] SERVICE

Argument: service (required) — Service name.

OptionDefaultDescription
--output-root PATHoutputRoot directory containing materialized snapshots.
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
--helpShow this message and exit.

serving schema

Print the Arrow schema (field names + types) for a relation as JSON.

bash
uv run daeda serving schema [OPTIONS] SERVICE

Argument: service (required) — Service name.

OptionDefaultDescription
-r, --relation TEXT (required)Relation name to inspect.
--output-root PATHoutputRoot directory containing materialized snapshots.
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
--backend TEXTlocalServing backend to use (local or quack).
--helpShow this message and exit.

serving scan

Scan a relation and print rows as JSON.

bash
uv run daeda serving scan [OPTIONS] SERVICE

Argument: service (required) — Service name.

OptionDefaultDescription
-r, --relation TEXT (required)Relation name to scan.
--output-root PATHoutputRoot directory containing materialized snapshots.
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
--backend TEXTlocalServing backend to use (local or quack).
-n, --limit INTEGERMaximum rows to return.
-c, --columns TEXTComma-separated column names to include.
--helpShow this message and exit.

serving serve

Start a long-running serving daemon for a service. Blocks until SIGINT or SIGTERM, then shuts down cleanly.

bash
uv run daeda serving serve [OPTIONS] SERVICE_NAME

Argument: service_name (required) — Service name.

OptionDefaultDescription
--backend TEXTquackServing backend to use (local or quack).
--host TEXT127.0.0.1Host to bind the Quack server to.
--port INTEGER RANGE [0<=x<=65535]0Port to bind the Quack server to (0 = auto-pick).
--token TEXTBearer token for Quack auth. If omitted, Quack generates one.
--output-root PATHoutputRoot directory containing materialized snapshots.
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--feature-services-dir DIRECTORYfeature_servicesDirectory containing YAML feature service definitions.
--helpShow this message and exit.

config

Persist AI-agent CLI configuration to ~/.daedalus/config.toml (override path via $DAEDALUS_CONFIG).

bash
uv run daeda config [OPTIONS] COMMAND [ARGS]...

config init

Write the default agent config to disk.

bash
uv run daeda config init [OPTIONS]
OptionDefaultDescription
--forceOverwrite an existing config file with defaults.
--helpShow this message and exit.

config show

Print the effective agent CLI config.

bash
uv run daeda config show [OPTIONS]
OptionDefaultDescription
-f, --format TEXTtomlOutput format: 'toml' (default) or 'json'.
--helpShow this message and exit.

config set

Persist one config key/value pair.

bash
uv run daeda config set [OPTIONS] KEY VALUE

Arguments: key (required) — Config key to update; value (required) — String value to persist.

OptionDefaultDescription
--helpShow this message and exit.

config path

Print the config file path.

bash
uv run daeda config path [OPTIONS]
OptionDefaultDescription
--helpShow this message and exit.

dev

Local dev utilities.

bash
uv run daeda dev [OPTIONS] COMMAND [ARGS]...

dev seed

Seed synthetic parquet for the catalog's declared source paths.

bash
uv run daeda dev seed [OPTIONS]
OptionDefaultDescription
--data-root DIRECTORY (required)Root directory where catalog source paths will be seeded.
--rows INTEGER RANGE [x>=0]1000Rows to write per unique source.
--seed INTEGER42Base RNG seed.
--id-pool INTEGER RANGE [x>=1]200Shared ID pool size per entity.
--feature-views-dir DIRECTORYfeature_viewsDirectory containing YAML feature view definitions.
--helpShow this message and exit.

store

Build and inspect the declared embedding stores.

bash
uv run daeda store [OPTIONS] COMMAND [ARGS]...

The Lance embedding pool is the one artifact Daedalus cannot read in place — it is local-path only and needs a filesystem with atomic rename. See Local Lance embedding store for the full setup, including the download step that produces the source parquet.

store list

List the declared embedding stores and whether each is built.

bash
uv run daeda store list [OPTIONS]
OptionDefaultDescription
--aggregation-config FILEconfig/training/aggregations.yamlConfig declaring embedding_stores.
--helpShow this message and exit.

store build

Build a declared Lance store from pre-downloaded hive-partitioned parquet.

bash
uv run daeda store build [OPTIONS] NAME
OptionDefaultDescription
NAME (required)Name of an embedding_stores entry to build.
--source DIRECTORYdeclared source_parquetRoot of the pre-downloaded hive-partitioned vectors.
--store-path PATHdeclared pathBuild somewhere other than the declared path.
--source-filter TEXTdeclared source_filterSQL predicate scoping the pool; '' builds every partition.
--rebuildoffDelete an existing store first. Without it, an existing store is an error.
--duckdb-threads INTEGER RANGE [x>=1]16DuckDB threads for the streaming read.
--duckdb-memory-limit TEXT32GiBDuckDB memory_limit for the streaming read.
--allow-network-filesystemoffSkip the filesystem check. Lance needs atomic rename; a store on GPFS/NFS corrupts under concurrent actors.
--aggregation-config FILEconfig/training/aggregations.yamlConfig declaring embedding_stores.
--helpShow this message and exit.

lineage

Show upstream/downstream lineage for one feature view or service.

bash
uv run daeda lineage [OPTIONS] NAME

Argument: name (required) — Feature view or service name.

OptionDefaultDescription
-f, --format TEXTtableOutput format: 'table' (default) or 'json'.
--helpShow this message and exit.

materialize-day

Materialize one training-day partition so an agent can inspect sample output.

bash
uv run daeda materialize-day [OPTIONS] SERVICE DATE

Arguments: service (required) — Training service name; date (required) — Partition date (YYYY-MM-DD).

OptionDefaultDescription
--helpShow this message and exit.

serve-api

Run the Daedalus JSON-RPC control plane server.

bash
uv run daeda serve-api [OPTIONS]
OptionDefaultDescription
--host TEXT127.0.0.1Host interface to bind the FastAPI server to.
--port INTEGER8000TCP port to bind the FastAPI server to.
--helpShow this message and exit.

mcp

Run the Daedalus MCP server over stdio.

bash
uv run daeda mcp [OPTIONS]
OptionDefaultDescription
--helpShow this message and exit.