centml-python-client
Installation
To install without cloning, run the following command:
pip install git+https://github.com/CentML/centml-python-client.git@main
Alternatively to build from source, clone this repo then inside the project's base directory, run the following command:
pip install .
Authentication
For interactive use, authenticate once with the CLI. SDK examples reuse the stored credentials and refresh them when needed.
centml login
python examples/sdk/validate_auth.py
For service-to-service use, provide both service-account environment variables:
export CENTML_SERVICE_ACCOUNT_ID="<service-account-id>"
export CENTML_SERVICE_ACCOUNT_SECRET="<service-account-secret>"
python examples/sdk/validate_auth.py
CENTML_PLATFORM_API_URL can be set when targeting a non-production API.
Dynamo SDK example
The Dynamo example uses SDK authentication separately from the bearer token that protects the deployed inference endpoint:
export CENTML_CLUSTER_ID="<cluster-id>"
export CENTML_HARDWARE_INSTANCE_ID="<hardware-instance-id>"
export CENTML_ENDPOINT_BEARER_TOKEN="<new-endpoint-token>"
# Required only for gated Hugging Face models:
export HF_TOKEN="<hugging-face-token>"
python examples/sdk/create_dynamo.py
Use python examples/sdk/get_clusters.py and
python examples/sdk/manage_hardware_instances.py to discover the required IDs.
Creating the example reserves GPU capacity and may incur usage charges. It does not
delete the deployment automatically.
Deployment logs SDK example
fetch_logs() is the one way to read deployment logs: it fetches one pod's stored
log lines within a time window (start_time/end_time, epoch ms, inclusive) and
yields them lazily, oldest first, as chunks of DeploymentLogEvent — each line at
most once, holding only a short dedup window in memory however long the stream.
chunk_size (1 to 5000) is the number of lines requested from the server per
round trip and each server page that carries window lines becomes one chunk, so
a bulk read of history wants a large chunk_size — the log read path is
rate-limited upstream, and a small chunk_size over a large window multiplies
requests. Discover pod names with get_deployment_pods()
(terminated pods still within log retention are included). start_time defaults
to the moment of the call; with end_time set the iterator terminates once the
window is delivered or the store has no more lines to give, whichever comes
first:
for chunk in cclient.fetch_logs(DEPLOYMENT_ID, REVISION, pod, start_time=t1_ms, end_time=t2_ms):
for event in chunk:
print(event.message)
Without end_time the same generator tails: it never terminates, and once caught
up it yields an empty chunk each time nothing new is stored yet — the caller
decides when to sleep or break:
import time
for chunk in cclient.fetch_logs(DEPLOYMENT_ID, REVISION, pod):
if not chunk:
time.sleep(2)
continue
for event in chunk:
print(event.message)
python examples/sdk/get_deployment_logs.py runs both. get_deployment_logs(),
get_deployment_logs_range() and deployment_log_session() still work but are
deprecated in favor of fetch_logs() and emit a DeprecationWarning on use.
Un-installation
To uninstall centml, simply do:
pip uninstall centml
CLI
Once installed, use the centml CLI tool with the following command:
centml
If you want tab completion, run
source scripts/completions/completion.<shell language>
Shell language can be: bash, zsh, fish
(Hint: add source /path/to/completions/completion.<shell language> to your ~/.bashrc, ~/.zshrc or ~/.config/fish/completions/centml.fish)
Tests
To run tests, first install required packages:
pip install -r requirements-dev.txt
cd tests
When running on a local machine, it is recommended to run tests with the following command. This skips tests that require a GPU.
pytest --sanity
To run all the tests, use:
pytest
Common Issues
-
SSLcertificate onMacOSSometimes, you will see issues when using command like
centml cluster [CMD], where the output might look like:File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/urllib3/util/retry.py", line 519, in increment raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.centml.com', port=443): Max retries exceeded with url: /deployments (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)')))
Solution: To fix this issue, navigate to your
pythoninstallation directory and run theInstall Certificates.commandfile located there.For example, if you are using
python3.10, the file path would be:/Applications/Python 3.10/Install Certificates.command
Metadata
Release files for centml 0.7.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| centml-0.7.1.tar.gz | 46.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| centml-0.7.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.1 kB
Release files / centml-0.7.1.tar.gz
| Download URL | centml-0.7.1.tar.gz |
|---|---|
| Size | 46.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ababa886b7a9ed95dd0aff9564e6f6a1c13d9672b2c87d8fa8baeb4754aebe1a
|
|
BLAKE2b-256 checksum How to use checksums |
b337ce3201cc6a72a096f5f97d43018dc47fa100eefd151302271f334b707b18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / centml-0.7.1-py3-none-any.whl
| Download URL | centml-0.7.1-py3-none-any.whl |
|---|---|
| Size | 32.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6189f3ff26a66eacb18b2d81f3270c9ef92d34b1e96941cf95f1a5875466c550
|
|
BLAKE2b-256 checksum How to use checksums |
cce946028b9b343d8d877e0bd012594f4e3cd214171f549811d8489599540596
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency log