---
name: pp-digitalocean
description: "Printing Press CLI for Digitalocean."
author: "Hiten Shah"
license: "Apache-2.0"
argument-hint: "<command> [args] | install cli|mcp"
allowed-tools: "Read Bash"
metadata:
  openclaw:
    requires:
      bins:
        - digitalocean-pp-cli
    install:
      - kind: go
        bins: [digitalocean-pp-cli]
        module: github.com/mvanhorn/printing-press-library/library/cloud/digitalocean/cmd/digitalocean-pp-cli
---

# Digitalocean — Printing Press CLI

## Prerequisites: Install the CLI

This skill drives the `digitalocean-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:

1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
   ```bash
   npx -y @mvanhorn/printing-press-library install digitalocean --cli-only
   ```
2. Verify: `digitalocean-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.

If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer):

```bash
go install github.com/mvanhorn/printing-press-library/library/cloud/digitalocean/cmd/digitalocean-pp-cli@latest
```

If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.

## Unique Capabilities

These capabilities aren't available in any other tool for this API.

### Local state that compounds
- **`workflow archive`** — Sync DigitalOcean resources into a local SQLite store for offline inspection and repeatable agent workflows.

  _Gives agents a durable local inventory before planning cloud changes._

  ```bash
  digitalocean-pp-cli workflow archive --full --json
  ```
- **`search`** — Search synced DigitalOcean data locally, with live/local source selection for agent-friendly retrieval.

  _Lets agents locate relevant resources before choosing a narrower command._

  ```bash
  digitalocean-pp-cli search "production" --data-source local --json --limit 20
  ```

### Operational summaries
- **`analytics`** — Summarize locally synced resource data with count and group-by operations.

  _Turns resource listings into operational summaries an agent can reason about._

  ```bash
  digitalocean-pp-cli analytics --type droplets --group-by region --json
  ```
- **`tail`** — Poll selected resources and emit change events as NDJSON for shell and agent pipelines.

  _Provides a safe one-shot or continuous change feed without bespoke scripts._

  ```bash
  digitalocean-pp-cli tail --resource droplets --interval 30s --json
  ```

## Command Reference

**1-clicks** — Manage 1 clicks

- `digitalocean-pp-cli 1-clicks create` — Create
- `digitalocean-pp-cli 1-clicks list` — List

**account** — Provides information about your current account.

- `digitalocean-pp-cli account create` — Create
- `digitalocean-pp-cli account delete` — Delete
- `digitalocean-pp-cli account get` — Get
- `digitalocean-pp-cli account list` — List
- `digitalocean-pp-cli account list-keys` — List keys
- `digitalocean-pp-cli account update` — Update

**actions** — Actions are records of events that have occurred on the resources in your account.
These can be things like rebooting a Droplet, or transferring an image to a new region.

An action object is created every time one of these actions is initiated. The action
object contains information about the current status of the action, start and complete
timestamps, and the associated resource type and ID.

Every action that creates an action object is available through this endpoint. Completed
actions are not removed from this list and are always available for querying.

**Note:** You can pass the following HTTP header with the request to have the API return
the `reserved_ips` stanza instead of the `floating_ips` stanza:

- `Accept: application/vnd.digitalocean.reserveip+json`

- `digitalocean-pp-cli actions get` — Get
- `digitalocean-pp-cli actions list` — List

**add-ons** — Add-ons are third-party applications that can be added to your DigitalOcean account.
They are available through the [DigitalOcean Marketplace](https://marketplace.digitalocean.com/).
Add-ons can be used to enhance the functionality of your existing resources or to provide
additional services.

The Add-Ons API allows you to manage these resources, including creating, listing, and retrieving
details about specific add-on resources.

- `digitalocean-pp-cli add-ons create` — Create
- `digitalocean-pp-cli add-ons delete` — Delete
- `digitalocean-pp-cli add-ons get` — Get
- `digitalocean-pp-cli add-ons get-addons` — Get addons
- `digitalocean-pp-cli add-ons list` — List
- `digitalocean-pp-cli add-ons list-addons` — List addons
- `digitalocean-pp-cli add-ons update` — Update
- `digitalocean-pp-cli add-ons update-addons` — Update addons

**apps** — App Platform is a Platform-as-a-Service (PaaS) offering from DigitalOcean that allows
developers to publish code directly to DigitalOcean servers without worrying about the
underlying infrastructure.

Most API operations are centered around a few core object types. Following are the
definitions of these types. These definitions will be omitted from the operation-specific
documentation.

For documentation on app specifications (`AppSpec` objects), please refer to the
[product documentation](https://docs.digitalocean.com/products/app-platform/reference/app-spec/)).

- `digitalocean-pp-cli apps create` — Create
- `digitalocean-pp-cli apps create-metrics` — Create metrics
- `digitalocean-pp-cli apps create-propose` — Create propose
- `digitalocean-pp-cli apps delete` — Delete
- `digitalocean-pp-cli apps get` — Get
- `digitalocean-pp-cli apps get-tiers` — Get tiers
- `digitalocean-pp-cli apps list` — List
- `digitalocean-pp-cli apps list-regions` — List regions
- `digitalocean-pp-cli apps list-tiers` — List tiers
- `digitalocean-pp-cli apps update` — Update

**async-invoke** — Manage async invoke

- `digitalocean-pp-cli async-invoke` — Create

**batches** — Manage batches

- `digitalocean-pp-cli batches create` — Create
- `digitalocean-pp-cli batches create-files` — Create files
- `digitalocean-pp-cli batches get` — Get
- `digitalocean-pp-cli batches list` — List

**billing** — The billing endpoints allow you to retrieve your account balance, invoices,
billing history, and insights.

**Balance:** By sending requests to the `/v2/customers/my/balance` endpoint, you can
retrieve the balance information for the requested customer account.

**Invoices:** [Invoices](https://docs.digitalocean.com/platform/billing/invoices/)
are generated on the first of each month for every DigitalOcean
customer. An invoice preview is generated daily, which can be accessed
with the `preview` keyword in place of `$INVOICE_UUID`. To interact with
invoices, you will generally send requests to the invoices endpoint at
`/v2/customers/my/invoices`.

**Billing History:** Billing history is a record of billing events for your account.
For example, entries may include events like payments made, invoices
issued, or credits granted. To interact with invoices, you
will generally send requests to the invoices endpoint at
`/v2/customers/my/billing_history`.

**Billing Insights:** Day-over-day changes in billing resource usage based on nightly invoice items,
including total amount, region, SKU, and description for a specified date range.
It is important to note that the daily resource usage may not reflect month-end billing totals when totaled for
a given month as nightly invoice items do not necessarily encompass all invoicing factors for the entire month.
  `v2/billing/{account_urn}/insights/{start_date}/{end_date}` where account_urn is the URN of the customer
account, can be a team (do:team:uuid) or an organization (do:teamgroup:uuid). The date range specified by
start_date and end_date must be in YYYY-MM-DD format.


**byoip-prefixes** — Bring your own IP (BYOIP) lets you provision your own IPv4 network prefixes
to your account, then assign those IPs to your DigitalOcean resources.
BYOIP supports the following features:
* IPv4 addresses
* Network sizes of anywhere from `/24` (256 addresses) to `/18` (16,384 addresses)
* Same API and management interface as our existing reserved IPs feature
* Assignable to Droplets only

- `digitalocean-pp-cli byoip-prefixes create` — Create
- `digitalocean-pp-cli byoip-prefixes delete` — Delete
- `digitalocean-pp-cli byoip-prefixes get` — Get
- `digitalocean-pp-cli byoip-prefixes list` — List
- `digitalocean-pp-cli byoip-prefixes update` — Update

**cdn** — Manage cdn

- `digitalocean-pp-cli cdn create` — Create
- `digitalocean-pp-cli cdn delete` — Delete
- `digitalocean-pp-cli cdn delete-endpoints` — Delete endpoints
- `digitalocean-pp-cli cdn get` — Get
- `digitalocean-pp-cli cdn list` — List
- `digitalocean-pp-cli cdn update` — Update

**certificates** — In order to perform SSL termination on load balancers, DigitalOcean offers
two types of [SSL certificate management](https://docs.digitalocean.com/platform/teams/manage-certificates):

* **Custom**: User-generated certificates may be uploaded to DigitalOcean
where they will be placed in a fully encrypted and isolated storage system.

* **Let's Encrypt**: Certificates may be automatically generated by
DigitalOcean utilizing an integration with Let's Encrypt, the free and
open certificate authority. These certificates will also be automatically
renewed as required.

- `digitalocean-pp-cli certificates create` — Create
- `digitalocean-pp-cli certificates delete` — Delete
- `digitalocean-pp-cli certificates get` — Get
- `digitalocean-pp-cli certificates list` — List

**chat** — Manage chat

- `digitalocean-pp-cli chat create` — Create
- `digitalocean-pp-cli chat create-completions` — Create completions

**customers** — Manage customers

- `digitalocean-pp-cli customers get` — Get
- `digitalocean-pp-cli customers get-my` — Get my
- `digitalocean-pp-cli customers get-my-2` — Get my 2
- `digitalocean-pp-cli customers get-my-3` — Get my 3
- `digitalocean-pp-cli customers list` — List
- `digitalocean-pp-cli customers list-my` — List my
- `digitalocean-pp-cli customers list-my-2` — List my 2

**databases** — DigitalOcean's [managed database service](https://docs.digitalocean.com/products/databases)
simplifies the creation and management of highly available database clusters. Currently, it
offers support for [PostgreSQL](http://docs.digitalocean.com/products/databases/postgresql/),
[Caching](https://docs.digitalocean.com/products/databases/redis/),
[Valkey](https://docs.digitalocean.com/products/databases/valkey/),
[MySQL](https://docs.digitalocean.com/products/databases/mysql/),
[MongoDB](https://docs.digitalocean.com/products/databases/mongodb/), and
[OpenSearch](https://docs.digitalocean.com/products/databases/opensearch/).

By sending requests to the `/v2/databases` endpoint, you can list, create, or delete
database clusters as well as scale the size of a cluster, add or remove read-only replicas,
and manage other configuration details.

Database clusters may be deployed in a multi-node, high-availability configuration.
If your machine type is above the basic nodes, your node plan is above the smallest option,
or you are running MongoDB, you may additionally include up to two standby nodes in your cluster.

The size of individual nodes in a database cluster is represented by a human-readable slug,
which is used in some of the following requests. Each slug denotes the node's identifier,
CPU count, and amount of RAM, in that order.

For a list of currently available database slugs and options, use the `/v2/databases/options` endpoint or use the
`doctl databases options` [command](https://docs.digitalocean.com/reference/doctl/reference/databases/options).

- `digitalocean-pp-cli databases create` — Create
- `digitalocean-pp-cli databases delete` — Delete
- `digitalocean-pp-cli databases get` — Get
- `digitalocean-pp-cli databases list` — List
- `digitalocean-pp-cli databases list-metrics` — List metrics
- `digitalocean-pp-cli databases list-options` — List options
- `digitalocean-pp-cli databases update` — Update

**dedicated-inferences** — [Dedicated Inference](https://docs.digitalocean.com/products/agent-platform/dedicated-inference/)
delivers scalable production-grade LLM hosting on DigitalOcean. Create, list, get, update,
and delete Dedicated Inference instances; manage accelerators, CA certificate, sizes,
GPU model config, and access tokens.

- `digitalocean-pp-cli dedicated-inferences create` — Create
- `digitalocean-pp-cli dedicated-inferences delete` — Delete
- `digitalocean-pp-cli dedicated-inferences get` — Get
- `digitalocean-pp-cli dedicated-inferences list` — List
- `digitalocean-pp-cli dedicated-inferences list-dedicatedinferences` — List dedicatedinferences
- `digitalocean-pp-cli dedicated-inferences list-dedicatedinferences-2` — List dedicatedinferences 2
- `digitalocean-pp-cli dedicated-inferences update` — Update

**domains** — Domain resources are domain names that you have purchased from a domain
name registrar that you are managing through the
[DigitalOcean DNS interface](https://docs.digitalocean.com/products/networking/dns/).

This resource establishes top-level control over each domain. Actions that
affect individual domain records should be taken on the
[Domain Records](#tag/Domain-Records) resource.

- `digitalocean-pp-cli domains create` — Create
- `digitalocean-pp-cli domains delete` — Delete
- `digitalocean-pp-cli domains get` — Get
- `digitalocean-pp-cli domains list` — List

**droplets** — A [Droplet](https://docs.digitalocean.com/products/droplets/) is a DigitalOcean
virtual machine. By sending requests to the Droplet endpoint, you can
list, create, or delete Droplets.

Some of the attributes will have an object value. The `region` and `image`
objects will all contain the standard attributes of their associated
types. Find more information about each of these objects in their
respective sections.

- `digitalocean-pp-cli droplets create` — Create
- `digitalocean-pp-cli droplets create-actions` — Create actions
- `digitalocean-pp-cli droplets create-autoscale` — Create autoscale
- `digitalocean-pp-cli droplets delete` — Delete
- `digitalocean-pp-cli droplets delete-autoscale` — Delete autoscale
- `digitalocean-pp-cli droplets delete-autoscale-2` — Delete autoscale 2
- `digitalocean-pp-cli droplets delete-dropletid` — Delete dropletid
- `digitalocean-pp-cli droplets get` — Get
- `digitalocean-pp-cli droplets get-autoscale` — Get autoscale
- `digitalocean-pp-cli droplets get-autoscale-2` — Get autoscale 2
- `digitalocean-pp-cli droplets get-autoscale-3` — Get autoscale 3
- `digitalocean-pp-cli droplets list` — List
- `digitalocean-pp-cli droplets list-autoscale` — List autoscale
- `digitalocean-pp-cli droplets list-backups` — List backups
- `digitalocean-pp-cli droplets list-backups-2` — List backups 2
- `digitalocean-pp-cli droplets update` — Update

**embeddings** — Text embedding vectors via `POST /v1/embeddings` on the
[Serverless Inference](https://docs.digitalocean.com/reference/api/api-reference/#tag/Serverless-Inference) base URL
`https://inference.do-ai.run` (bearer model access key).

- `digitalocean-pp-cli embeddings` — Create

**firewalls** — [DigitalOcean Cloud Firewalls](https://docs.digitalocean.com/products/networking/firewalls/)
provide the ability to restrict network access to and from a Droplet
allowing you to define which ports will accept inbound or outbound
connections. By sending requests to the `/v2/firewalls` endpoint, you can
list, create, or delete firewalls as well as modify access rules.

- `digitalocean-pp-cli firewalls create` — Create
- `digitalocean-pp-cli firewalls delete` — Delete
- `digitalocean-pp-cli firewalls get` — Get
- `digitalocean-pp-cli firewalls list` — List
- `digitalocean-pp-cli firewalls update` — Update

**floating-ips** — As of 16 June 2022, we have renamed the Floating IP product to [Reserved IPs](https://docs.digitalocean.com/reference/api/api-reference/#tag/Reserved-IPs).
The Reserved IP product's endpoints function the exact same way as Floating IPs.
The only difference is the name change throughout the URLs and fields.
For example, the `floating_ips` field is now the `reserved_ips` field.
The Floating IP endpoints will remain active until fall 2023 before being
permanently deprecated.

With the exception of the [Projects API](https://docs.digitalocean.com/reference/api/api-reference/#tag/Projects),
we will reflect this change as an additional field in the responses across the API
where the `floating_ip` field is used. For example, the Droplet metadata response
will contain the field `reserved_ips` in addition to the `floating_ips` field.
Floating IPs retrieved using the Projects API will retain the original name.

[DigitalOcean Floating IPs](https://docs.digitalocean.com/products/networking/reserved-ips/)
are publicly-accessible static IP addresses that can be mapped to one of
your Droplets. They can be used to create highly available setups or other
configurations requiring movable addresses.

Floating IPs are bound to a specific region.

- `digitalocean-pp-cli floating-ips create` — Create
- `digitalocean-pp-cli floating-ips delete` — Delete
- `digitalocean-pp-cli floating-ips get` — Get
- `digitalocean-pp-cli floating-ips list` — List

**functions** — [Serverless functions](https://docs.digitalocean.com/products/functions) are blocks of code that run on demand without the need to manage any infrastructure.
You can develop functions on your local machine and then deploy them to a namespace using `doctl`, the [official DigitalOcean CLI tool](https://docs.digitalocean.com/reference/doctl).

The Serverless Functions API currently only supports creating and managing namespaces.

- `digitalocean-pp-cli functions create` — Create
- `digitalocean-pp-cli functions create-namespaces` — Create namespaces
- `digitalocean-pp-cli functions create-namespaces-2` — Create namespaces 2
- `digitalocean-pp-cli functions delete` — Delete
- `digitalocean-pp-cli functions delete-namespaces` — Delete namespaces
- `digitalocean-pp-cli functions delete-namespaces-2` — Delete namespaces 2
- `digitalocean-pp-cli functions get` — Get
- `digitalocean-pp-cli functions get-namespaces` — Get namespaces
- `digitalocean-pp-cli functions get-namespaces-2` — Get namespaces 2
- `digitalocean-pp-cli functions get-namespaces-3` — Get namespaces 3
- `digitalocean-pp-cli functions list` — List
- `digitalocean-pp-cli functions update` — Update
- `digitalocean-pp-cli functions update-namespaces` — Update namespaces

**gen-ai** — Manage gen ai

- `digitalocean-pp-cli gen-ai create` — Create
- `digitalocean-pp-cli gen-ai create-genai` — Create genai
- `digitalocean-pp-cli gen-ai create-genai-10` — Create genai 10
- `digitalocean-pp-cli gen-ai create-genai-11` — Create genai 11
- `digitalocean-pp-cli gen-ai create-genai-12` — Create genai 12
- `digitalocean-pp-cli gen-ai create-genai-13` — Create genai 13
- `digitalocean-pp-cli gen-ai create-genai-14` — Create genai 14
- `digitalocean-pp-cli gen-ai create-genai-15` — Create genai 15
- `digitalocean-pp-cli gen-ai create-genai-16` — Create genai 16
- `digitalocean-pp-cli gen-ai create-genai-17` — Create genai 17
- `digitalocean-pp-cli gen-ai create-genai-18` — Create genai 18
- `digitalocean-pp-cli gen-ai create-genai-19` — Create genai 19
- `digitalocean-pp-cli gen-ai create-genai-2` — Create genai 2
- `digitalocean-pp-cli gen-ai create-genai-20` — Create genai 20
- `digitalocean-pp-cli gen-ai create-genai-21` — Create genai 21
- `digitalocean-pp-cli gen-ai create-genai-22` — Create genai 22
- `digitalocean-pp-cli gen-ai create-genai-23` — Create genai 23
- `digitalocean-pp-cli gen-ai create-genai-24` — Create genai 24
- `digitalocean-pp-cli