CLI and SDK for JarvisLabs.ai GPU cloud
Project description
jarvislabs
CLI and Python SDK for managing GPU instances on JarvisLabs.ai.
Beta release. The v0.2 rewrite is in pre-release. Install with
--preto get it.
Installation
As a CLI tool (recommended)
uv tool install --pre jarvislabs
To upgrade:
uv tool upgrade --pre jarvislabs
As a library
pip install --pre jarvislabs
Or with uv:
uv pip install --pre jarvislabs
Requires Python 3.11+.
Authentication
Get your API key at jarvislabs.ai/settings/api-keys.
jl setup
Or set an environment variable:
export JL_API_KEY="your_api_key"
CLI Quick Start
# See available GPUs and pricing
jl gpus
# Create an instance
jl instance create --gpu A100 --name "my-instance"
# Create an instance and expose a custom HTTP port
jl instance create --gpu RTX5000 --http-ports 7860
# SSH into it
jl instance ssh <machine_id>
# Pause when done (stops compute billing, data persists)
jl instance pause <machine_id>
# Resume later — optionally with different hardware
jl instance resume <machine_id> --gpu H100
# Destroy when no longer needed
jl instance destroy <machine_id>
Managed Runs
Run scripts on GPU instances without manual setup. Code is uploaded, a virtual environment is created, and logs are tracked automatically.
# Run a training script on a fresh GPU (instance auto-pauses when done)
jl run train.py --gpu RTX5000
# Start a long-running web app on a fresh GPU and expose port 8000
jl run app.py --gpu RTX5000 --http-ports 8000 --keep --no-follow
# Pass script arguments
jl run train.py --gpu RTX5000 -- --epochs 50 --lr 0.001
# Sync a project directory and run a script inside it
jl run . --script train.py --gpu A100 --requirements requirements.txt
# Run on an existing instance
jl run train.py --on <machine_id>
# Check on a run
jl run logs <run_id> --follow
jl run status <run_id>
jl run stop <run_id>
More Commands
jl status # Account info and balance
jl templates # Available framework templates
jl instance list # List all instances
jl instance exec <id> -- nvidia-smi # Run a command remotely
jl instance upload <id> ./data # Upload files
jl instance download <id> /home/results.csv # Download files
jl ssh-key add ~/.ssh/id_ed25519.pub --name "my-key"
jl scripts add ./setup.sh --name "install-deps"
jl filesystem create --name "datasets" --storage 200
jl instance get <id> # Shows Jupyter + exposed port URLs
Every command supports --help, --json (machine-readable output), and --yes (skip confirmations).
Python SDK
from jarvislabs import Client
with Client() as client:
# Create a GPU instance (blocks until running)
inst = client.instances.create(gpu_type="A100", name="my-run")
print(f"SSH: {inst.ssh_command}")
print(f"URL: {inst.url}")
# When done
client.instances.pause(inst.machine_id)
from jarvislabs import Client
with Client() as client:
# List and filter instances
running = [i for i in client.instances.list() if i.status == "Running"]
# Check GPU availability and pricing
for gpu in client.account.gpu_availability():
print(f"{gpu.gpu_type}: {gpu.num_free_devices} free, ${gpu.price_per_hour}/hr")
# Manage filesystems
fs_id = client.filesystems.create(fs_name="data", storage=100)
# Manage startup scripts
client.scripts.add(script="#!/bin/bash\npip install wandb", name="setup")
Development
uv pip install -e ".[dev]"
uv run ruff format . && uv run ruff check --fix .
uv run pytest
License
Project details
Release history Release notifications | RSS feed
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 jarvislabs-0.2.0b13.tar.gz.
File metadata
- Download URL: jarvislabs-0.2.0b13.tar.gz
- Upload date:
- Size: 42.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ddf4a673fbcac9866e98ccbdd6153fede3fd5f63d07307fee7de47fc43c91eb
|
|
| MD5 |
44d76991db49e5211200d2f36aeb0460
|
|
| BLAKE2b-256 |
f4061473875d0e588005a7b2b21ce4bf90d34e1a95ff50c335d92bcca0aff0ce
|
File details
Details for the file jarvislabs-0.2.0b13-py3-none-any.whl.
File metadata
- Download URL: jarvislabs-0.2.0b13-py3-none-any.whl
- Upload date:
- Size: 49.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a66ced961d7e2b2ff011fad622bea717d6cfee9089b70854226d53909a2edd9d
|
|
| MD5 |
4b3817ac09940e93ace361c94d9829ef
|
|
| BLAKE2b-256 |
42f6ef3a816de57cb45a0213182af21ba838fabd64dd500b70ebeae5185452e2
|