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.2

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.2
File
isard-0.4.2-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
isard-0.4.2-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
isard-0.4.2-cp310-abi3-musllinux_1_2_aarch64.whl CPython 3.10 abi3 Linux musl 1.2+ ARM64 Details
isard-0.4.2-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.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 abi3 Linux glibc 2.17+ ARM64 Details
isard-0.4.2-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details
isard-0.4.2-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.2-cp310-abi3-win_amd64.whl

Download URL isard-0.4.2-cp310-abi3-win_amd64.whl
Size 5.7 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
d9a4efb0325ebe0ccbec1000605b838d6744637c25b3f03adadf450ca843e37b
BLAKE2b-256 checksum
How to use checksums
90a5891687cd797a3e75cdcb6f889154810cf2d268d887c4557c4637cadf38fa
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.2-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL isard-0.4.2-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
28f0c3ffa045e92ec03d7f75717ddfa333204ffd02255ae0a63c23dc4fc636a4
BLAKE2b-256 checksum
How to use checksums
0444a71379b8b2166407b26cd789f7f3f9ff6f1ba6630f35157a1c1cbee71f1c
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.2-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL isard-0.4.2-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
6b9dcab729bc0f3cc39e07b2931f06c2443b9a39128f1d8bfdb19237baa44651
BLAKE2b-256 checksum
How to use checksums
76a32f1870b9b8e0b05555e2aed36288f67d069eeece9dedac1d8f963dfa2a78
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.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL isard-0.4.2-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
88b77f35852c5c0a5d66e83c13518db89b402d07bf68e09dbd6db65baa8ec3fc
BLAKE2b-256 checksum
How to use checksums
052c218fbce38df47256eac2475f4dae903362ef67b0d5736d0d5b589133c009
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.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL isard-0.4.2-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
2c4f7d5aba002cda0d592c41468fc2ca3416d79b6c999de390c849e108e0de23
BLAKE2b-256 checksum
How to use checksums
ad87178226ef401e07c7dfdf07ff1559dad131f8f673c522bc844696545bb0e5
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.2-cp310-abi3-macosx_11_0_arm64.whl

Download URL isard-0.4.2-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
2e38b7b785a0a0a50cb7dfc5d2880504289d45d35c5c725e803752ded626a0cf
BLAKE2b-256 checksum
How to use checksums
a396559028a4b4656ba1b1cd9f7054ce2fb320d8d3f9684dff390c98cfbdcc0a
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.2-cp310-abi3-macosx_10_12_x86_64.whl

Download URL isard-0.4.2-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
503bc844b12073b257531923c5b7b398c173a1babbebd4fa4f38b0674cd1d20f
BLAKE2b-256 checksum
How to use checksums
3b2be4a52ac7eeeb376421ee55dfca0fff7c79da60f745af46a0b6de478770a4
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

0.4.3

7 release files

This release

0.4.2 This release

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