Tyko Client - Python SDK
Official Python SDK for Tyko Labs.
Track experiments, manage models, and version datasets with a simple, intuitive API.
Hierarchy
Tyko uses a three-level hierarchy to organize your ML work:
Project → Experiment → Run
- Project: Top-level container for your ML project (e.g., "mnist-classifier")
- Experiment: Groups related runs for comparison (e.g., "hyperparameter-search")
- Run: A single training execution with parameters, metrics, and artifacts
Installation
Install via pip:
pip install tyko
Quick Start
from tyko import TykoClient
client = TykoClient()
# Simplest usage - just project name (uses "default" experiment)
# Environment info (Python version, CPU, GPU, etc.) is auto-captured
with client.start_run(project="my-ml-project") as run:
run.params["learning_rate"] = 0.001
run.params["batch_size"] = 32
# ... your training code ...
# With params at creation time
with client.start_run(
project="my-ml-project",
experiment="hyperparameter-search",
params={"learning_rate": 0.01, "batch_size": 64}
) as run:
# Params are already set, can add more during the run
run.params["epochs"] = 100
# ... your training code ...
Environment Capture
Environment information is automatically captured when you start a run:
- Python version
- Operating system/platform
- CPU count
- RAM size (if
psutilis installed) - GPU count and names (if
torchis available)
You can also manually add environment details:
with client.start_run(project="ml-experiments") as run:
# Add custom environment info
run.environment["git_commit"] = "abc123"
run.environment["cuda_version"] = "12.1"
To use the standalone function:
from tyko import capture_environment
env = capture_environment()
print(env) # {'python_version': '3.12.1', 'platform': 'Linux-...', ...}
Metric Logging
Log metrics during training using run.log():
with client.start_run(project="image-classifier") as run:
run.params["learning_rate"] = 0.001
run.params["batch_size"] = 32
for epoch in range(100):
train_loss = train_epoch(model, train_data)
val_loss, val_acc = evaluate(model, val_data)
# Log multiple metrics at once
run.log({
"train/loss": train_loss,
"eval/loss": val_loss,
"eval/accuracy": val_acc,
"epoch": epoch,
})
Metric Naming Conventions
Use prefixes with slashes for grouped visualization in the dashboard:
| Pattern | Example | Dashboard Grouping |
|---|---|---|
prefix/metric |
train/loss, train/accuracy |
Grouped under "train" |
prefix/metric |
eval/loss, eval/accuracy |
Grouped under "eval" |
| Plain name | epoch, step |
Ungrouped |
This allows the dashboard to organize metrics into logical groups automatically.
Configuration
API Key
Set your API key via environment variable (recommended):
export TYKO_API_KEY="your-api-key"
Or pass it explicitly:
client = TykoClient(api_key="your-api-key")
If the server has anonymous access enabled (ALLOW_ANONYMOUS=true), no API key is needed:
client = TykoClient(api_url="https://your-server.com")
Server URL
For self-hosted deployments, set the server URL:
export TYKO_API_URL="https://your-server.com"
Or:
client = TykoClient(api_url="https://your-server.com")
Development
Prerequisites
- Python 3.11+
- uv package manager
Setup
cd packages/tyko-client
uv sync
Testing
moon run tyko-client:test
Linting
# Check code style
moon run tyko-client:ruff
# Format code
moon run tyko-client:black
# Type checking
moon run tyko-client:mypy
# All three
moon run tyko-client:lint
Building
moon run tyko-client:build
Metadata
Release files for tyko 0.1.50
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tyko-0.1.50.tar.gz | 66.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tyko-0.1.50-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 113.6 kB
Release files / tyko-0.1.50.tar.gz
| Download URL | tyko-0.1.50.tar.gz |
|---|---|
| Size | 66.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
471a0d9203f46fab22a66a2e40a27a115d6a71c5b372295961207af3825a7a98
|
|
BLAKE2b-256 checksum How to use checksums |
580f79558cd313a0b94fdacab0c6e25b4b58e5ab363bc0cc3d11a96125acc31d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.17.0 {"ci":true,"cpu":"x86_64","distro":{"id":"bookworm","libc":{"lib":"glibc","version":"2.36"},"name":"Debian GNU/Linux","version":"12"},"implementation":{"name":"CPython","version":"3.14.5"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.5.6 7 Apr 2026","python":"3.14.5","system":{"name":"Linux","release":"6.19.14+deb14-amd64"}} HTTPX2/2.4.0
|
Release files / tyko-0.1.50-py3-none-any.whl
| Download URL | tyko-0.1.50-py3-none-any.whl |
|---|---|
| Size | 46.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e797b0aa6e79e1993a113c7f693ba23216bc73520dd9ceafb9fcdce3a3a56d7d
|
|
BLAKE2b-256 checksum How to use checksums |
b01655662a85f35182b251028e71c342ecb4132bb02c1ad5a28358fc69f5bec1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.17.0 {"ci":true,"cpu":"x86_64","distro":{"id":"bookworm","libc":{"lib":"glibc","version":"2.36"},"name":"Debian GNU/Linux","version":"12"},"implementation":{"name":"CPython","version":"3.14.5"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.5.6 7 Apr 2026","python":"3.14.5","system":{"name":"Linux","release":"6.19.14+deb14-amd64"}} HTTPX2/2.4.0
|