Tamarind CLI
Command-line interface for the Tamarind Bio platform. Discover tools, submit and monitor protein / nucleic-acid / small-molecule jobs, and download results — from your terminal, a script, CI, or an AI coding agent (Claude Code, Codex, …).
The CLI is a thin client over the same API the Tamarind MCP
server uses, so the two stay in lockstep. See
docs/architecture.md for how drift is prevented.
Install
uv tool install tamarind-cli # or: pipx install tamarind-cli
Or with the bootstrap installer (uses uv, pipx, or Python/pip already on
your PATH):
curl -fsSL https://app.tamarind.bio/cli/install.sh | sh
To track the repo directly instead of the PyPI release:
uv tool install "git+https://github.com/Tamarind-Bio/tamarind-cli"
# or: pipx install "git+https://github.com/Tamarind-Bio/tamarind-cli"
Releasing: tag a GitHub Release and the
publish.ymlworkflow builds and uploads to PyPI via Trusted Publishing (configure the trusted publisher fortamarind-clion PyPI first).
Authenticate
Get an API key from the Tamarind web app (Settings → API), then either:
export TAMARIND_API_KEY="sk_..." # best for agents / CI
# or
tamarind auth login # stores it in ~/.tamarind/config.json
tamarind auth status
Quickstart
# 1. Find a tool
tamarind tools --function structure-prediction --modality protein
tamarind tools --search boltz
# 2. Inspect its parameters and grab a runnable example
tamarind schema boltz
tamarind schema boltz --example > job.yaml # most tools ship an example; some don't
# 3. Validate, then submit
tamarind validate boltz --input job.yaml
tamarind submit boltz --input job.yaml --name my-run \
--wait --timeout 3600 --download ./out
# 4. Monitor / fetch
tamarind jobs
tamarind status my-run
tamarind results my-run --download ./out
Set individual fields inline instead of a file:
tamarind submit boltz \
--set inputFormat=sequence \
--set sequence=MKTVRQERLKSIVRIL... \
--name quick-fold
Output for agents
Every command emits JSON when stdout is not a TTY, or with --json. Result
documents are written to stdout. Typed command, transport, and usage errors are
written to stderr as
{"error":{"type":...,"message":...,"exitCode":...,"detail":...}}; detail
is omitted when unavailable. A domain verdict can deliberately combine a
nonzero exit with a result document: invalid validate output remains on
stdout with exit 5, and a terminal unsuccessful job remains on stdout with exit
9 so callers can inspect its status. Exit codes are stable: 0 ok, 1
generic failure, 2 usage, 3 auth, 4 not-found, 5 validation, 6
rate-limit, 7 timeout (a bounded wait elapsed while the remote job may still
run), 8 budget/quota exhaustion, and 9 remote job failure.
For agent workflows, always put a deadline on blocking commands. submit --wait
and results --wait accept --timeout; the standalone wait command remains
the easiest way to reattach to a durable job name.
Starting in 0.2, results requires --download DIR by default and never prints
a presigned URL implicitly. This intentional safety boundary is why the release
uses a new pre-1.0 minor version. The explicit --show-url escape hatch returns
a credential-bearing, short-lived URL; do not use it in agent, CI, or shared logs.
Not every tool ships a runnable example — schema <tool> --example exits non-zero
(with a clear message) when one isn't available, so a > job.yaml redirect never
silently produces an empty file. Destructive commands (delete, files delete)
require --yes/-y when run non-interactively (piped or --json), so an agent
never removes data without an explicit confirmation.
tamarind --json jobs | jq '.jobs[] | select(.JobStatus=="Running")'
--json, --profile, and the endpoint/auth overrides are global options, so
place them before the command name.
Commands
| Group | Commands |
|---|---|
| Discover | tools, modalities, functions, schema |
| Submit | validate, submit, batch |
| Monitor | jobs, status, wait, results, logs |
| Files | files list, files stats, files upload, files delete, files folders |
| Lifecycle | cancel, delete |
| Auth | auth login, auth status, auth logout |
Run tamarind <command> --help for full options.
Configuration
| Setting | Flag | Env var | Default |
|---|---|---|---|
| API key | --api-key |
TAMARIND_API_KEY |
— |
| Job API base | --api-base |
TAMARIND_API_BASE |
https://app.tamarind.bio/api/ |
| Catalog base | --catalog-base |
TAMARIND_CATALOG_BASE |
https://mcp.tamarind.bio |
| Profile | --profile |
TAMARIND_PROFILE |
default |
Profiles (key + endpoints) are stored in ~/.tamarind/config.json. Use a
profile to point at staging:
tamarind --profile staging --api-base https://staging.tamarind.bio/api/ auth login
TAMARIND_PROFILE=staging tamarind tools
Links
- CLI docs — the hosted quickstart and command reference
- MCP server — the hosted option for claude.ai, ChatGPT, and other MCP clients
- API key — get your key and review rate limits
Questions or need help? Contact us at info@tamarind.bio.
License
Licensed under the Apache License 2.0.
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 tamarind_cli-0.2.0.tar.gz.
File metadata
- Download URL: tamarind_cli-0.2.0.tar.gz
- Upload date:
- Size: 73.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26d66094cf974ffb6b257c30a2c94b442ecaaa5eda85f6e28905774286a0ef25
|
|
| MD5 |
f3d7e11d0ef596fef26f35e8d4b4abb3
|
|
| BLAKE2b-256 |
3b2e3c1a6ffd23af82281c8fe84238166eb8a0001f1dc730e6814799ff0a1f77
|
Provenance
The following attestation bundles were made for tamarind_cli-0.2.0.tar.gz:
Publisher:
publish.yml on Tamarind-Bio/tamarind-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tamarind_cli-0.2.0.tar.gz -
Subject digest:
26d66094cf974ffb6b257c30a2c94b442ecaaa5eda85f6e28905774286a0ef25 - Sigstore transparency entry: 2165415103
- Sigstore integration time:
-
Permalink:
Tamarind-Bio/tamarind-cli@f231d4513e6bab0515a34dec750065290025fb81 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Tamarind-Bio
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f231d4513e6bab0515a34dec750065290025fb81 -
Trigger Event:
release
-
Statement type:
File details
Details for the file tamarind_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tamarind_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 44.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
828dcc935bc7ffd24a3772dc367ce090cd0e2ea0925bb5daa7d6dd0f52675aaa
|
|
| MD5 |
45ca6145175a90165806d095656c59a5
|
|
| BLAKE2b-256 |
92ba972c96b3cc4e334efcae5632ea785ad30b7dc5b66d8b2b9eb02b02fd8049
|
Provenance
The following attestation bundles were made for tamarind_cli-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on Tamarind-Bio/tamarind-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tamarind_cli-0.2.0-py3-none-any.whl -
Subject digest:
828dcc935bc7ffd24a3772dc367ce090cd0e2ea0925bb5daa7d6dd0f52675aaa - Sigstore transparency entry: 2165415108
- Sigstore integration time:
-
Permalink:
Tamarind-Bio/tamarind-cli@f231d4513e6bab0515a34dec750065290025fb81 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Tamarind-Bio
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f231d4513e6bab0515a34dec750065290025fb81 -
Trigger Event:
release
-
Statement type: