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

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

Total release size: 39.6 MB

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

Download URL isard-0.4.6-cp310-abi3-win_amd64.whl
Size 5.7 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
c8d9cfd7b969d4a7c7cae5e60205e5216837ccadc20c29f162ec4748d7772dc2
BLAKE2b-256 checksum
How to use checksums
387022a5c1d16e6c71d1d6fb43365327f649d61f06d8c81475d9a2716606dc7b
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.6-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL isard-0.4.6-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
4940b799788bdf106dd8680c5640b649f19f5fe409d8ebbe82709eeca0e2f334
BLAKE2b-256 checksum
How to use checksums
d98627882b6d781abb1422b131de6d6015a78c2ac98e99158ea1b66b51682d9a
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.6-cp310-abi3-musllinux_1_2_aarch64.whl

Download URL isard-0.4.6-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
3244628bea2aba6a3e7b2131ad65f3478abcaac5a83834d30851376dbc0b328e
BLAKE2b-256 checksum
How to use checksums
03e4f918ef780f861c16dbc14bdfa2d98f9b3f3a78a024bfaa3d0773bdf9cd9d
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.6-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL isard-0.4.6-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
431cd050d2545120ff5055de2f1322c361ee2cb7f28c7794ffd682513f08f107
BLAKE2b-256 checksum
How to use checksums
6a03af0dc04a1d25f63d668d0815db5dd878b4ad4109440cb21f8eccfcc61ca3
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.6-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL isard-0.4.6-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
2ee3831cae83f40b00972484995fbfea547a6393cbc398b9136e08c259834928
BLAKE2b-256 checksum
How to use checksums
a9b53bba2477ba0dc07e1dc7ce654e3b351672d9ae0c23709f23fc850098b645
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.6-cp310-abi3-macosx_11_0_arm64.whl

Download URL isard-0.4.6-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
411d61a2e17f8f7a81cd66e2d09af9fb557bb16227cce7948592a4e160c9d8d3
BLAKE2b-256 checksum
How to use checksums
60c94c2284c8ae228b6d6cf04784a3211f255250e8382bb3ea031dfde8f47658
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.6-cp310-abi3-macosx_10_12_x86_64.whl

Download URL isard-0.4.6-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
c430b12289507220e97059729e565de19374f1468fb69fc23adbda2859227dfe
BLAKE2b-256 checksum
How to use checksums
6604acea417afcc4b855b84a780bd8470495c2cc21ca09360985a5a54513bf7e
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

This release

0.4.6 This release

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