Skip to content
GitLab

Step 2: Deploy

Run validation to catch errors before deploying:

Terminal window
akili validate customer-orders/

Expected output:

Validating customer-orders/...
product.yaml OK
inputs.yaml OK
output.yaml OK
serving.yaml OK
quality.yaml OK
compute.yaml OK
Cross-references OK
RESULT: 7/7 checks passed, 0 errors, 0 warnings

If validation fails, fix the reported issues. Common mistakes:

  • Quality check references a column not in output.yaml
  • Missing required field in product.yaml (description must be at least 10 chars)
  • Classification too low for the inputs (high-water mark violation)

For faster iteration, use the fast mode:

Terminal window
akili validate --fast customer-orders/

Register the product by submitting all manifest files:

Terminal window
akili product create customer-orders/

This uploads the 6 YAML files, runs server-side validation, and stores the product in registered status.

Expected output:

Product registered successfully.
Name: customer-orders
Version: 1.0.0
Domain: commerce
Status: registered
ID: 019502a4-3b7c-7d8e-9f01-234567890abc

Note: If the commerce domain does not exist for your tenant, it is auto-created during registration. No separate “create domain” step is needed.


Deploy the product to the execution engine. This triggers code generation, provisions resources, and starts sensors.

Terminal window
akili deploy customer-orders/

The platform:

  1. Validates classification propagation (output must be at least as classified as the most classified input)
  2. Generates asset definitions from your manifests
  3. Registers the product in all serving stores (lookup store, analytics engine catalog, real-time cache keyspace)
  4. Creates sensors to watch for upstream materializations
  5. Syncs metadata to the data catalog (lineage, ownership, classification)

Expected output:

Deploying customer-orders v1.0.0...
Classification check PASS (internal >= internal)
Code generation OK
Serving provisioned lookup, analytics, realtime
Sensors created watching: cleaned-customers, cleaned-orders
Catalog synced data catalog updated
Status: deployed

Since the schedule type is event, the product runs automatically when both inputs are materialized. To trigger manually:

Terminal window
akili run trigger customer-orders

Or via the API:

Terminal window
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
https://api.akili.example.com/api/v1/products/customer-orders/run