Skip to main content

isard

Gencat / IsardVDI from Python — and the isard command line — in one wheel. The client is written in Rust and compiled into the package (the way polars ships), so there is nothing to build and no dependency to resolve.

pip install isard        # or: uv tool install isard   (just the CLI)

The command line

isard login
isard list --hardware
isard up windows                      # start it, arm the SSH key, wait for sshd
isard exec windows -- 'Get-Date'      # stdout is data, the exit code is the guest's
isard stop windows --wait

isard --help lists every command. The same CLI is downloadable as a single binary from https://isard.xtec.dev, with the documentation at https://isard.xtec.dev/docs/.

The library

import isard

client = isard.connect()        # the CLI's cached session, or a fresh login
for desktop in client.get_desktops(hardware=True):
    print(desktop["name"], desktop["state"], desktop["vcpus"])

desktop = client.get_desktops("windows")[0]
client.start_desktop(desktop["id"])
client.wait_desktop(desktop["id"], "Started")
  • Credentials come from the arguments of connect() / login(), else GENCAT_USERNAME / GENCAT_PASSWORD (a .env file works, and so does ~/.config/isard/.env). The library never prompts.
  • An API key wins: with ISARD_API_KEY set (environment or .env) and no arguments, connect() uses that key — no login, no cache, and a 401 is raised rather than retried. Make one with isard api-key create.
  • Sessions are shared with the CLI: connect() reuses ~/.config/isard/isardvdi.json and caches a new login there, and a 401 on a cached token logs in again once and retries.
  • Records are plain dicts — Desktop, Template, Media, … are TypedDicts in the type stubs.
  • Errors are isard.IsardError subclasses: HttpError (with status_code), NetworkError, AuthError, BookingRequiredError, IsardTimeoutError, ….
  • Calls block, and release the GIL while they wait — run them in threads freely.
  • Seeds: isard.render_cloud_init("box-1", "isard", "pw") → (user_data, meta_data), isard.render_kickstart(…), and isard.build_seed_iso("cidata", {"user-data": …, "meta-data": …}, "seed.iso") — pure Rust, no xorriso.
  • On a desktop: isard.Remote("windows") runs commands and moves files over the route isard up windows cached — .run("Get-Date")["stdout"], .push("~/proj", mirror=True), .get(path), .put(data, path), .job(script, result). It keeps the GIL and stays on the thread that made it.

Licensed MIT OR Apache-2.0.

Metadata

Release files for isard 0.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for isard 0.4.3
File
isard-0.4.3-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
isard-0.4.3-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
isard-0.4.3-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
isard-0.4.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 abi3 Linux glibc 2.17+ x86-64 Details
isard-0.4.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
isard-0.4.3-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
isard-0.4.3-cp310-abi3-macosx_10_12_x86_64.whl CPython 3.10 abi3 macOS 10.12+ x86-64 Details

Total release size: 39.2 MB

Release files / isard-0.4.3-cp310-abi3-win_amd64.whl

Download URL isard-0.4.3-cp310-abi3-win_amd64.whl
Size 5.7 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e318fe790edc5618a33b50f0e3e411a2b5095ebad5e79fd0cddf851da7f3470b
BLAKE2b-256 checksum
How to use checksums
b99133561c4b298f8b9373564362489d118991d89db6715a0c8cf3b2d97b7d6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / isard-0.4.3-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL isard-0.4.3-cp310-abi3-musllinux_1_2_x86_64.whl
Size 5.8 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
75bfeaf3f9e786c71d261a56112ef29baeae02b9a50aebf78171c95b34aaaa94
BLAKE2b-256 checksum
How to use checksums
72b695882c2c77a4034daa389d63b1566b9769c168b9b1112d52e801233035c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / isard-0.4.3-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL isard-0.4.3-cp310-abi3-musllinux_1_2_aarch64.whl
Size 5.6 MB
Tags CPython 3.10 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
72cd938b0a33c568ea657b31e08721c14c3b9c4ea5f8bfe26ad27091918f764b
BLAKE2b-256 checksum
How to use checksums
24561dac122435e15d3bc6d1238a5df190d8e22143be5ff8ce703ac65e3d8033
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / isard-0.4.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL isard-0.4.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.8 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
b5560d516a57835462cabe3e130cacb848f967eae11e39ecaacbe2fa31f35539
BLAKE2b-256 checksum
How to use checksums
e9d576ed9c91065dc308742169fd7ce20df12a7611ec8a6d0b1dbe98220dab74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / isard-0.4.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL isard-0.4.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 5.6 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
f890932f9b94235d3cef3f1f7d31e6a1649cb5946d123c93d3cad2fbea40b6c8
BLAKE2b-256 checksum
How to use checksums
fd62eabca592aa65ec1d7ddfe024daacfd34806d3034e1b7b2eb1df3650d1bea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / isard-0.4.3-cp310-abi3-macosx_11_0_arm64.whl

Download URL isard-0.4.3-cp310-abi3-macosx_11_0_arm64.whl
Size 5.3 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1a0e13b14e5709f9367575d0fa8bbe1dec586cb15e9011c95438be598eb8d9e9
BLAKE2b-256 checksum
How to use checksums
beaeac1973128875f9a8a91bf35ed5011db75eb39e8ab9751e60c2f1ff72fdc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / isard-0.4.3-cp310-abi3-macosx_10_12_x86_64.whl

Download URL isard-0.4.3-cp310-abi3-macosx_10_12_x86_64.whl
Size 5.5 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
abc41eca79272668fcd55f10d26a9380c25bf5858f01e633907094a33fe28b32
BLAKE2b-256 checksum
How to use checksums
9568b6bc7b0a0d877e5f6d504d36c6605aed303145ac19a918602e61687f2187
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

0.4.7

7 release files

0.4.6

7 release files

0.4.5

7 release files

0.4.4

7 release files

This release

0.4.3 This release

7 release files

0.4.2

7 release files

0.4.1

7 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page