Skip to main content

CLI Command Reference

CLI Command Reference​

For users who prefer command-line interaction, the Morph Cloud CLI provides a convenient way to manage resources.

morphcloud image​

Manages Morph images.

  • morphcloud image list [--json]: Lists all available images.

    • --json: Output in JSON format.
    morphcloud image list
    morphcloud image list --json

morphcloud snapshot​

Manages Morph snapshots.

  • morphcloud snapshot list [--metadata KEY=VALUE ...] [--json]: Lists all snapshots.

    • --metadata KEY=VALUE: Filters snapshots by metadata. You can provide multiple metadata filters.
    • --json: Output in JSON format.
    morphcloud snapshot list
    morphcloud snapshot list --metadata environment=development --metadata region=us-west
    morphcloud snapshot list --json
  • morphcloud snapshot create --image-id IMAGE_ID --vcpus INT --memory INT --disk-size INT [--digest TEXT] [--ttl-seconds INT] [--json]: Creates a new snapshot.

    • --image-id IMAGE_ID: ID of the base image (required).
    • --vcpus INT: Number of vCPUs (required).
    • --memory INT: Memory in MB (required).
    • --disk-size INT: Disk size in MB (required).
    • --digest TEXT: User-provided digest.
    • --ttl-seconds INT: Optional retention period for the snapshot in seconds.
    • --json: Output in JSON format.
    morphcloud snapshot create --image-id img_your_image_id --vcpus 2 --memory 4096 --disk-size 50000
    morphcloud snapshot create --image-id img_your_image_id --vcpus 2 --memory 4096 --disk-size 50000 --ttl-seconds 3600
    morphcloud snapshot create --image-id img_your_image_id --vcpus 2 --memory 4096 --disk-size 50000 --json
  • morphcloud snapshot delete SNAPSHOT_ID: Deletes a snapshot.

    morphcloud snapshot delete snapshot_your_snapshot_id
  • morphcloud snapshot get SNAPSHOT_ID: Gets details of a snapshot.

    morphcloud snapshot get snapshot_your_snapshot_id
  • morphcloud snapshot set-metadata SNAPSHOT_ID KEY1=VALUE1 [KEY2=VALUE2 ...]: Sets metadata on a snapshot.

    morphcloud snapshot set-metadata snapshot_your_snapshot_id environment=production purpose="data processing"
  • morphcloud snapshot set-ttl SNAPSHOT_ID --ttl-seconds INT: Sets or clears snapshot retention.

    • --ttl-seconds INT: Snapshot retention period in seconds. Use -1 to remove the TTL entirely.
    morphcloud snapshot set-ttl snapshot_your_snapshot_id --ttl-seconds 7200
    morphcloud snapshot set-ttl snapshot_your_snapshot_id --ttl-seconds -1

morphcloud instance​

Manages Morph instances.

Live disk capacity commands (limited preview)​

These commands require an enabled organization, a supported instance, and CLI version 0.1.116 or later. See Live Disk Capacity for eligibility, errors, and recovery.

CommandPurpose
morphcloud instance resize-disk INSTANCE_ID --disk-size MIBSet the absolute root capacity in either direction. Waits by default. Supports --idempotency-key KEY, --wait / --no-wait, --timeout SECONDS, and --json.
morphcloud instance get-disk-resize INSTANCE_ID OPERATION_IDInspect the original operation. Supports --json.
morphcloud instance wait-disk-resize INSTANCE_ID OPERATION_IDResume waiting on the original operation. Supports --timeout SECONDS and --json.

A client timeout stops waiting without canceling resize. Preserve the operation ID and idempotency key; reuse the original key and target if the admission response was lost. --no-wait returns accepted work and does not claim completion.

Existing instance commands​

  • morphcloud instance list [--metadata KEY=VALUE ...] [--json]: Lists all instances.

    • --metadata KEY=VALUE: Filters instances by metadata.
    • --json: Output in JSON format.
    morphcloud instance list
    morphcloud instance list --metadata application=webapp
    morphcloud instance list --json
  • morphcloud instance start SNAPSHOT_ID [--ttl-seconds INT] [--ttl-action {stop|pause}] [--json]: Starts a new instance from a snapshot.

    • SNAPSHOT_ID: ID of the snapshot to start from.
    • --ttl-seconds INT: Time-to-live in seconds for the instance.
    • --ttl-action {stop|pause}: Action when TTL expires.
    • --json: Output in JSON format.
    morphcloud instance start snapshot_your_snapshot_id
    morphcloud instance start snapshot_your_snapshot_id --ttl-seconds 3600 --ttl-action stop
    morphcloud instance start snapshot_your_snapshot_id --json
  • morphcloud instance stop INSTANCE_ID: Stops an instance.

    morphcloud instance stop instance_your_instance_id
  • morphcloud instance pause INSTANCE_ID: Pauses an instance.

    morphcloud instance pause instance_your_instance_id
  • morphcloud instance resume INSTANCE_ID: Resumes a paused instance.

    morphcloud instance resume instance_your_instance_id
  • morphcloud instance get INSTANCE_ID: Gets details of an instance.

    morphcloud instance get instance_your_instance_id
  • morphcloud instance snapshot INSTANCE_ID [--ttl-seconds INT] [--json]: Creates a snapshot from an instance.

    • --ttl-seconds INT: Optional retention period for the snapshot in seconds.
    • --json: Output in JSON format.
    morphcloud instance snapshot instance_your_instance_id
    morphcloud instance snapshot instance_your_instance_id --ttl-seconds 3600
    morphcloud instance snapshot instance_your_instance_id --json
  • morphcloud instance branch INSTANCE_ID [--count INT]: Branches an instance into multiple clones.

    • --count INT: Number of clones to create (default: 1).
    morphcloud instance branch instance_your_instance_id --count 5
  • morphcloud instance expose-http INSTANCE_ID NAME PORT [--auth-mode {none|api_key}]: Exposes an HTTP service.

    • INSTANCE_ID: ID of the instance.
    • NAME: Name of the service.
    • PORT: Port to expose.
    • --auth-mode {none|api_key}: Authentication mode (default: none).
    morphcloud instance expose-http instance_your_instance_id my-service 8080
    morphcloud instance expose-http instance_your_instance_id my-service 8080 --auth-mode none
    morphcloud instance expose-http instance_your_instance_id secure-service 8081 --auth-mode api_key
  • morphcloud instance hide-http INSTANCE_ID NAME: Hides an exposed HTTP service.

    morphcloud instance hide-http instance_your_instance_id my-service
  • morphcloud instance exec INSTANCE_ID COMMAND...: Executes a command on an instance.

    morphcloud instance exec instance_your_instance_id uname -a
    morphcloud instance exec instance_your_instance_id bash -c "ls -l /tmp && echo Hello"
  • morphcloud instance set-metadata INSTANCE_ID KEY1=VALUE1 [KEY2=VALUE2 ...]: Sets metadata on an instance.

    morphcloud instance set-metadata instance_your_instance_id environment=staging region=eu-central-1
  • morphcloud instance ssh INSTANCE_ID [--rm] [--snapshot] [COMMAND...]: Starts an SSH session to an instance.

    • --rm: Remove the instance after exiting SSH.
    • --snapshot: Create a snapshot before exiting SSH.
    • COMMAND...: Optional command to execute non-interactively.
    morphcloud instance ssh instance_your_instance_id
    morphcloud instance ssh instance_your_instance_id --rm
    morphcloud instance ssh instance_your_instance_id --snapshot
    morphcloud instance ssh instance_your_instance_id "ls -l /app" # Run command non-interactively
  • morphcloud instance port-forward INSTANCE_ID REMOTE_PORT [LOCAL_PORT]: Forwards a port from an instance to your local machine.

    • REMOTE_PORT: Remote port on the instance.
    • LOCAL_PORT: Local port on your machine (optional, defaults to REMOTE_PORT).
    morphcloud instance port-forward instance_your_instance_id 8080
    morphcloud instance port-forward instance_your_instance_id 8080 9000 # Local port 9000 to remote 8080
  • morphcloud instance copy SOURCE DESTINATION [-r]: Copies files to or from a Morph instance.

    • SOURCE: Source path (local path or instance_id:/remote/path).
    • DESTINATION: Destination path (local path or instance_id:/remote/path).
    • -r, --recursive: Copy directories recursively.
    morphcloud instance copy morphvm_1234:/etc/config.json ./config.json
    morphcloud instance copy ./local/file.txt morphvm_1234:/remote/path/
    morphcloud instance copy -r ./local/dir morphvm_1234:/remote/dir/
  • morphcloud instance chat INSTANCE_ID [INSTRUCTIONS...]: Starts an interactive chat session with an instance (if LLM agent is integrated).

    morphcloud instance chat instance_your_instance_id
    morphcloud instance chat instance_your_instance_id "Explain the file system layout"

morphcloud volumes​

Manages Morph Volumes through the S3-compatible gateway. Remote paths use the form s3://bucket/prefix, and the singular alias morphcloud volume ... works too.

  • morphcloud volumes ls [TARGET] [-r|--recursive] [--json]: Lists buckets, prefixes, or objects.

    • TARGET: Optional bucket or prefix target such as my-bucket, my-bucket/releases, or s3://my-bucket/releases/.
    • -r, --recursive: Recursively list every object under a prefix.
    • --json: Output raw JSON.
    morphcloud volumes ls
    morphcloud volumes ls my-volume-bucket
    morphcloud volumes ls s3://my-volume-bucket/releases/
    morphcloud volumes ls --recursive s3://my-volume-bucket/releases/
  • morphcloud volumes tree [TARGET] [--json]: Renders a file-explorer style tree for a bucket or prefix.

    morphcloud volumes tree
    morphcloud volumes tree s3://my-volume-bucket/project/
  • morphcloud volumes mb BUCKET: Creates a bucket.

    • Uses the same MORPH_API_KEY auth flow as object operations.
    morphcloud volumes mb my-volume-bucket
  • morphcloud volumes rb BUCKET: Removes an empty bucket.

    morphcloud volumes rb my-volume-bucket
  • morphcloud volumes cp SOURCE DESTINATION [-r|--recursive]: Copies between local paths and volume paths.

    • Exactly one side must be a remote s3://... path.
    • -r, --recursive: Required when uploading a directory or downloading a prefix.
    morphcloud volumes cp ./artifact.txt s3://my-volume-bucket/builds/artifact.txt
    morphcloud volumes cp -r ./dataset s3://my-volume-bucket/datasets/
    morphcloud volumes cp s3://my-volume-bucket/builds/artifact.txt ./downloads/
    morphcloud volumes cp -r s3://my-volume-bucket/datasets/ ./datasets/
  • morphcloud volumes cat TARGET: Prints an object's contents to stdout.

    morphcloud volumes cat s3://my-volume-bucket/builds/artifact.txt
  • morphcloud volumes rm TARGET [-r|--recursive] [-y|--yes]: Deletes an object or every object under a prefix.

    • -r, --recursive: Required for prefix deletes.
    • -y, --yes: Skip the confirmation prompt for recursive deletes.
    morphcloud volumes rm s3://my-volume-bucket/builds/artifact.txt
    morphcloud volumes rm -r s3://my-volume-bucket/datasets/
    morphcloud volumes rm -r -y s3://my-volume-bucket/datasets/

If you use stage or another non-default gateway, point the CLI at it directly or persist it in a profile:

morphcloud --volumes-base-url https://volumes.svc.stage.morph.so volumes ls

morphcloud profile set stage \
--api-host stage.morph.so \
--volumes-base-url https://volumes.svc.stage.morph.so

morphcloud profile set prod \
--api-host cloud.morph.so \
--volumes-base-url https://volumes.svc.cloud.morph.so