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

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

Total release size: 39.7 MB

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

Download URL isard-0.4.7-cp310-abi3-win_amd64.whl
Size 5.8 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
507f8d7fefc00fb01716707d75c1c4d3254b64aab99e439af2373b7153e466c0
BLAKE2b-256 checksum
How to use checksums
e376296d2d1e017210f5156328f1c11233e8d66e664f435e25bed0097e00f6e9
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.7-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL isard-0.4.7-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
f19d50842272579f03697f544dc6b23426dcff972ce7df10d08dcb1fcc3e2134
BLAKE2b-256 checksum
How to use checksums
41ee58bc79d9384a203873fb5bd1239934cbfb933ec73282ef9b45878dbfce96
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.7-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL isard-0.4.7-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
81c7de4548eb1cf4649caed9344057e73655ccb54627742b06edf1addc6cdd73
BLAKE2b-256 checksum
How to use checksums
8bca7eb049fa3bfb3ebfd44a1af247905657cd115a10fc77cae503e19658185c
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.7-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL isard-0.4.7-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
2febd2b9b66c72f8d4ddbef87b46331754a2eb1aa5ab957395d58ec14ea08285
BLAKE2b-256 checksum
How to use checksums
bcaa4b04b95968099d4756f4662d75bdcc09b9af8ff6cf63e47d51fe74f424e1
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.7-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL isard-0.4.7-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
9672ba432ee3cbaea11b81ee5e210960a41aebf6560662047bdf31553b256dcc
BLAKE2b-256 checksum
How to use checksums
60779124c3d6dae52b2785ecbfcce8d21cfc1d353e1020fa875818c86040af68
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.7-cp310-abi3-macosx_11_0_arm64.whl

Download URL isard-0.4.7-cp310-abi3-macosx_11_0_arm64.whl
Size 5.4 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
36798fd63fb5077a9830eb3484954830afd421d26f08a200b5e33b865558c253
BLAKE2b-256 checksum
How to use checksums
8726d7ccd9519e49cdbd6855e8135ecb15ae58a66a34d0ad9220c47accbc4d85
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.7-cp310-abi3-macosx_10_12_x86_64.whl

Download URL isard-0.4.7-cp310-abi3-macosx_10_12_x86_64.whl
Size 5.6 MB
Tags CPython 3.10 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
278deffd1fa5054a0221069f958ed7b19120dd6861ce5c0831cbcd83a9ff1951
BLAKE2b-256 checksum
How to use checksums
b619f21c1aeafd2f2c72e9a4627c7da76243c6cb570f1b3ac30dfbc517e5928a
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

This release

0.4.7 This release

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

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