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.
uv run daeda --helpGlobal options
uv run daeda [OPTIONS] COMMAND [ARGS]...🛸 Daedalus CLI — Feature store utilities for smoother engineering experience.
| Option | Description |
|---|---|
--version | Show CLI version and exit. |
--install-completion | Install completion for the current shell. |
--show-completion | Show completion for the current shell, to copy it or customize the installation. |
--help | Show this message and exit. |
Commands
| Command | Description |
|---|---|
lineage | Show upstream/downstream lineage for one feature view or service. |
materialize-day | Materialize one training-day partition so an agent can inspect sample output. |
mcp | Run the Daedalus MCP server over stdio. |
serve-api | Run the Daedalus JSON-RPC control plane server. |
catalog | Inspect the feature catalog: list views, show schema, dump lineage. |
config | Persist AI-agent CLI configuration to ~/.daedalus/config.toml. |
dev | Local dev utilities. |
pipeline | Load and run YAML-defined feature pipelines. |
service | Inspect feature services: list contracts, show schema, dump lineage. |
materialize | Query and manage materialization metadata: list, show, gc. |
registry | Version Protocol: lock, check, and diff the resolved feature schemas. |
serving | Inspect and query materialized serving relations. |
store | Build and inspect the declared embedding stores. |
catalog
Inspect the feature catalog: list views, show schema, dump lineage.
uv run daeda catalog [OPTIONS] COMMAND [ARGS]...catalog list
List feature views in the catalog with a one-line summary each.
uv run daeda catalog list [OPTIONS]| Option | Default | Description |
|---|---|---|
-d, --definitions-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
-f, --format TEXT | table | Output format: 'table' (default) or 'json'. |
--help | Show this message and exit. |
catalog show
Print a feature view's metadata + schema as JSON.
uv run daeda catalog show [OPTIONS] NAMEArgument: name (required) — Feature view name.
| Option | Default | Description |
|---|---|---|
-d, --definitions-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--help | Show this message and exit. |
catalog lineage
Dump the catalog's lineage graph as JSON or Graphviz DOT.
uv run daeda catalog lineage [OPTIONS]| Option | Default | Description |
|---|---|---|
-d, --definitions-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
-f, --format TEXT | json | Output format: 'json' (default) or 'dot' (Graphviz). |
--help | Show this message and exit. |
service
Inspect feature services: list contracts, show schema, dump lineage.
uv run daeda service [OPTIONS] COMMAND [ARGS]...service materialize
Materialize a feature service's offline serving snapshot to Parquet.
uv run daeda service materialize [OPTIONS] NAMEArgument: name (required) — Feature service name.
| Option | Default | Description |
|---|---|---|
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
--output-root DIRECTORY | output | Directory where materialized Parquet snapshots and metadata.db are stored. |
--repo-root DIRECTORY | Root used to resolve repo-relative feature-view source paths. Omit to preserve the catalog paths unchanged. | |
--run-id TEXT | Explicit run identifier. Auto-generated if omitted. | |
--attempt INTEGER RANGE [x>=1] | 1 | Attempt number (increment when retrying the same run_id). |
-f, --format TEXT | table | Output format: 'table' (default) or 'json'. |
--online | Publish the materialized snapshot to the online store. | |
--online-backend TEXT | redis | Online store backend used with --online: 'memory' or 'redis'. |
--redis-url TEXT | redis://localhost:6379 | Redis/Valkey URL used when --online is set. |
--online-prefix TEXT | daedalus: | Redis key prefix used when --online is set. |
--help | Show this message and exit. |
service list
List feature services with a one-line summary each.
uv run daeda service list [OPTIONS]| Option | Default | Description |
|---|---|---|
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
-f, --format TEXT | table | Output format: 'table' (default) or 'json'. |
--help | Show this message and exit. |
service show
Print a feature service's full resolved contract as JSON (redacted).
uv run daeda service show [OPTIONS] NAMEArgument: name (required) — Feature service name.
| Option | Default | Description |
|---|---|---|
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
--no-redact | Show unredacted sensitive metadata (trusted local use only). | |
-f, --format TEXT | json | Output format: 'json' (default). |
--help | Show this message and exit. |
service lineage
Dump the platform lineage graph (service → view → source).
uv run daeda service lineage [OPTIONS]| Option | Default | Description |
|---|---|---|
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
-f, --format TEXT | json | Output format: 'json' (default) or 'dot' (Graphviz). |
--help | Show this message and exit. |
registry
Version Protocol: lock, check, and diff the resolved feature schemas.
uv run daeda registry [OPTIONS] COMMAND [ARGS]...registry lock
Write registry.lock.json from the current view + service definitions.
uv run daeda registry lock [OPTIONS]| Option | Default | Description |
|---|---|---|
-d, --feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
-s, --feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
-l, --lock-file PATH | registry.lock.json | Path to registry.lock.json. |
--help | Show this message and exit. |
registry check
Fail (exit non-zero) on a breaking change or a missing version bump.
uv run daeda registry check [OPTIONS]| Option | Default | Description |
|---|---|---|
-d, --feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
-s, --feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
-l, --lock-file PATH | registry.lock.json | Path to registry.lock.json. |
--help | Show this message and exit. |
registry diff
Show the structural diff against the lock (informational; never fails).
uv run daeda registry diff [OPTIONS]| Option | Default | Description |
|---|---|---|
-d, --feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
-s, --feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
-l, --lock-file PATH | registry.lock.json | Path to registry.lock.json. |
-f, --format TEXT | table | Output format: 'table' (default) or 'json'. |
--help | Show this message and exit. |
materialize
Query and manage materialization metadata: list, show, gc.
uv run daeda materialize [OPTIONS] COMMAND [ARGS]...materialize list
List materialization records, newest first.
uv run daeda materialize list [OPTIONS]| Option | Default | Description |
|---|---|---|
--output-root DIRECTORY | output | Directory containing metadata.db and output artifacts. |
-s, --service TEXT | Filter records by service name. | |
--status TEXT | Filter by status: running, succeeded, or failed. | |
-n, --limit INTEGER RANGE [x>=1] | 20 | Maximum records to return. |
-f, --format TEXT | table | Output format: 'table' (default) or 'json'. |
--help | Show this message and exit. |
materialize show
Show the full materialization record(s) for a run_id.
uv run daeda materialize show [OPTIONS] RUN_IDArgument: run_id (required) — The run_id of the record to show.
| Option | Default | Description |
|---|---|---|
--output-root DIRECTORY | output | Directory containing metadata.db and output artifacts. |
-f, --format TEXT | json | Output format: 'json' (default). |
--help | Show this message and exit. |
materialize gc
Garbage-collect old materialization records and optional output directories.
uv run daeda materialize gc [OPTIONS]| Option | Default | Description |
|---|---|---|
--output-root DIRECTORY | output | Directory containing metadata.db and output artifacts. |
-s, --service TEXT | Limit garbage collection to this service. | |
--older-than TEXT | Prune 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-outputs | Also delete the output directories for pruned records. | |
--execute | Execute the prune (default is dry-run). | |
--help | Show this message and exit. |
pipeline
Load and run YAML-defined feature pipelines.
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.
uv run daeda pipeline train [OPTIONS] SERVICEArgument: service (required) — Feature service name.
| Option | Default | Description |
|---|---|---|
--feature-views-dir PATH | feature_views | Directory of feature view YAML. |
--feature-services-dir PATH | feature_services | Directory of feature service YAML. |
--runtime-config-path PATH | feature_services/pixai_feed_relevance/settings.yaml | Training settings.yaml. |
--aggregation-config-path PATH | config/training/aggregations.yaml | Training aggregations.yaml. |
--output-root PATH | Override the skeleton output root. | |
--target-date TEXT | A single YYYY-MM-DD target day. | |
--day-workers INTEGER | Concurrent target days (default config). | |
--only TEXT | (full DAG) | Run only selected engine units: source | enrich | sql | sql-arrow-udf | pythonic. |
--ray-num-cpus INTEGER | 16 | Ray logical CPUs (enrich). |
--help | Show 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.
uv run daeda pipeline compile [OPTIONS] SERVICEArgument: service (required) — Feature service name.
| Option | Default | Description |
|---|---|---|
--feature-views-dir PATH | feature_views | Directory of feature view YAML. |
--feature-services-dir PATH | feature_services | Directory of feature service YAML. |
--runtime-config-path PATH | feature_services/pixai_feed_relevance/settings.yaml | Training settings.yaml. |
--aggregation-config-path PATH | config/training/aggregations.yaml | Training aggregations.yaml. |
--output-dir PATH | config/pipelines | Where to write the generated pipeline YAML. |
--write / --no-write | write | Write the YAML (else stdout only). |
--help | Show this message and exit. |
pipeline list
List YAML-defined pipelines in pipelines-dir.
uv run daeda pipeline list [OPTIONS]| Option | Default | Description |
|---|---|---|
-d, --pipelines-dir DIRECTORY | config/pipelines | Directory of YAML pipeline definitions. |
-f, --format TEXT | table | Output format: 'table' (default) or 'json'. |
--help | Show this message and exit. |
pipeline show
Print a pipeline's definition as JSON.
uv run daeda pipeline show [OPTIONS] NAMEArgument: name (required) — Pipeline name.
| Option | Default | Description |
|---|---|---|
-d, --pipelines-dir DIRECTORY | config/pipelines | Directory of YAML pipeline definitions. |
--help | Show this message and exit. |
pipeline run
Execute a pipeline end-to-end (Source → Ops → Sink).
uv run daeda pipeline run [OPTIONS] NAMEArgument: name (required) — Pipeline name.
| Option | Default | Description |
|---|---|---|
-d, --pipelines-dir DIRECTORY | config/pipelines | Directory of YAML pipeline definitions. |
--no-sink | Skip the sink write step. Useful for dry-runs and previewing the pipeline output without touching the destination. | |
--help | Show this message and exit. |
serving
Inspect and query materialized serving relations.
uv run daeda serving [OPTIONS] COMMAND [ARGS]...serving health
Print the backend health status as JSON.
uv run daeda serving health [OPTIONS]| Option | Default | Description |
|---|---|---|
--output-root PATH | output | Root directory containing materialized snapshots. |
--backend TEXT | local | Serving backend to use (local or quack). |
--help | Show this message and exit. |
serving relations
List the approved relation names for a service.
uv run daeda serving relations [OPTIONS] SERVICEArgument: service (required) — Service name.
| Option | Default | Description |
|---|---|---|
--output-root PATH | output | Root directory containing materialized snapshots. |
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
--help | Show this message and exit. |
serving schema
Print the Arrow schema (field names + types) for a relation as JSON.
uv run daeda serving schema [OPTIONS] SERVICEArgument: service (required) — Service name.
| Option | Default | Description |
|---|---|---|
-r, --relation TEXT (required) | Relation name to inspect. | |
--output-root PATH | output | Root directory containing materialized snapshots. |
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
--backend TEXT | local | Serving backend to use (local or quack). |
--help | Show this message and exit. |
serving scan
Scan a relation and print rows as JSON.
uv run daeda serving scan [OPTIONS] SERVICEArgument: service (required) — Service name.
| Option | Default | Description |
|---|---|---|
-r, --relation TEXT (required) | Relation name to scan. | |
--output-root PATH | output | Root directory containing materialized snapshots. |
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
--backend TEXT | local | Serving backend to use (local or quack). |
-n, --limit INTEGER | Maximum rows to return. | |
-c, --columns TEXT | Comma-separated column names to include. | |
--help | Show this message and exit. |
serving serve
Start a long-running serving daemon for a service. Blocks until SIGINT or SIGTERM, then shuts down cleanly.
uv run daeda serving serve [OPTIONS] SERVICE_NAMEArgument: service_name (required) — Service name.
| Option | Default | Description |
|---|---|---|
--backend TEXT | quack | Serving backend to use (local or quack). |
--host TEXT | 127.0.0.1 | Host to bind the Quack server to. |
--port INTEGER RANGE [0<=x<=65535] | 0 | Port to bind the Quack server to (0 = auto-pick). |
--token TEXT | Bearer token for Quack auth. If omitted, Quack generates one. | |
--output-root PATH | output | Root directory containing materialized snapshots. |
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--feature-services-dir DIRECTORY | feature_services | Directory containing YAML feature service definitions. |
--help | Show this message and exit. |
config
Persist AI-agent CLI configuration to ~/.daedalus/config.toml (override path via $DAEDALUS_CONFIG).
uv run daeda config [OPTIONS] COMMAND [ARGS]...config init
Write the default agent config to disk.
uv run daeda config init [OPTIONS]| Option | Default | Description |
|---|---|---|
--force | Overwrite an existing config file with defaults. | |
--help | Show this message and exit. |
config show
Print the effective agent CLI config.
uv run daeda config show [OPTIONS]| Option | Default | Description |
|---|---|---|
-f, --format TEXT | toml | Output format: 'toml' (default) or 'json'. |
--help | Show this message and exit. |
config set
Persist one config key/value pair.
uv run daeda config set [OPTIONS] KEY VALUEArguments: key (required) — Config key to update; value (required) — String value to persist.
| Option | Default | Description |
|---|---|---|
--help | Show this message and exit. |
config path
Print the config file path.
uv run daeda config path [OPTIONS]| Option | Default | Description |
|---|---|---|
--help | Show this message and exit. |
dev
Local dev utilities.
uv run daeda dev [OPTIONS] COMMAND [ARGS]...dev seed
Seed synthetic parquet for the catalog's declared source paths.
uv run daeda dev seed [OPTIONS]| Option | Default | Description |
|---|---|---|
--data-root DIRECTORY (required) | Root directory where catalog source paths will be seeded. | |
--rows INTEGER RANGE [x>=0] | 1000 | Rows to write per unique source. |
--seed INTEGER | 42 | Base RNG seed. |
--id-pool INTEGER RANGE [x>=1] | 200 | Shared ID pool size per entity. |
--feature-views-dir DIRECTORY | feature_views | Directory containing YAML feature view definitions. |
--help | Show this message and exit. |
store
Build and inspect the declared embedding stores.
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.
uv run daeda store list [OPTIONS]| Option | Default | Description |
|---|---|---|
--aggregation-config FILE | config/training/aggregations.yaml | Config declaring embedding_stores. |
--help | Show this message and exit. |
store build
Build a declared Lance store from pre-downloaded hive-partitioned parquet.
uv run daeda store build [OPTIONS] NAME| Option | Default | Description |
|---|---|---|
NAME (required) | Name of an embedding_stores entry to build. | |
--source DIRECTORY | declared source_parquet | Root of the pre-downloaded hive-partitioned vectors. |
--store-path PATH | declared path | Build somewhere other than the declared path. |
--source-filter TEXT | declared source_filter | SQL predicate scoping the pool; '' builds every partition. |
--rebuild | off | Delete an existing store first. Without it, an existing store is an error. |
--duckdb-threads INTEGER RANGE [x>=1] | 16 | DuckDB threads for the streaming read. |
--duckdb-memory-limit TEXT | 32GiB | DuckDB memory_limit for the streaming read. |
--allow-network-filesystem | off | Skip the filesystem check. Lance needs atomic rename; a store on GPFS/NFS corrupts under concurrent actors. |
--aggregation-config FILE | config/training/aggregations.yaml | Config declaring embedding_stores. |
--help | Show this message and exit. |
lineage
Show upstream/downstream lineage for one feature view or service.
uv run daeda lineage [OPTIONS] NAMEArgument: name (required) — Feature view or service name.
| Option | Default | Description |
|---|---|---|
-f, --format TEXT | table | Output format: 'table' (default) or 'json'. |
--help | Show this message and exit. |
materialize-day
Materialize one training-day partition so an agent can inspect sample output.
uv run daeda materialize-day [OPTIONS] SERVICE DATEArguments: service (required) — Training service name; date (required) — Partition date (YYYY-MM-DD).
| Option | Default | Description |
|---|---|---|
--help | Show this message and exit. |
serve-api
Run the Daedalus JSON-RPC control plane server.
uv run daeda serve-api [OPTIONS]| Option | Default | Description |
|---|---|---|
--host TEXT | 127.0.0.1 | Host interface to bind the FastAPI server to. |
--port INTEGER | 8000 | TCP port to bind the FastAPI server to. |
--help | Show this message and exit. |
mcp
Run the Daedalus MCP server over stdio.
uv run daeda mcp [OPTIONS]| Option | Default | Description |
|---|---|---|
--help | Show this message and exit. |