ThinkPlatform Client
ThinkPlatform Client provides the tp command-line interface and Python SDK for working with a ThinkPlatform service. Install it into a supported Python environment and connect it to a service URL and credentials supplied by your deployment.
Install
python -m pip install --upgrade pip
python -m pip install ThinkPlatform-client
The public binary wheels target CPython 3.11–3.13 on Linux x86_64 (glibc 2.28 or newer), macOS 11 or newer on Apple silicon (arm64), and Windows x86_64. Source distributions are not published. Other Python versions and platforms are outside the public wheel support matrix. Use a fresh virtual environment if migrating from a full ThinkPlatform runtime installation.
Command line
tp --help
Interactive profile setup guides a person through the connection and context
choices without requiring them to look up organization or project IDs first.
This command is not included in the published ThinkPlatform-client 0.6.103;
the example below applies to a client build that includes the feature.
tp profile setup
The wizard asks for a profile name and connection defaults, authenticates with the configured credential, then lists accessible organizations and projects with numbered choices, names and IDs. Choose by number; the ID is shown only to help distinguish entries. After a summary and confirmation, the selected organization and project are saved in the named profile and that profile is activated. For example:
$ tp profile setup
Profile name [default]: staging
Base URL [https://thinkplatform.ai]:
Audience [api://04d6aecc-4540-463a-87e3-4024ffad7428]:
Auth mode [interactive-browser]:
Connecting to https://thinkplatform.ai using interactive-browser.
Organizations:
1. Acme Research (ID: 42)
2. Acme Sandbox (ID: 87)
Select organization: 1
Projects:
1. Sensor project (ID: 301)
2. Archive (ID: 318)
Select project: 1
Profile 'staging': https://thinkplatform.ai; interactive-browser; organization Acme Research (ID: 42); project Sensor project (ID: 301).
Save and activate this profile? [Y/n]: y
Entering staging creates or updates that target profile. An optional root
--profile work supplies a different suggested profile name. The wizard resolves connection defaults
for the target profile, rather than copying settings from whichever profile was
previously active. Root CLI flags and environment variables continue to follow
their usual precedence. Setup is interactive and requires a terminal; it
rejects JSON output and --query before authentication or network access.
Cancelling, an empty access list, or an authentication/API error leaves the
saved configuration unchanged. The wizard makes read requests only; it does
not create or modify service-side resources.
After setup, use ordinary commands with the active profile's saved connection, organization and project:
tp canvas pages list
tp canvas pages get <page_id>
tp mlops jobs list
tp db tables list
The default auto output uses readable tables, fields or text when possible,
with JSON for complex payloads. No output flag is required. For machine-readable
output or field extraction, opt in separately:
tp --json canvas pages list
tp --query user.username whoami
To switch saved profiles, use tp profile use staging. Root --profile,
--org-id and --project-id flags are optional per-invocation overrides.
For agents and scripts, keep using the explicit, non-wizard commands. For
example, inspect context with tp context orgs and tp context projects, then
use tp configure --no-prompt with root --org-id and --project-id options.
The existing tp configure prompt also remains available for offline setup of
connection defaults without discovering organizations or projects.
With no deployment settings configured, the CLI uses https://thinkplatform.ai, API audience api://04d6aecc-4540-463a-87e3-4024ffad7428, and interactive-browser sign-in through a shared public client registration. The built-in tenant is 5a959e94-a278-467d-ab33-d59909a75bad; the built-in CLI application ID is 709439d2-4a99-44c2-8c35-9b1e71cc2e34. These are non-secret public application settings. Users do not need to register an app per installation or provide a client secret.
The registration is single-tenant, supports the http://localhost loopback redirect, and has device-code public-client flow enabled. Your organization may require administrator consent. A successful sign-in does not grant ThinkPlatform membership or resource permissions. The CLI uses the same REST client as the SDK.
For production browser/device authentication, the CLI stores tokens in the operating system's encrypted credential store and keeps a separate non-secret account record under ~/.config/thinkplatform/auth/. Later CLI processes reuse the account silently until Azure requires sign-in again. SDK client_from_profile() uses the same secure cache. If encrypted OS storage is unavailable, authentication fails closed without writing tokens in plaintext. On headless Linux without Secret Service, use Azure CLI authentication instead.
On macOS, this uses a dedicated ThinkPlatform CLI Keychain item. macOS may ask you to allow the Python interpreter to access it. A one-time permission can prompt again on later accesses; persistent permission is an optional trust decision for that interpreter. Changing Python installations can also require permission again. Older preview versions used a Microsoft shared item; the CLI does not read or migrate that item, so sign in again after upgrading if needed. Workspace managed-identity authentication does not use this local user cache.
Custom deployments and sign-in
For a different deployment, set its URL and API audience explicitly. An existing configured deployment that has no explicit auth mode continues to use azure-cli; use the mode approved for that deployment. These environment variables can be replaced by CLI options or a saved CLI profile:
export THINKPLATFORM_API_BASE_URL="https://thinkplatform.example"
export THINKPLATFORM_API_AUDIENCE="api://<api-application-id>"
export THINKPLATFORM_AUTH_MODE="azure-cli"
tp auth login
The examples use POSIX shell syntax; on PowerShell set environment variables with $env:NAME = "value". Azure CLI is a separate installation. Its credential uses the signed-in Azure CLI identity; the API must allow that identity and consent must permit access to its resource. Signing in alone does not establish service access. See Microsoft's Azure CLI credential documentation.
For browser or device-code sign-in to a different deployment, provide its approved public client application ID and tenant:
export THINKPLATFORM_AZURE_CLIENT_ID="<cli-public-client-application-id>"
tp --auth-mode device-code whoami
# Or, on a machine with a local browser:
tp --auth-mode interactive-browser whoami
Keep THINKPLATFORM_API_AUDIENCE configured for the target API. The API audience identifies the target API; THINKPLATFORM_AZURE_CLIENT_ID identifies the sign-in client. They serve different purposes. The CLI requests the API audience with /.default appended. Set the audience explicitly rather than relying on the legacy AZURE_CLIENT_ID audience fallback, which can accidentally target the sign-in client instead of the API.
The production CLI defaults apply only when the effective URL and audience are exactly https://thinkplatform.ai and api://04d6aecc-4540-463a-87e3-4024ffad7428, with browser or device-code auth selected. Explicit client ID and tenant environment variables override the built-in values. For custom URL/audience combinations, set the deployment's approved IDs yourself. Tenant lookup prefers THINKPLATFORM_AZURE_TENANT_ID over AZURE_TENANT_ID; client ID lookup prefers THINKPLATFORM_AZURE_CLIENT_ID over AZURE_CLIENT_ID. Client ID and tenant are read from the environment rather than stored in CLI profiles. The base URL, audience, auth mode, and connection settings can be selected through CLI flags or profiles.
For custom deployments, administrators should provision and validate a dedicated CLI public-client registration, configure its delegated API permissions and required tenant consent, and distribute the non-secret client ID, tenant and API audience to users. Users can share that approved registration; they do not need to create an app per installation. Choose the supported account/tenant configuration for the deployment. Do not distribute a client secret or reuse a confidential web application's credentials. Device-code sign-in requires public client flows to be enabled. Browser sign-in uses a local loopback redirect; this CLI leaves the port selection to Azure Identity, so configure http://localhost under the Mobile and desktop applications platform in the registration. See Microsoft's public-client setup guidance and desktop application configuration. A registration is ready for onboarding only after both the Entra configuration and API admission have been verified for that deployment.
workspace-delegation is for a provisioned workspace using managed identity and a workspace assertion; its optional client ID selects a user-assigned managed identity, not a desktop sign-in registration. execution-delegation uses an API-issued execution token bound to its service and org/project context. Obtain these configurations from the workspace or execution environment rather than setting a public-client ID for them.
Python SDK
from thinkplatform.sdk import ThinkPlatformClient
from thinkplatform.sdk.credentials import AzureCliCredential
client = ThinkPlatformClient(
base_url="https://thinkplatform.example",
audience="api://your-service",
credential=AzureCliCredential(),
)
user = client.auth.whoami()
organizations = client.organizations.list()
The SDK also provides profile and environment based client factories, typed resource clients, and context helpers. Flow and Agent API operations are available without installing their execution engines.
Compatibility and security
The CLI and SDK are clients for an existing ThinkPlatform service; they do not include the service or grant access to it. The service remains responsible for authenticating requests and enforcing authorization. Cython wheels omit the original Python implementation files, but compiled code, names, documentation strings, and string constants can still be inspected. Do not treat the wheel format as a security boundary or put secrets in client code.
Metadata
Release files for ThinkPlatform-client 0.6.104
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 37.5 MB
Release files / thinkplatform_client-0.6.104-cp313-cp313-win_amd64.whl
| Download URL | thinkplatform_client-0.6.104-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
71956c84f00c6e23c9b64fc2ba6a4626c9149b08e9cd4b6514a793852ce47e4c
|
|
BLAKE2b-256 checksum How to use checksums |
a6f594447da8783229eb55a6d2dbc07afb20fa00d4c3e3b28c3f0df0a0972e7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | thinkplatform_client-0.6.104-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 5.1 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
aa67af15a6c919464c763c8c61941614087eff6db7f1e3afdc90d6fa0f10d2c6
|
|
BLAKE2b-256 checksum How to use checksums |
a0d890ec031e5a0a9cb8e7ed7238e0f8bc03e77e0545ab40c0366b752664c3ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | thinkplatform_client-0.6.104-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7ec07798e256d4a5805b361ecedd429e4a45592fec6def834268c2a71b799d75
|
|
BLAKE2b-256 checksum How to use checksums |
f1a3a2eddb51339803c6ec41105010fc01df44cb3497b78c105f90c2abc2e747
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp312-cp312-win_amd64.whl
| Download URL | thinkplatform_client-0.6.104-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2817bb703c3ff49325f5972cfb0c977358b88d3ea16b0d533c03ca96eee38ab1
|
|
BLAKE2b-256 checksum How to use checksums |
22c3780c2e5c9b535d878f4958487e0d42f4cc6f5daf91d24ecac65325add2d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | thinkplatform_client-0.6.104-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 5.0 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
83ee03a14922def00cb51a451014d0ded2b2b42d2804de4930540aaabd97357f
|
|
BLAKE2b-256 checksum How to use checksums |
0501832753d61a384f1046b801c7cf3de8241b69a49342f8d515e9e9a52a9e77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | thinkplatform_client-0.6.104-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ad8805437ca97ed0c168f3971fc5b76ba1dbaf228259996cd9e06f4680d423ea
|
|
BLAKE2b-256 checksum How to use checksums |
216c06305a4b29f550a38f48288849c2cd5e92b2412cbfdea0f3a11d21f38671
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp311-cp311-win_amd64.whl
| Download URL | thinkplatform_client-0.6.104-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 4.0 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1cebb127ac3b99030cdeb4fc861c1a4023161174860af32c391139da904e452b
|
|
BLAKE2b-256 checksum How to use checksums |
003fec85c45d629f8aa8ded85a0cc26cead371e1d8aff36391e06ed09e3e1591
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | thinkplatform_client-0.6.104-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 5.5 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
04073a3afbe347f89b2d1721dbf5a6ed72d6831e2bd8cf9b6dd9b5ac07ab2e8f
|
|
BLAKE2b-256 checksum How to use checksums |
84de69da9036f39b61b2e1b50a8eea304f8c4fbeabce07fef1924c0b01d47361
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logRelease files / thinkplatform_client-0.6.104-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | thinkplatform_client-0.6.104-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6ea547321022e87891224ded34a5e4d34702f5dc749ead1868e60c79b137994e
|
|
BLAKE2b-256 checksum How to use checksums |
022cf3db311fc666ff8ce6324b769406aabd299b2611956f570a44be947e648b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
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 Oct 27, 2026.
Transparency logSecurity for ThinkPlatform-client 0.6.104
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.
Full provenance
All 9 files in this release have been uploaded with provenance metadata.
Attestation for thinkplatform_client-0.6.104-cp313-cp313-win_amd64.whl
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 Oct 27, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.