Skip to main content

tool using clouding api

Project description

tool using Clouding.io API

This is an unofficial CLI tool that interacts with the Clouding.io's REST API. Its main goal is to provide a simple interface that I can use to create and destroy servers from shell scripts. Therefore it neither provides access to all available API endpoints nor to all available attributes and/or actions.

The project status is best described as "alpha" as things are still very much in motion and specifically tailored towards my usecase.

Installation

tuca is on PyPi, you can use the package manager of your choice to set yourself up. Here is an example using uv:

uv tool install tuca

Usage

the basics

The CLI interface follows this pattern:

tuca <endpoint> <action> [options]
  • endpoint is the same as in https://api.clouding.io/docs/
  • action is one of create, list and delete
  • options depend on endpoint and action, consult --help for details

tuca writes pretty-printed JSON (no colors) to stdout. It's both human-readable and intended to be piped into jq for non-interactive usage. The following example shows the available SSH keys (redacted values) in a freshly created account:

{
    "keypairs": [
        {
            "fingerprint": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
            "id": "xxxxxxxxxxxxxxxx",
            "name": "default"
        }
    ]
}

The output is

  • always organized as list, even if the result count is 1 or 0
  • usually named after the endpoint
  • contains only a limited number attributes, but always id and name
  • limited to 100 entries

authentication

Before showing you examples, you need to setup an API token first. You can do that via environment variable:

export CLOUDINGIO_API_TOKEN=my_secret_token

Or, more securely, have tuca write it into your desktop's keyring. The following command will give you an interactive prompt to do that.

tuca auth create

And before you say anything, I'm aware that auth is not an endpoint.

If you provide both, the environment variable takes precendence.

here we go

Time to create your first server. First, pick an image.

tuca images list
Output

(modified/shortened for brevity)

{
    "sizes/flavors": [
        ...
        {
            "accessMethods": {
                "password": "required",
                "sshKey": "not-supported"
            },
            "id": "jXEm7yK3MJ2VYkQ9",
            "minimumSizeGb": 25,
            "name": "Windows 11 (English 64Bit | Based on Windows Server 2025)"
        },
        ...
    ]
}

Now pick a size.

tuca flavors list
Output

(modified/shortened for brevity)

{
    "sizes/flavors": [
        ...
        {
            "id": "8x16",
            "pricePerHour": 0.05472,
            "pricePerMonthApprox": 39.9456,
            "ramGb": 16,
            "vCores": 8.0
        },
        ...
    ]
}

That's all to create a server with minimal configuration.

# Windows 11 compatible image
# 8 cores, 16 GB RAM
# default firewall
# default image size
tuca servers create --image jXEm7yK3MJ2VYkQ9 --name MyWinServer --flavorid 8x16 --password start123
Output
{
    "servers": [
        {
            "createdAt": "2026-02-04T23:42:16",
            "id": "mJOZBKqGP702Xjax",
            "name": "MyWinServer",
            "publicIp": null,
            "status": "Pending"
        }
    ]
}

Spooling up the server can take some time and you can check how it's doing.

tuca servers list --name MyWinServer
Output
{
    "servers": [
        {
            "createdAt": "2026-02-04T23:42:16",
            "id": "mJOZBKqGP702Xjax",
            "name": "MyWinServer",
            "publicIp": "103.23.60.115",
            "status": "Creating"
        }
    ]
}

The server will be ready eventually.

Output
{
    "servers": [
        {
            "createdAt": "2026-02-04T23:42:16",
            "id": "mJOZBKqGP702Xjax",
            "name": "MyWinServer",
            "publicIp": "103.23.60.115",
            "status": "Active"
        }
    ]
}

License

GPL-2.0-or-later

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tuca-0.1.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tuca-0.1-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file tuca-0.1.tar.gz.

File metadata

  • Download URL: tuca-0.1.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tuca-0.1.tar.gz
Algorithm Hash digest
SHA256 738c329e2d1283fe37b1f8749246d843fd69d64b7c58d71acf7d5c41aa1535e8
MD5 59e9fa2e276cea1a615661bc928d3cb8
BLAKE2b-256 b54011782fb028c4262710479cebb98ffbd68724622497fe583e5ef4d5055698

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuca-0.1.tar.gz:

Publisher: build.yml on dehesselle/tuca

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tuca-0.1-py3-none-any.whl.

File metadata

  • Download URL: tuca-0.1-py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tuca-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bd0dd84a30df285ce1921393e2065608d89002399800d649cd92a6f84430533a
MD5 15284039c073c18211d5a39672b2a187
BLAKE2b-256 88fb428d544eacae60d6d9356b9c18f23fd5dd9507d7794719fa8e5ad65bcd46

See more details on using hashes here.

Provenance

The following attestation bundles were made for tuca-0.1-py3-none-any.whl:

Publisher: build.yml on dehesselle/tuca

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page