Skip to main content

Shaped CLI

A reference for the Shaped command line interface, focused on the most common workflows.

Install

The CLI is a Python package. Use pip to install it:

pip install shaped

Authentication and configuration

Use shaped init to connect the CLI to your Shaped account.

shaped init --api-key YOUR_API_KEY

Shell completion and help

To make the CLI easier to use:

  • Install shell completion for your current shell:

    shaped --install-completion
  • Preview completion script without installing:

    shaped --show-completion
  • Get help for any command:

    shaped --help
    shaped create-engine --help
    shaped query --help

These commands show the full list of options and flags if you need more detail than this reference.

Table and data management

Shaped stores your data in tables. The typical workflow is:

  1. Create a table for your domain data.
  2. Insert data from a file (CSV / JSONL).
  3. Connect the table in your engine’s data block.

These commands mirror the table setup you see in the Quickstart and Hybrid Search docs.

Create a table from a data file

Create a table and immediately load data from a local file:

shaped create-table-from-uri \
--name pixar_movies \
--uri ./data/pixar_movies.csv

Required flags

  • --name TABLE_NAME: Name of the table in Shaped (e.g. pixar_movies).
  • --uri PATH_OR_URI: Local file path or remote URI of the data file.

Create a table with an explicit schema

If you want to control the schema (like the CUSTOM schemas in the examples), use create-table with a schema file:

shaped create-table --config table.yaml

Required flags

  • --config PATH: Path to a table config file that defines schema_type, name, and column_schema.

Insert data into an existing table

Insert rows from a file into an existing table:

shaped table-insert \
--name pixar_movies \
--file ./data/pixar_movies.csv \
--type csv

Required flags

  • --name TABLE_NAME: Existing table name.
  • --uri PATH_OR_URI: File containing rows (CSV / JSONL).

This is the CLI equivalent of using client.insert_table_rows("pixar_movies", records) in the Python examples.

Inspect, list, and delete tables

List all tables:

shaped list-tables

View configuration for a single table:

shaped view-table --name pixar_movies

Delete a table:

shaped delete-table --name pixar_movies

Required flags

  • --name TABLE_NAME: Table to inspect or delete.

Seed demo tables

Like engines, you can seed demo tables:

shaped table-seeds
shaped table-seed --name NAME_FROM_LIST

Required flags

  • --name SEED_NAME: One of the names shown in shaped table-seeds.

Engine management

Engines define how your data is indexed, trained, and served.

Create an engine from a config file

Use create-engine to create a new engine from a YAML configuration:

shaped create-engine --config engine.yaml

Required flags

  • --config PATH: Path to an engine config file (see engine-recipes for examples of data, index, training, deployment, and queries blocks).

Learn more about configuring engines - Engine basics

Update an existing engine

Use update-engine when you change your engine config (for example, adding hybrid search or a new embedding):

shaped update-engine --name hybrid_search --config engine.yaml

Required flags

  • --name ENGINE_NAME: The name of the engine to update (e.g. semantic_search, hybrid_search).
  • --config PATH: Updated engine config file.

Inspect and list engines

List all engines in your account:

shaped list-engines

View a specific engine’s configuration (useful to compare to examples in engine-recipes):

shaped view-engine --name hybrid_search

Required flags

  • --name ENGINE_NAME: Engine to inspect.

Delete an engine you no longer need:

shaped delete-engine --name hybrid_search

Required flags

  • --name ENGINE_NAME: Engine to delete.

Seed demo engines

Use a pre-built demo engine to explore Shaped quickly:

shaped engine-seeds
shaped engine-seed --name NAME_FROM_LIST

Required flags

  • --name SEED_NAME: One of the names shown in shaped engine-seeds.

Views

Views let you define reusable SQL transformations over existing tables. They are handy when you want to:

  • Normalize IDs to item_id / user_id.
  • Filter or join data before the engine sees it.

Common commands:

shaped create-view --config view.yaml
shaped list-views
shaped view-view --name my_view
shaped update-view --name my_view --config view.yaml
shaped delete-view --name my_view

Required flags

  • --config PATH: For create-view / update-view.
  • --name VIEW_NAME: For view-view, update-view, and delete-view.

Your engine data block can then point to a view instead of a raw table (see the query-based examples in engine-recipes).

Running queries with the CLI

Once your engine is created and indexed, you can run ad-hoc and saved queries directly from the CLI.

Ad-hoc ShapedQL queries

To experiment with queries like the ShapedQL examples in the Query Reference, use query:

shaped query \
--engine hybrid_search \
--query-file query.sql \
--params '{"query": "Incredibles"}'

Required flags

  • --engine ENGINE_NAME: Engine to query (e.g. hybrid_search).
  • --query-file PATH: File containing a ShapedQL query (see shapedql docs for examples).

Common optional flags

  • --params JSON: JSON object of parameter values (e.g. {"query": "Incredibles"}), matching $parameters.* in your query.

Execute saved queries

If your engine config defines saved queries in the queries block (for example, search_products or personalized_feed from the engine recipes), you can execute them by name:

shaped execute-saved-query \
--engine hybrid_search \
--name search_products \
--params '{"query_text": "Incredibles"}'

Required flags

  • --engine ENGINE_NAME: Engine that owns the saved query.
  • --name QUERY_NAME: Saved query name from the engine config.

Common optional flags

  • --params JSON: Parameters expected by the query (e.g. query_text, user_id, item_id).

List all saved queries on an engine:

shaped list-saved-queries --engine hybrid_search

View the definition of a saved query (helpful when matching it with the queries block in YAML):

shaped view-saved-query \
--engine hybrid_search \
--name search_products

Required flags

  • --engine ENGINE_NAME
  • --name QUERY_NAME