Install the desktop app

Get the desktop app onto a Linux machine: download the .deb, install it, launch, and sign in. Day two takes care of itself.

Watch: install and first launch

Download and install

Open a terminal and paste the whole block below. It downloads the package for this machine from the public GitHub release and installs it with apt. Replace REPLACE_WITH_VERSION with the version shown on the Downloads page in Wingman Chat (/downloads), where the same commands appear with the version already filled in. Supported systems: Ubuntu 20.04, 22.04, 24.04, 26.04 and Debian 12, 13, on Intel/AMD or ARM.

bash

(
  set -e
  d=$(mktemp -d); chmod 755 "$d"; cd "$d"
  sudo apt-get update || echo "Some package sources could not be refreshed; continuing." >&2
  sudo apt-get install -y curl ca-certificates
  v=REPLACE_WITH_VERSION; a=$(dpkg --print-architecture)
  curl -fsSLO --retry 3 "https://github.com/axelera-ai-hub/wingman/releases/download/v$v/wingman_${v}_$a.deb"
  sudo apt-get install -y "./wingman_${v}_$a.deb"
  dpkg-query -W wingman
)

The last command checks the install: it prints wingman and the installed version. On a desktop, you can instead download the .deb for your machine (amd64 for Intel and AMD, arm64 for ARM), double-click it and choose Install. Installing needs sudo once; updates after that are one click inside the app.

  1. Check the installed version

    Run wingman --version at any time to see the installed release. It prints Axelera Wingman and the release version, then the editor version, commit and architecture, and exits without opening the app, so it also works over SSH. Releases before 1.7.51 open the app instead, or stop with a display error over SSH; on those, dpkg-query -W wingman prints the installed version.

    check

    wingman --version
  2. Launch and sign in

    Run wingman from a terminal or open Axelera Wingman from your app launcher. First launch lands on Wingman Home with a sign-in prompt — one click if your organization uses SSO. From there, Sign in & accounts covers every path in.

  3. If the installer refuses because of ownership

    If the install stops with Unsafe ownership prevents Axelera Wingman installation: / (1000:1000), the root directory of your system belongs to your login user instead of root, which the installer refuses because a root process could then be redirected. Repair it once, then run the install commands again; a graphical package installer hides this message and appears to do nothing.

    repair

    ls -ld /
    sudo chown root:root / && sudo chmod 755 /

Verify signatures before installing (optional)

To check the release signature before anything is installed, paste this block instead of the one above. It first refreshes the package lists and installs curl, the CA certificates, GnuPG and python3, which the download, the signature check and the installer need and which minimal Ubuntu and Debian systems do not include. It then downloads the signed installer and its verification files, checks the release key, the signature and the checksum, and installs only when every check passes. Paste the whole block at once, so that a failed check stops the install. Replace REPLACE_WITH_VERSION the same way. Fleet management lives in Security & admin under Deployment, fleets & self-hosting.

bash

(
  set -euo pipefail

  sudo apt-get update || echo "Some package sources could not be refreshed; continuing." >&2
  sudo apt-get install -y curl ca-certificates gnupg python3

  umask 077
  version=REPLACE_WITH_VERSION
  expected_fingerprint=6230D3CDBF7A0F3F60F72BDC75C0A17CBA2288F9
  base="https://github.com/axelera-ai-hub/wingman/releases/download/v$version"
  work_dir="$(mktemp -d)"
  trap 'rm -rf "$work_dir"' EXIT HUP INT TERM
  cd "$work_dir"

  for asset in \
    install-wingman.sh \
    SHA256SUMS \
    SHA256SUMS.sig \
    axelera-wingman-release-public-key.asc; do
    curl --fail --silent --show-error --location \
      --proto '=https' --proto-redir '=https' --tlsv1.2 \
      --connect-timeout 15 --max-time 120 --max-filesize 10485760 \
      --output "$asset" "$base/$asset"
  done

  export GNUPGHOME="$work_dir/gnupg"
  mkdir -m 700 "$GNUPGHOME"
  actual_fingerprint="$(
    gpg --no-options --no-autostart --batch --with-colons \
      --import-options show-only \
      --import axelera-wingman-release-public-key.asc 2>/dev/null \
      | awk -F: '$1 == "fpr" { print toupper($10); exit }'
  )"
  test "$actual_fingerprint" = "$expected_fingerprint"
  gpg --no-options --no-autostart --batch \
    --import axelera-wingman-release-public-key.asc >/dev/null 2>&1
  signature_status="$(
    gpg --no-options --no-autostart --batch --status-fd 1 \
      --verify SHA256SUMS.sig SHA256SUMS 2>/dev/null
  )"
  valid_signer="$(
    awk '$1 == "[GNUPG:]" && $2 == "VALIDSIG" { print toupper($3) }' \
      <<<"$signature_status"
  )"
  test "$valid_signer" = "$expected_fingerprint"

  installer_hashes="$(
    awk '$2 == "install-wingman.sh" || $2 == "*install-wingman.sh" \
      { print tolower($1) }' SHA256SUMS
  )"
  test "$(wc -l <<<"$installer_hashes" | tr -d ' ')" = 1
  [[ "$installer_hashes" =~ ^[0-9a-f]{64}$ ]]
  test "$(sha256sum install-wingman.sh | awk '{ print tolower($1) }')" \
    = "$installer_hashes"

  bash ./install-wingman.sh --version "$version"
)

Version pinning and platforms

Need to stay on a specific version? The release installer takes a --version flag, so fleets can install an exact release rather than the latest. The app still shows newer versions in the title bar, but nothing installs without your authorization.

Today the desktop app is Linux-only. Watch Downloads for the macOS app and the assistant plugins — both are coming soon. On macOS or Windows, use Chat on the web in the meantime.

After day one