> For the complete documentation index, see [llms.txt](https://docs.rumi.systems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rumi.systems/rumi-cli/commands/cloud/civo.md).

# civo

The `rumi cloud civo` commands provision and manage Rumi private clouds in [Civo](https://www.civo.com/).

## Overview

Civo commands provide lifecycle management for Rumi private clouds on Civo:

* **Catalog Inspection** - List the SSH keys, disk images, and instance sizes available in your account
* **Network Infrastructure** - Create, list, and delete private networks
* **Platform Services** - Launch the bastion, Admin, Monitor, and messaging broker nodes
* **Service Instances** - Launch application workers with optional public IPs and data volumes
* **HTTPS** - Terminate TLS on the bastion with a Let's Encrypt wildcard certificate
* **Lifecycle Management** - Provision a whole environment in one step, deploy applications, start/stop to save cost, and tear it all down

Civo uses an **install-at-boot** model: every node boots from a barebones Rocky image and installs its role's software via cloud-init on first boot (rather than booting from a prebaked image or snapshot, as on Hetzner and AWS). This keeps the image catalog simple, at the cost of a **slower first boot** while software is installed — the launch commands wait for the node to finish coming up.

## Prerequisites

Before using Civo commands, you must:

1. **Have a Civo API token** - Supply it with `-k, --api-key` or set the `CIVO_API_TOKEN` environment variable.
2. **Choose a region** - Every command takes a required `-r, --region` (e.g. `FRA1`).
3. **Have an SSH key pair** - Upload an SSH key to Civo (e.g. named `rumi`) and pass its name with `-K, --keyPair`; launches associate it with each instance so the fleet can be reached.

## Commands

All three providers (AWS, Hetzner, Civo) now share one command vocabulary: per-component lifecycle verbs (`start-admin`, `stop-solace`, `terminate-monitor`, …), an env-wide `start`/`stop`, and `deprovision`.

### Catalog

| Command                                                                     | Description                                                      |
| --------------------------------------------------------------------------- | ---------------------------------------------------------------- |
| [list-sshkeys](/rumi-cli/commands/cloud/civo/list-sshkeys.md)               | List the SSH keys uploaded to your account                       |
| [list-diskimages](/rumi-cli/commands/cloud/civo/list-diskimages.md)         | List the available disk (OS) images (alias: `list-images`)       |
| [list-instance-sizes](/rumi-cli/commands/cloud/civo/list-instance-sizes.md) | List the available instance sizes (alias: `list-instance-types`) |

### Network Management

| Command                                                           | Description                   |
| ----------------------------------------------------------------- | ----------------------------- |
| [create-network](/rumi-cli/commands/cloud/civo/create-network.md) | Create a private network      |
| [list-networks](/rumi-cli/commands/cloud/civo/list-networks.md)   | List the networks in a region |
| [delete-network](/rumi-cli/commands/cloud/civo/delete-network.md) | Delete a network              |

### Bastion

The bastion is the network's public entry point and internal DNS server. It fronts the fleet's nginx reverse proxies and is the SSH entry point; it must be launched before any other role.

| Command                                                                 | Description                                                                 |
| ----------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [launch-bastion](/rumi-cli/commands/cloud/civo/launch-bastion.md)       | Launch the bastion (DNS + public entry point)                               |
| [start-bastion](/rumi-cli/commands/cloud/civo/start-bastion.md)         | Start the bastion                                                           |
| [stop-bastion](/rumi-cli/commands/cloud/civo/stop-bastion.md)           | Stop the bastion                                                            |
| [terminate-bastion](/rumi-cli/commands/cloud/civo/terminate-bastion.md) | Terminate the bastion                                                       |
| [add-proxy](/rumi-cli/commands/cloud/civo/add-proxy.md)                 | Reverse-proxy a service publicly at `<service>.<domain>`                    |
| [enable-https](/rumi-cli/commands/cloud/civo/enable-https.md)           | Issue a Let's Encrypt wildcard certificate and terminate TLS on the bastion |

### Admin Service

| Command                                                             | Description                                                                        |
| ------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| [launch-admin](/rumi-cli/commands/cloud/civo/launch-admin.md)       | Launch the Admin node (agent + admin server + discovery broker + InfluxDB/Grafana) |
| [start-admin](/rumi-cli/commands/cloud/civo/start-admin.md)         | Start the Admin node                                                               |
| [stop-admin](/rumi-cli/commands/cloud/civo/stop-admin.md)           | Stop the Admin node                                                                |
| [terminate-admin](/rumi-cli/commands/cloud/civo/terminate-admin.md) | Terminate the Admin node                                                           |

### Monitor Service

| Command                                                                 | Description                       |
| ----------------------------------------------------------------------- | --------------------------------- |
| [launch-monitor](/rumi-cli/commands/cloud/civo/launch-monitor.md)       | Launch the Monitor node (Grafana) |
| [start-monitor](/rumi-cli/commands/cloud/civo/start-monitor.md)         | Start the Monitor node            |
| [stop-monitor](/rumi-cli/commands/cloud/civo/stop-monitor.md)           | Stop the Monitor node             |
| [terminate-monitor](/rumi-cli/commands/cloud/civo/terminate-monitor.md) | Terminate the Monitor node        |

### Message Brokers

| Command                                                                                                                                                                                                                                                               | Description                        |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- |
| [launch-solace](/rumi-cli/commands/cloud/civo/launch-solace.md) / [start-solace](/rumi-cli/commands/cloud/civo/start-solace.md) / [stop-solace](/rumi-cli/commands/cloud/civo/stop-solace.md) / [terminate-solace](/rumi-cli/commands/cloud/civo/terminate-solace.md) | Solace broker                      |
| [launch-kafka](/rumi-cli/commands/cloud/civo/launch-kafka.md) / [start-kafka](/rumi-cli/commands/cloud/civo/start-kafka.md) / [stop-kafka](/rumi-cli/commands/cloud/civo/stop-kafka.md) / [terminate-kafka](/rumi-cli/commands/cloud/civo/terminate-kafka.md)         | Kafka broker                       |
| [launch-amq](/rumi-cli/commands/cloud/civo/launch-amq.md) / [start-amq](/rumi-cli/commands/cloud/civo/start-amq.md) / [stop-amq](/rumi-cli/commands/cloud/civo/stop-amq.md) / [terminate-amq](/rumi-cli/commands/cloud/civo/terminate-amq.md)                         | ActiveMQ (`rumi-messaging`) broker |

### Platform

| Command                                                                   | Description                                                  |
| ------------------------------------------------------------------------- | ------------------------------------------------------------ |
| [launch-platform](/rumi-cli/commands/cloud/civo/launch-platform.md)       | Launch a standard platform (bastion, admin, monitor, solace) |
| [start-platform](/rumi-cli/commands/cloud/civo/start-platform.md)         | Start the platform                                           |
| [stop-platform](/rumi-cli/commands/cloud/civo/stop-platform.md)           | Stop the platform                                            |
| [terminate-platform](/rumi-cli/commands/cloud/civo/terminate-platform.md) | Terminate the platform                                       |

### Instance Management

| Command                                                                   | Description                             |
| ------------------------------------------------------------------------- | --------------------------------------- |
| [launch-instance](/rumi-cli/commands/cloud/civo/launch-instance.md)       | Launch a service (worker) instance      |
| [start-instance](/rumi-cli/commands/cloud/civo/start-instance.md)         | Start a service instance                |
| [stop-instance](/rumi-cli/commands/cloud/civo/stop-instance.md)           | Stop a service instance                 |
| [terminate-instance](/rumi-cli/commands/cloud/civo/terminate-instance.md) | Terminate a service instance            |
| [resize-instance](/rumi-cli/commands/cloud/civo/resize-instance.md)       | Resize a service instance to a new size |
| [list-instances](/rumi-cli/commands/cloud/civo/list-instances.md)         | List the instances in a network         |

### Remote Execution

| Command                                                               | Description                                   |
| --------------------------------------------------------------------- | --------------------------------------------- |
| [run-command](/rumi-cli/commands/cloud/civo/run-command.md)           | Run a shell command on a service instance     |
| [run-admin-script](/rumi-cli/commands/cloud/civo/run-admin-script.md) | Run an admin script against a deployed system |

### High-Level Lifecycle

| Command                                                     | Description                                           |
| ----------------------------------------------------------- | ----------------------------------------------------- |
| [provision](/rumi-cli/commands/cloud/civo/provision.md)     | Provision a complete environment (network + platform) |
| [deploy](/rumi-cli/commands/cloud/civo/deploy.md)           | Deploy a XAR system to an environment                 |
| [configure](/rumi-cli/commands/cloud/civo/configure.md)     | Add or update a controller config property            |
| [start](/rumi-cli/commands/cloud/civo/start.md)             | Start every instance in an environment                |
| [stop](/rumi-cli/commands/cloud/civo/stop.md)               | Stop every instance in an environment                 |
| [deprovision](/rumi-cli/commands/cloud/civo/deprovision.md) | Tear down an environment                              |

## Common Options

Most Civo commands support these common options:

| Option      | Short | Description                                            | Default               |
| ----------- | ----- | ------------------------------------------------------ | --------------------- |
| `--api-key` | `-k`  | The Civo API token (or set `CIVO_API_TOKEN`)           | Required              |
| `--region`  | `-r`  | The Civo region to operate in (e.g. `FRA1`)            | Required              |
| `--network` | `-n`  | Name of the Rumi network / environment                 | Required              |
| `--keyPair` | `-K`  | The SSH key pair to launch with                        | Required for launches |
| `--nowait`  | `-o`  | Do not wait for the instance to reach its target state | `false`               |

## Typical Workflow

```bash
# 1. Provision a complete environment (network + platform)
rumi cloud civo provision \
  --api-key $CIVO_API_TOKEN --region FRA1 --network my-cloud --keyPair rumi

# 2. Deploy your application
rumi cloud civo deploy \
  --api-key $CIVO_API_TOKEN --region FRA1 --network my-cloud --keyPair rumi \
  --xar ./my-app.xar

# 3. (optional) Terminate TLS on the bastion
rumi cloud civo enable-https \
  --api-key $CIVO_API_TOKEN --region FRA1 --network my-cloud --keyPair rumi \
  --domain example.com --dns-provider route53 --dns-credentials "AKIA...:wJalr...:us-east-1"

# 4. Stop when not in use (saves cost), then start again later
rumi cloud civo stop  --api-key $CIVO_API_TOKEN --region FRA1 --network my-cloud
rumi cloud civo start --api-key $CIVO_API_TOKEN --region FRA1 --network my-cloud

# 5. Tear it all down
rumi cloud civo deprovision \
  --api-key $CIVO_API_TOKEN --region FRA1 --network my-cloud --keyPair rumi
```

## Getting Help

Use `--help` (or `-h`) on any command:

```bash
rumi cloud civo --help
rumi cloud civo provision --help
rumi cloud civo launch-instance --help
```

## Related Documentation

* [**Cloud Commands**](/rumi-cli/commands/cloud.md) - The standardized Rumi private cloud model
* [**Hetzner Commands**](/rumi-cli/commands/cloud/hetzner.md) - The equivalent commands on Hetzner Cloud
* [**AWS Commands**](/rumi-cli/commands/cloud/aws.md) - The equivalent commands on AWS
* [**Installation**](/rumi-cli/installation.md) - Install the Rumi CLI
