Shareable CLI commands

Install and run shared CLI commands

Browse community libraries and run commands directly. Or author your own as YAML specs with args, flags, and multi-step workflows.

$ brew install mycli-sh/tap/mycli
terminal
# Install a library
$ my library install kubernetes
Installed kubernetes (12 commands)
# Run commands directly
$ my kubernetes port-forward svc/my-service -p 8080
Forwarding svc/my-service:8080 → localhost:8080
$ my ops deploy api -e production
Deploying to production...
Deploy complete.
$ |

Everything you need

From authoring to execution, mycli covers the full command lifecycle.

Install & Run

Install curated libraries and run commands directly as `my <library> <command>`. Git-backed sources and registry libraries both work — no account needed.

Define as Code

Author commands as YAML or JSON specs with args, flags, environment variables, Go templates, and multi-step workflows. Validated against a JSON Schema.

Publish & Sync

Push commands to a registry and sync them across machines. ETag-based caching keeps your local catalog up to date with minimal bandwidth.

How it works

From installation to creating your own.

1

Install

Install a library from the registry or add a git-backed source.

$ my library install kubernetes
Installed kubernetes (12 commands)

$ my source add https://github.com/user/ops-tools.git
Added source "ops-tools" (2 libraries)
2

Run

Run commands directly as top-level subcommands with full arg parsing.

$ my kubernetes port-forward svc/my-service -p 8080
Forwarding svc/my-service:8080 → localhost:8080

$ my ops deploy api -e production
Deploying api to production...
Deploy complete.
3

Create your own

Author commands as YAML specs, push to the registry, and share them.

schemaVersion: 1
kind: command

metadata:
  name: greet
  slug: greet
  description: Greet someone

steps:
  - name: greet
    run: echo 'Hello, {{.args.name}}!'

$ my cli push -f command.yaml
Published version 1 (hash: e5f6a7b8)

Powerful command specs

Define complex workflows with args, flags, environment variables, templates, and policies.

command.yaml
schemaVersion: 1
kind: command

metadata:
  name: deploy
  slug: deploy
  description: Deploy application to environment
  tags: [ops, deploy]

args:
  positional:
    - name: environment
      description: Target environment
      required: true
  flags:
    - name: dry-run
      short: n
      type: bool
      description: Preview without applying changes

defaults:
  shell: /bin/bash
  timeout: 5m

steps:
  - name: validate
    run: |
      echo "Deploying to {{.args.environment}}..."
      test -f {{.cwd}}/deploy.sh
  - name: deploy
    run: ./deploy.sh {{.args.environment}}

policy:
  requireConfirmation: true

Ready to get started?

Install mycli and start running commands in seconds.