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]
endpointis the same as in https://api.clouding.io/docs/actionis one ofcreate,listanddeleteoptionsdepend onendpointandaction, consult--helpfor 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
idandname - 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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
738c329e2d1283fe37b1f8749246d843fd69d64b7c58d71acf7d5c41aa1535e8
|
|
| MD5 |
59e9fa2e276cea1a615661bc928d3cb8
|
|
| BLAKE2b-256 |
b54011782fb028c4262710479cebb98ffbd68724622497fe583e5ef4d5055698
|
Provenance
The following attestation bundles were made for tuca-0.1.tar.gz:
Publisher:
build.yml on dehesselle/tuca
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuca-0.1.tar.gz -
Subject digest:
738c329e2d1283fe37b1f8749246d843fd69d64b7c58d71acf7d5c41aa1535e8 - Sigstore transparency entry: 919425287
- Sigstore integration time:
-
Permalink:
dehesselle/tuca@df0a857cb527ec3c1692a01de0f9b62ad614ff2a -
Branch / Tag:
refs/tags/v0.1 - Owner: https://github.com/dehesselle
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@df0a857cb527ec3c1692a01de0f9b62ad614ff2a -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd0dd84a30df285ce1921393e2065608d89002399800d649cd92a6f84430533a
|
|
| MD5 |
15284039c073c18211d5a39672b2a187
|
|
| BLAKE2b-256 |
88fb428d544eacae60d6d9356b9c18f23fd5dd9507d7794719fa8e5ad65bcd46
|
Provenance
The following attestation bundles were made for tuca-0.1-py3-none-any.whl:
Publisher:
build.yml on dehesselle/tuca
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tuca-0.1-py3-none-any.whl -
Subject digest:
bd0dd84a30df285ce1921393e2065608d89002399800d649cd92a6f84430533a - Sigstore transparency entry: 919425290
- Sigstore integration time:
-
Permalink:
dehesselle/tuca@df0a857cb527ec3c1692a01de0f9b62ad614ff2a -
Branch / Tag:
refs/tags/v0.1 - Owner: https://github.com/dehesselle
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build.yml@df0a857cb527ec3c1692a01de0f9b62ad614ff2a -
Trigger Event:
push
-
Statement type: