Skip to content

isard_

Your IsardVDI desktops, from the terminal. Log in with your Gencat account, then create, start, open and script the same virtual desktops the web portal gives you.

# macOS / Linux
$ curl -fsSL https://isard.optersoft.com/install.sh | sh

$ isard login
$ isard list
$ isard view windows

What it is

IsardVDI is the virtual-desktop platform behind the Gencat educational network. The web portal is one way in; isard is the other. It signs in exactly as the portal does — your school account, through Microsoft's login — and keeps the session, so after the first time a command is a single HTTPS call.

Desktops

create, start, stop, delete — and view, which opens one in remote-viewer over SPICE, installing the viewer first if it is missing.

SSH and the VPN

isard ssh goes through IsardVDI's bastion with your own key. isard vpn up joins the desktop network over WireGuard, for every port rather than two.

Scriptable

exec, push, pull, job: stdout is the guest's, the exit code is the guest's, and nothing prompts. A desktop becomes a test machine a script can drive.

Templates

isard build profile.yaml takes a Fedora or Ubuntu ISO to a finished, configured template — everything but the installer's own screens, which you click through in the viewer.

One binary

No runtime, no package manager. A single executable per platform, about 12 MB, verified by SHA-256 before the installer moves it into place.

Your credentials stay yours

No command takes a password as a flag. They come from GENCAT_USERNAME / GENCAT_PASSWORD, a .env, or a prompt — never your shell history.

Install

One line. The installer fetches the release manifest, downloads the binary for your platform, checks its SHA-256 and puts it on your PATH.

macOS and Linux

$ curl -fsSL https://isard.optersoft.com/install.sh | sh

Windows (PowerShell)

> irm https://isard.optersoft.com/install.ps1 | iex

isard 0.4.8 — or download the binary yourself. The Linux builds are static, so they run on any distribution.

PlatformFileSizeSHA-256
macOS · Apple siliconisard-darwin-aarch6411.3 MBe1a94532e50ed0d1164c1913e8c04a08da61288933f7fa1ef28edfbe121c4aa2
macOS · Intelisard-darwin-x86_6412.0 MBaf2598d97bd2d79fb398ff912a9e0b8142cf4e393128629708f7cf41e3ba319f
Linux · x86_64 (static)isard-linux-x86_6412.5 MBfc2d78c93ff55509537ce7accbd1275a5a4e66f90b46d9c7cda819d0c50971b1
Linux · arm64 (static)isard-linux-aarch6411.1 MBd96189c4b86609ae485c4479713b80431cb0d73bb475161d1612a79293b07b6f
Windows · x86_64isard-windows-x86_64.exe13.1 MB5287cb17eefa70e0a50111974bc7cb3289aa66afba2b771c376b53302cf0c407

The same data, for scripts: /api/version. Set ISARD_INSTALL to choose where the binary goes, or ISARD_NO_MODIFY_PATH=1 to leave your shell's startup files alone.

It is on PyPI too, with the Python library: uv tool install isard (just the command) or pip install isard (import isard).

Get started

Log in once. The session is cached in ~/.config/isard/ and renewed by itself when it expires — with your password from the environment or a .env when there is one, from a prompt otherwise.

$ isard login                     # your @edu.gencat.cat account
$ isard list --hardware           # your desktops, with vCPUs and memory
$ isard template list
$ isard create lab -t "Ubuntu Server 24.04_isardvdi_v1"
$ isard start lab
$ isard view lab                  # the desktop's screen, over SPICE
$ isard ssh lab
$ isard stop lab

Names are matched loosely — isard view win finds “Windows 11” when nothing else is close. The full walkthrough, with what each step looks like, is the CLI page of the documentation.

Scripting a desktop

When a test needs a machine the laptop is not — Windows, x86_64, nested virtualization — a desktop can be that machine. These commands never prompt, print only the guest's output on stdout, and exit with the guest's code.

$ isard up windows                # arm the SSH key, start, wait for sshd
$ isard exec windows -- 'Get-Date'
$ isard push windows ./project --mirror   # only what changed
$ isard job windows gate.ps1 -r 'C:\work\result.json' -o result.json
$ isard pull windows 'C:\work\out.txt' -
$ isard stop windows --wait

After the first call the route to the desktop is cached, so an exec is one SSH connection — about two seconds on Windows — and touches no API at all.