Metadata-Version: 2.4
Name: jarvislabs
Version: 0.2.0b2
Summary: CLI and SDK for JarvisLabs.ai GPU cloud
Keywords: gpu,cloud,jarvislabs,cli,sdk
Author: Team Jarvislabs.ai
Author-email: Team Jarvislabs.ai <hello@jarvislabs.ai>
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: httpx>=0.27,<1
Requires-Dist: pydantic>=2.10
Requires-Dist: typer>=0.12
Requires-Dist: rich>=13.0
Requires-Dist: platformdirs>=4.0
Requires-Dist: tomli-w>=1.0
Requires-Python: >=3.11
Project-URL: Homepage, https://jarvislabs.ai
Project-URL: Repository, https://github.com/jarvislabsai/jarvislabs
Description-Content-Type: text/markdown

# jarvislabs

CLI and Python SDK for managing JarvisLabs GPU instances.

Detailed docs are being revised. For now, use `jl --help`, `jl run --help`, and the examples below.

## Installation

From source:

```bash
uv pip install -e .
```

As a package:

```bash
uv pip install jarvislabs
```

## Authentication

```bash
jl login
```

Or set an env var:

```bash
export JL_API_KEY="<your_api_key>"
```

## CLI Quick Start

Show top-level help and command groups:

```bash
jl --help
jl instance --help
jl scripts --help
jl filesystem --help
```

Common commands:

```bash
jl status
jl gpus
jl templates
jl instance list
jl scripts list
jl filesystem list
```

Instance lifecycle:

```bash
jl instance create --gpu A100 --storage 40 --name my-instance
jl instance pause <machine_id>
jl instance resume <machine_id>
jl instance destroy <machine_id>
```

Script and filesystem integration:

```bash
jl scripts add ./startup.sh --name setup-script
jl filesystem create --name data --storage 120
jl instance create --gpu A100 --script-id <script_id> --fs-id <fs_id>
```

## SDK Quick Start

```python
from jarvislabs import Client

with Client() as client:
    instances = client.instances.list()
    print([i.machine_id for i in instances])
```

Create an instance:

```python
from jarvislabs import Client

with Client() as client:
    inst = client.instances.create(
        gpu_type="A100",
        num_gpus=1,
        template="pytorch",
        storage=40,
        name="my-instance",
    )
    print(inst.machine_id, inst.status)
```

## Current Behavior Notes

- Region is automatically resolved by the SDK/CLI.
- `create`/`resume` are reserved-only (`is_reserved=True`).
- CLI command naming uses `list` consistently (`instance list`, `scripts list`, `filesystem list`).

## Development

```bash
uv run ruff format .
uv run ruff check --fix .
uv run pytest
```
