ShipEasy

CLI

The `shipeasy` command — manage flags, experiments, keys, translations, and the MCP server from your terminal or CI.

Production readyOn this page · 8 min readUpdated · May 3, 2026Works with · macOS · Linux · Windows · Docker · CI

The CLI is a thin wrapper over the same Server Actions the dashboard uses. Anything you can do in the UI works from a terminal, and every read command supports --json so you can pipe results into scripts.

Install

$npm install -g @shipeasy/cli
shipeasy --version
shipeasy --help

See Authenticate for the login flow.

At a glance

zsh
$

shipeasy whoami

Project: acme Email: you@example.com Worker URL: https://edge.shipeasy.dev{"\n"} App URL: https://shipeasy.ai

shipeasy gate list
shipeasy value list
shipeasy experiments list
shipeasy keys list
shipeasy i18n scan ./src
shipeasy mcp install

Add --json to any read command for machine-readable output. Add --project <id> to override the active project for a single call.

Global flags

Field
Type
Description
--project
string ?
Override the active project for this call. Wins over SHIPEASY_PROJECT.
--env
"dev" | "staging" | "prod" ?
Target environment. Defaults to prod. Only relevant for commands that read or write env-scoped state.
--json
boolean ?
Emit machine-readable JSON to stdout. Human-readable progress goes to stderr — pipes work the way you'd expect.
--quiet
boolean ?
Suppress progress output. Errors still go to stderr.
--no-color
boolean ?
Disable ANSI colour. Also honoured via NO_COLOR=1.

Auth

CommandDescription
shipeasy loginPKCE browser flow. Saves credentials to ~/.shipeasy/credentials.
shipeasy logoutWipe credentials. Add --revoke to also invalidate the refresh token server-side.
shipeasy whoamiShow the active project, email, and endpoint URLs.
shipeasy projects listList every project you have access to.
shipeasy projects use <id>Set the active project.

Gates (boolean flags)

CommandDescription
shipeasy gate listList every gate in the project. --json for raw output.
shipeasy gate create <name>Create a new gate. Options: --rollout, --rules, --salt, --killswitch.
shipeasy gate rollout <name> --percent NSet the rollout %. --percent 0 is an instant kill-switch.
shipeasy gate enable <name>Set the gate's enabled bit to true.
shipeasy gate disable <name>Set enabled to false (keeps rules).
shipeasy gate delete <name>Permanent. Use with care.

--rules accepts a JSON array of { attr, op, value } rules — the same shape the dashboard produces:

shipeasy gate create new-ui \
  --rollout 25 \
  --rules '[{"attr":"plan","op":"eq","value":"pro"}]'

Dynamic values (configs)

CommandDescription
shipeasy value listList every dynamic config.
shipeasy value create <name> --type jsonCreate a config. --type is string, number, boolean, or json.
shipeasy value set <name> <json>Update the value (env-scoped — pair with --env).
shipeasy value get <name>Read the current value.
shipeasy value delete <name>Permanent.
shipeasy value set pricing '{"base":9.99,"currency":"USD"}'

Experiments

CommandDescription
shipeasy experiments listAll experiments + status.
shipeasy experiments create <name>Create an experiment. Options: --universe, --allocation, --groups, --params, --targeting-gate.
shipeasy experiments start <name>Move from draftrunning.
shipeasy experiments stop <name>Move to stopped.
shipeasy experiments status <name>Show config + latest analysis (lift, p-value, CI per metric per group).

--groups is a JSON array of { name, weight, params }:

shipeasy experiments create checkout-cta \
  --allocation 100 \
  --groups '[{"name":"control","weight":50,"params":{"label":"Pay"}},{"name":"v1","weight":50,"params":{"label":"Buy now"}}]'

Metrics

CommandDescription
shipeasy metrics listEvery metric registered for the project.
shipeasy metrics create <name>Define a new metric. Options: --type, --source-event, --aggregation.
shipeasy metrics latest <name>Latest daily aggregation row.

SDK keys

CommandDescription
shipeasy keys listList keys (id, kind, last used). The raw token is never shown after creation.
shipeasy keys createCreate a key. Asks for kind (server / client). Token is shown once.
shipeasy keys revoke <id>Revoke by id or id-prefix. First match wins.

API tokens

CommandDescription
shipeasy tokens listList API tokens (id, kind, scopes, last used).
shipeasy tokens createCreate a long-lived token for CI. Token is shown once.
shipeasy tokens revoke <id>Revoke.

API tokens are different from SDK keys — see Authenticate → SDK keys vs API tokens.

i18n (Polylang)

CommandDescription
shipeasy i18n install-loaderInject the loader script tag into the right file (auto-detects framework).
shipeasy i18n scan [paths...]Discover t("key") calls in source. --rewrite enables the codemod. --keys-only skips fuzzy candidate discovery.
shipeasy i18n push <file>Push a JSON of keys to a profile. --chunk to bucket.
shipeasy i18n profiles create --name en:prod --locale enCreate a profile.
shipeasy i18n profiles listList profiles.
shipeasy i18n translate --profile fr:prod --aiGenerate AI translations as a draft.
shipeasy i18n publish --profile en:prodPush the merged profile to KV (live in seconds).
shipeasy i18n validate --profile en:prodFail if any key referenced in code is missing from the profile. Use in CI.

Codemod

CommandDescription
shipeasy codemod i18n [paths...]Run the i18n codemod standalone — same as i18n scan --rewrite but exposed as a top-level command for easy CI use.

MCP server

CommandDescription
shipeasy mcp installPatch the right config file for Claude Code, Cursor, Windsurf, or a custom MCP client.
shipeasy mcp uninstallRemove the registration.
shipeasy mcp serveRun the MCP server in the foreground. Used by the install command — rarely needed by hand.

See MCP server for the tool inventory.

Project detection

CommandDescription
shipeasy detectDetect project language, framework, source root, loader script presence, SDK install status. Useful as a one-liner in CI to confirm wiring. --json for raw.

Plugin

CommandDescription
shipeasy plugin install <name>Install a CLI plugin (e.g. private experiment templates). Plugins live in ~/.shipeasy/plugins.
shipeasy plugin listList installed plugins.
shipeasy plugin uninstall <name>Remove a plugin.

Skills

CommandDescription
shipeasy skills listList installed Claude Code skills exposed by the CLI.
shipeasy skills install <name>Install a packaged skill into your ~/.claude/skills directory.

Environment variables

Field
Type
Description
SHIPEASY_API_TOKEN
string ?
Long-lived API token used for CI. Bypasses interactive login.
SHIPEASY_API_URL
string ?
Override the admin API base URL (default https://shipeasy.ai).
SHIPEASY_EDGE_URL
string ?
Override the ShipEasy base URL (default https://edge.shipeasy.dev).
SHIPEASY_PROJECT
string ?
Default project id when no --project flag is passed.
SHIPEASY_ENV
"dev" | "staging" | "prod" ?
Default environment when no --env flag is passed.
NO_COLOR
any ?
Disable ANSI colour output.

Exit codes

0 on success, 1 on any error. JSON output goes to stdout; human-readable progress goes to stderr — pipes work the way you'd expect.

shipeasy gate list --json | jq '.[] | select(.enabled == true) | .name'

Examples

# Create a gate, set targeting, roll out to 5%, then promote to 100%.
shipeasy gate create checkout-v2 --rules '[{"attr":"plan","op":"eq","value":"pro"}]'
shipeasy gate rollout checkout-v2 --percent 5
shipeasy gate rollout checkout-v2 --percent 100

# Scan a Next.js app for translatable strings, push to source profile, AI-translate, publish.
shipeasy i18n install-loader --profile en:prod
shipeasy i18n scan ./src --rewrite --profile en:prod
shipeasy i18n push --profile en:prod --source codemod
shipeasy i18n profiles create --name fr:prod --locale fr
shipeasy i18n translate --profile fr:prod --ai
shipeasy i18n publish --profile fr:prod

# CI smoke test — fail the build if a translatable key is missing from prod.
SHIPEASY_API_TOKEN="$CI_TOKEN" shipeasy i18n validate --profile en:prod ./src
Pipe-friendly by design

Every read command accepts --json. Every write command exits non-zero on failure. The CLI is built to be scripted — drop it into a Makefile or a GitHub Actions step and it behaves the way you'd expect.

NEXT

Hand it to an AI agent.

The MCP server exposes the same surface as typed tools. Your agent gets one-call install and a curated tool inventory.

Install the MCP
$shipeasy mcp install
Then restart your agent
$# pick up the new MCP config
Was this page helpful?✎ Edit on GitHub

On this page