Spheron CLI

Spheron CLI

The Spheron CLI is a Command Line Interface tool to use the Spheron plaform services through CLI.

Installation

For Mac and Linux

To install the Spheron CLI, run the following command in your terminal:

sudo npm install -g @spheron/cli

For Windows

To install the Spheron CLI, open your terminal as administrator mode and run the following command:

npm install -g @spheron/cli

Help

The --help argument allows you to get more details about Spheron CLI commands.

spheron --help

Here is an example of how the result will look:

Spheron CLI 2.0.3
 
spheron [command]
 
Commands:
  spheron login                Log in to your Spheron account  Enter your credentials when prompted.
  spheron logout               Log out of your account  Ends your current session.
  spheron create-organization  Create a new organization  Follow the prompts to specify organization.
  spheron switch-organization  Switch your active organization  Select from available organizations when prompted.
  spheron init                 Initialize deployment configuration  Creates a Spheron configuration file in your project directory.
  spheron deploy               Deploy your instance  Uses the spheron.yaml file to launch your instance.
  spheron build                Build and push Docker image  Compiles an image from spheron.yaml and uploads it to Docker Hub.
  spheron update               Update instance settings  Modifies configuration based on spheron.yaml.
  spheron close                Terminate the instance  Shuts down the specified active instance.
  spheron marketplace-apps     List all marketplace apps  Displays available apps in the Spheron marketplace.
  spheron instances            List project instances  Displays all instances within a specified project.
  spheron instance             Fetch instance and service details  Provides information on an instance and its associated services.
  spheron service              Get service details within an instance  Shows information for services in a specific instance.
  spheron plans                List available plans  Displays all plans offered by Spheron.
  spheron regions              Show available regions  Displays all regions where services can be deployed.
  spheron projects             Retrieve project and instance information  Shows details of the project along with its instances.
  spheron logs                 Fetch service logs  Retrieves all logs for a specific service within an instance.
 
Options:
  --help     Show help                                                             [boolean]
  --version  Show version number                                                   [boolean]

With Commands

spheron [command] --help
# example
spheron login --help

Here is how the result of the above example will look:

Spheron CLI 2.0.3
 
Usage: spheron login [--github|--gitlab|--bitbucket|--token]
 
Options:
  --github     Log in using Github credentials.
  --gitlab     Log in using Gitlab credentials.
  --bitbucket  Log in using Bitbucket credentials.
  --token      Log in by copying the api token from the platform.
  --help       Show help                             [boolean]

Authentication

spheron login

The spheron login command allows you to connect to your Spheron account.

Usage

spheron login

Upon running this command, a prompter will appear that will allow you to select the provider that you want to use for login. Here is how it will look:

Spheron CLI 2.0.3
 
? Select login method: (Use arrow keys)
Github 
  Gitlab 
  Bitbucket 

Extended Usage

You can use the following command if you want to connect to your Spheron account without prompter:

GitHub

The --github argument can be used to initiate GitHub OAuth login.

spheron login --github

GitLab

The --gitlab argument can be used to initiate GitLab OAuth login.

spheron login --gitlab

Bitbucket

The --bitbucket argument can be used to initiate Bitbucket OAuth login.

spheron login --bitbucket

Spheron Marktplace App

The spheron marketplace-apps command is used to display a list of available "apps" in the Spheron Marketplace that can be easily deployed on the Spheron platform.

Usage

spheron marketplace-apps

After running the command you will see list of marketplace-apps. These apps are organized by categories like Node, Database, Tools, and AI, making it simple for users to find what they need based on their project requirements. By default, this command will show all the available apps with their respective details such as app ID, name, category, image URL, and documentation link.

Spheron CLI 2.0.0
 
Explore our diverse range of marketplace apps, tailored for seamless deployment on Spheron 🚀
 
APP ID                   NAME              CATEGORY    IMAGE                                  DOCS
6542aeeda299a7af98c8c694 Chia Blockchain   Node        ghcr.io/chia-network/chia:latest       https://docs.chia.net/
654e0ce63ce7371b6ce84c6f AR.IO. Observer   Tools       ghcr.io/ar-io/ar-io-observer:latest    https://ar.io/docs/
 
Helpful Commands:
 
To retrieve the list of marketplace apps within a specific category, use the following command: 
spheron marketplace-apps --category [Node, Database, Tools, AI]

Extended Usage

You can use the following command if you want to retrieve the list of marketplace apps within a specific category:

spheron marketplace-apps --category [Node, Database, Tools, AI]

Here is an example of how the result will look:

spheron marketplace-apps --category Node
Spheron CLI 2.0.0
 
Explore our diverse range of marketplace apps for category <Category Name>, tailored for seamless deployment on Spheron 🚀
 
APP ID                     NAME                 CATEGORY    IMAGE                            DOCS
66210ab04a41a48538c119b2   Eigen Avs Oprator    Node        spheronnetwork/eigen-operator    https://docs.eigenlayer.xyz/
65d6254478d558e1f1015d45   Avail Light Client   Node        spheronnetwork/avail-light       https://docs.availproject.org/category/run-a-validator-node/
 
Helpful Commands:
 
To retrieve comprehensive list of all the marketplace apps, use the following command:

Spheron Instance

The spheron instance command provides an overview of the user's existing deployments or instances on the Spheron platform.

Usage

spheron instance

After running the command you will see essential information including the instance ID, plan usage costs, project name, current status, deployment type, updated time, and creation date. This allows users to quickly monitor and manage their deployments directly from the command line interface (CLI).

Spheron CLI 2.0.0
 
Here are all your instances that you have deployed 🚀
 
INSTANCE ID                PLAN USAGE     PROJECT NAME       STATUS       TYPE        UPDATED AT                 CREATED AT
6542aeeda299a7af98c8c694   $24.23 / mo    my_first_project   ✅ Active    On Demand   2023-12-20T09:57:17.485Z   2023-12-20T09:57:17.485Z
654e0ce63ce7371b6ce84c6f   $322.22 / mo   my_first_project   ✅ Active    Spot        2023-12-20T09:57:17.485Z   2023-12-20T09:57:17.485Z
654e0ce63ce7371b6ce84c6f   $10 / mo       Custom Project     ❌ Closed    Autoscale   2023-12-20T09:57:17.485Z   2023-12-20T09:57:17.485Z
 
Helpful Commands:
 
To retrieve more detailed information about a specific instance, use this following command:
spheron instance --id <INSTANCE ID>

Note: spheron instances --project <PROJECT ID> should just show all the instances irrespective of it’s status

Extended Usage

1. To retrive detailed information of a instance

You can use the following command if you want to retrieve more detailed information about a specific instance, use this following command:

spheron instance --id <INSTANCE ID>

Here is an example of how the result will look:

spheron instance --id 655f2011da6e5919107705ba
Spheron CLI 2.0.0
 
Here is the detailed view of your Instance <INSTANCE ID>! 👇
 
Name: <NAME>
Status:  Active
Monthly Plan Usage: $10 / mo, $0.05 / hr
Total Spent: $23.33
Region: <REGION>
Compute Type: On Demand
Updated At: <DATE>
Created At: <DATE>
 
Here are all your services that you have deployed in this instance! 🚀
 
SERVICE NAME  PLAN NAME     REPLICAS  IMAGE                        CONNECTION URL                                  PORTS        TYPE
web           Ventus Nano   1         crccheck/hello-world:latest  provider.us-east.spheron.wiki 3000:32575        3003:32621   On Demand
ui            Ventus Large  1         mitra/ui:latest              wdwwdwd.ingress.provider.latitude.spheron.wiki  3000:80 On   Demand
service-1     Custom        3         mongo:latest                 provider.us-east.spheron.wiki                   3000:32575   Autoscale
 
To establish a connection with a specific service that is accessible via the internet, follow these steps:
1. If the external port you have specified is 80, you can establish a connection using the services connection URL.
2. In cases where the port is randomly assigned, connect using the format <CONNECTION URL>:<EXTERNAL PORT>
For e.g. if your connection URL is "provider.us-east.spheron.wiki" and the Port is mapped as 3000:32575.
You can connect to Port 3000 using "http://provider.us-east.spheron.wiki:32575".
 
Helpful Commands:
 
To retrieve more detailed information about a specific service, use this following command:
spheron service --id <SERVICE ID>
 
To update your instance configuration, use this following command:
spheron update --instance <INSTANCE ID> --config <PATH TO CONFIG>

2. To retrive detail view of service

You can use the following command if you want to retrieve more detailed information about your service, use this following command:

spheron service --name web --instance <id>

Here is an example of how the result will look:

spheron service --id 655f2011da6e5919107705ba
Spheron CLI 2.0.0
 
Here is the detailed view of your Service <SERVICE ID>! 👇
 
Name: <NAME>
Image: crccheck/hello-world:latest
Status:  Active
Replicas: 2
Region: <REGION>
Compute Type: On Demand / Autoscale / Spot
 
Plan Name: Ventus Nano
CPU: 1
RAM: 2 GB
Storage: 20 GB
Persistent: 256 GB
Plan Usage: $10 / mo, $0.05 / hr
 
Connection URL: provider.us-east.spheron.wiki
Ports: 3000:32575, 3003:32621
 
Environments:
  SPHERON_INSTANCE_ID=655f2011da6e5919107705ba
  PORT=3020
 
Secrets:
  API_KEY=aasaldjsakldjasdasd
 
Commands:
  sh cargo --config run-docker.toml
 
Arguments:
  --name=missds
  --ulimit=no-scale
 
Health Check:
  Port: 3000
  Path: /status
  Status:  Healty
 
Updated At: <DATE>
Created At: <DATE>
 
To establish a connection with a specific service that is accessible via the internet, follow these steps:
 
1. If the external port you have specified is 80, you can establish a connection using the services connection URL.
2. In cases where the port is randomly assigned, connect using the format <CONNECTION URL>:<EXTERNAL PORT>
For e.g. if your connection URL is "provider.us-east.spheron.wiki" and the Port is mapped as 3000:32575.
You can connect to Port 3000 using "http://provider.us-east.spheron.wiki:32575".
 
Helpful Commands:
 
To retrieve logs of the service, use this following command:
spheron log --service <SERVICE ID>
 
To connect shell of the service, use this following command:
spheron shell --service <SERVICE ID>
 
To view compute metrics of the service, use this following command:
spheron metrics --service <SERVICE ID>

Spheron Plans Command

The spheron plans command is designed to present users with a comprehensive list of supported compute plans offered by Spheron, categorized under various tiers according to their resources and pricing structure.

spheron plans --region <REGION>

Here is an example of how the result will look:

Spheron CLI 2.0.0
 
Here are all the On Demand compute plans that we support at Spheron! 
 
PLAN ID                   PLAN NAME     CPU   RAM    GPU               MONTLY PRICING   HOURLY PRICING
 
6542aeeda299a7af98c8c694  Terra Small   2     4 Gb   Nvidia RTX 3090   $300 / mo        $0.3 / hr
654e0ce63ce7371b6ce84c6f  Ventus Large  8     16 Gb  Nvidia A4000      $800 / mo        $0.78 / hr
654e0ce63ce7371b6ce84c6f  Ventus Pico   0.25  2 Gb   N.A               $5 / mo          $0.003 / hr
 
To know more about each plan, please visit our documentation - https://docs.spheron.network/compute/plans/compute-plans/

Spheron Region Command

The spheron regions command offers a concise yet informative presentation of the geographical locations where Spheron supports services.

spheron regions

Here is an example of how the result will look:

Spheron CLI 2.0.0
 
Here are all the regions that we support! 🚀
 
REGIONS
us-east
us-west
us-central
eu-east
eu-west
 
Should you choose not to designate a specific region for your server deployment, selecting the "any" option is available.
This option allows the system to autonomously select a region that has sufficient compute capacity to effectively manage your workload.

Spheron Organizations Command

The spheron organizations command serves to provide a succinct overview of the distinct organization accounts linked to the authenticated user profile. Upon executing the command spheron organizations -get all, the CLI tool retrieves details on all the organizations owned by the currently logged-in user, presenting them in an easy-to-read tabular format.

spheron organizations - get all

Here is an example of how the result will look:

Spheron CLI 2.0.0
 
Checkout all the organisation that you have 🚀
 
ORGANIZATION ID            NAME              COMPUTE PROJECTS   BUCKETS   SITE PROJECTS
6542aeeda299a7af98c8c694   Chia Blockchain   10                 5         0
654e0ce63ce7371b6ce84c6f   AR.IO. Observer   10                 0         2

Spheron Project Command

The spheron projects command lists all the projects in the selected organization. With the '-get all' argument, it shows important info about each project, such as its Project ID, name, total instances, provisioned instances, closed instances, and failed instances.

spheron projects - get all

Here is an example of how the result will look:

Spheron CLI 2.0.0
 
Checkout all the projects in your selected organization <ORG NAME> 🚀
 
PROJECT ID                 NAME               INSTANCES  PROVISIONED  CLOSED  FAILED
6542aeeda299a7af98c8c694   Chia Blockchain    10         5            0       2
654e0ce63ce7371b6ce84c6f   AR.IO. Observer    10         0            2       5
 
Helpful Commands:
 
To retrieve all the instances in your project, use this following command:
spheron instances --project <PROJECT ID>

Spheron Logs Command

The spheron logs command enables users to fetch and view the logs generated by their instances, services, or containers deployed on Spheron.

Note: log type will be optional, if not present, default to instance call

spheron logs --instance <INSTANCE ID> --type <LOG TYPE>

Here is an example of how the result will look:

Spheron CLI 2.0.0
 
Streaming the logs for your instance <INSTANCE ID>! ☁️
 
Starting Deployment Creation Process
Preparing Organization Info
Provisioning Funds For Deployment.
...
 
Helpful Commands:
 
To stream new logs continuously from the service, use this following command:
spheron log --service <SERVICE ID> --type <LOG TYPE> --follow
 
To view only the most recent 'n' logs of the service, use this following command:
spheron log --service <SERVICE ID> --type <LOG TYPE> --tail n

Log have the following options:

  • --follow - This will continue streaming the new logs from the container (polling)
  • --tail 100 - Will only show last 100 lines in the log

Also users can follow same syntac do the same for spheron logs --instance <ID> --service <Name>.

E.g. spheron logs --service <SERVICE ID>

Spheron Shell Command

The spheron shell command establishes an interactive shell session as SSH to user instance.

spheron shell --instance <INSTANCE ID> --service <SERVICE NAME>

Here is an example of how the result will look:

Spheron CLI 2.0.0
 
Welcome to Spheron Shell! ☁️
You're now connected just as ssh to your instance.
 
> ls

Spheron Metrics Command

The spheron metrics command provides users with a quick compute resource consumption metric for a specific service hosted on Spheron.

spheron metrics --instance <INSTANCE ID> --service <SERVICE NAME>

Here is an example of how the result will look:

Spheron CLI 2.0.0
 
Here is the compute metric usage of your service! 👇
 
CPU: 0.23 / 4 CPU
RAM: 1.22 GB / 8 GB
 
To access a detailed view of your compute metrics, please navigate to your service on the Spheron App using the following URL:
https://app.spheron.network/compute/<project-id>/<service-id>/metrics.

Spheron init Command

The spheron init command is responsible for initializing and configuring the core components needed to facilitate communication between the developer's local machine and the Spheron platform.

spheron init --import <DOCKER_COMPOSE_PATH/DOCKERFILE> --marketplace <APP_ID>

Here is an example of how the result will look:

Spheron CLI 1.0.16
 
Spheron file already exists, overriding it ⚠️
 
Success! [./docker-compose.yaml / ./Dockerfile] imported successfully!
Success! marketplace app added successfully!
Success! spheron.yaml file created/updated successfully 🚀
Done 10.0s.
 
Note: All the services has been added to your spheron.yaml files.
 
Helpful Commands:
 
To build an instance that exists locally, first add the image name to the spheron.yml file, and then use this following command:
spheron build -u <DOCKERHUB USERNAME> -p <DOCKERHUB PASSWORD>
 
To deploy your instance to Spheron, use this following command:
spheron deploy

Spheron Deploy Command

The spheron deploy command initiates the automated deployment process of a user's configured instance(s) to the Spheron Platform.

spheron deploy

Here is an example of how the result will look:

Spheron CLI 1.0.16
 
Initiating the deployment process of your instance to Spheron...
 
Reading configuration from ./spheron.yaml
 
Deploying new instance on project <PROJECT NAME> 🚀
 
Success! you instance <INSTANCE ID> is now live on Spheron 🚀
Done 10.0s.
 
Helpful Commands:
 
To retrieve information about the instance, use this following command:
spheron instance --id <INSTANCE ID>

Spheron Update Instance Command

The spheron update --instance <INSTANCE ID> command is used to modify the configuration settings of an existing instance on Spheron. This command reads the updated configuration details from the spheron.yaml file stored locally and applies those changes to the specified instance.

spheron update --instance 65840939e058e2ac5451a6dd

Here is an example of how the result will look:

Spheron CLI 1.0.16
 
Reading from ./spheron.yaml
Initiating the process to update the configuration of your instance in Spheron...
 
Success! Update of instance <INSTANCE ID> is successful! 🚀
Done 10.0s.
 
Helpful Commands:
 
To retrieve more detailed information about the instance, use this following command:
spheron instance --id <INSTANCE ID>

Spheron Close Instance Command

The spheron close --instance <INSTANCE ID> command is used to shut down or terminate an active instance on Spheron.

spheron close --instance 65840939e058e2ac5451a6dd

Here is an example of how the result will look:

Spheron CLI 1.0.16
 
Do you want to close your instance <INSTANCE ID>?
> Yes
  No
 
Initiating the process to close your instance in Spheron...
 
Success! Instance <INSTANCE ID> is successful closed! 🚀
Done 10.0s.
 
Helpful Commands:
 
To deploy a new instance to Spheron, use this following command:
spheron deploy

Spheron Docker Hub Command

The spheron build --dockerhub -u <username> -p <password> command performs a Docker build using a Dockerfile.

spheron build --dockerhub -u <username> -p <pass>

Here is an example of how the result will look:

Spheron CLI 1.0.16
 
Success! Dockerhub login with user <USERNAME> is successful! 🚀
 
Stating build process...
Reading configuration from ./spheron.yaml
 
[app]: Starting docker build.
[app]: #1 [internal] load build definition from Dockerfile
[app]: #1 transferring dockerfile: 31B done
[app]: #1 DONE 0.0s
[app]: #2 [internal] load .dockerignore
[app]: #2 transferring context: 2B done
[app]: #2 DONE 0.0s
[app]: #3 [internal] load metadata for docker.io/library/alpine:3.12
[app]: #4 [auth] library/alpine:pull token for registry-1.docker.io
[app]: #4 DONE 0.0s
[app]: #3 [internal] load metadata for docker.io/library/alpine:3.12
[app]: #3 DONE 1.7s
[app]: #5 [1/3] FROM docker.io/library/alpine:3.12@sha256:c75ac27b49326926b803b9ed43bf088bc220d22556de1bc5f72d742c91398f69
[app]: #5 DONE 0.0s
[app]: #6 [internal] load build context
[app]: #6 transferring context: 35B done
[app]: #6 DONE 0.0s
[app]: #7 [2/3] RUN apk add --no-cache bc
[app]: #7 CACHED
[app]: #8 [3/3] COPY ./entrypoint.sh /
[app]: #8 CACHED
[app]: #9 exporting to image
[app]: #9 exporting layers done
[app]: #9 writing image sha256:3ef7acb19a2b2653c542458da2a4abb9f05aa784732e292222f8b6be407c1ead done
[app]: #9 naming to docker.io/ilija444/app:latest done
[app]: #9 DONE 0.0s
[app]: Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
[app]: Docker build process completed successfully.
 
[app]: Pushing docker image.
[app]: The push refers to repository [docker.io/ilija444/app]
[app]: a718c0e169b9: Preparing
[app]: 3ca56c20b221: Preparing
[app]: d80e0208345a: Preparing
[app]: 3ca56c20b221: Layer already exists
[app]: d80e0208345a: Layer already exists
[app]: a718c0e169b9: Layer already exists
[app]: latest: digest: sha256:5efaa3cbed885fbfef3efedfd3caacc54a9d7326e3ad1a1185f91cdfc11a5570 size: 945
[app]: Docker push process completed successfully.
 
Successfully build [app] service and pushed to [ilija444/app:latest]! 🚀
Done 10.0s.
 
Helpful Commands:
 
To deploy your instance to Spheron, use this following command:
spheron deploy

Spheron Switch Organization Command

The spheron switch organization command is used to change the active organization context in the Spheron CLI. It allows users to toggle between different organizations under Spheron platform, ensuring that future commands will operate under the selected organization.

switch org should prompt list of orgs and option to pick one.

spheron switch-organization

Here is an example of how the result will look:

Spheron CLI 2.0.3
 
? Select your organization: (Use arrow keys)
Team 1  
  Team 2 
 
Compute SDKSpheron API