Skip to main content
DocumentationCLI overview
Headless CLI

CLI overview

Run Aly from your terminal for quick fixes, repeatable scripts, and CI jobs.

aly-store-cli — a thin client over MCP or direct HTTP for scripts, CI jobs, and humans who prefer typing.

The Aly CLI (aly-store-cli) is a thin client over the same surface as MCP — sites, products, orders, customers, webhooks. It's designed for scripts, CI jobs, and humans who'd rather type than click.

At a glance

Binaryaly-store-cli (Bun script in-repo)
TransportsMCP JSON-RPC over HTTP (default) or direct HTTP to Convex + Next.js (--direct)
AuthAPI key via env var ALY_API_KEY or --api-key
OutputHuman-readable by default; --json for machine consumption

Two transports

  • MCP mode (default) — POSTs JSON-RPC to /api/mcp. Identical semantics to Claude Desktop and Cursor. Use when you want a single audit trail across human, agent, and CLI.
  • Direct mode (--direct) — talks to Convex and Next.js API routes directly. Faster on big iteration loops and easier to script. Recommended for CI.
bash
# Both forms work:aly-store-cli sites listaly-store-cli --direct sites list

Quick taste

bash
# List sites in the workspacealy-store-cli sites list # Show a single product as JSONaly-store-cli products get prod_abc --json # Add stock to a variantaly-store-cli variants update var_1 --stock 50 # Mark an order shippedaly-store-cli orders fulfill ord_72...4b \  --carrier USPS \  --tracking 9400111202555582846137 # List recent unfulfilled ordersaly-store-cli orders list --status pending --limit 25 --json

Sensitive arg redaction

The CLI never echoes secrets to stdout or your shell history file. Any flag matching --api-key, --token, --secret, --password, or --client-secret is replaced with *** in the meta output. Pass them via env vars when running in CI.

Treat API keys like SSH keys
Don't commit them. Don't paste them. Store them in a secrets manager (1Password, Doppler, GitHub Actions secrets) and inject at runtime.

Next steps

Updated

Was this page helpful?