> ## Documentation Index
> Fetch the complete documentation index at: https://docs.almond.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# gst.install

> Install the host-side GStreamer + PyGObject support for the GPU-resident ZED camera pipeline.

Installs the host-side GStreamer support — the GObject-introspection typelibs and **PyGObject** — that the unified ZED camera pipeline needs for [`teleop --cameras`](/cli/teleop) and [`collect-data`](/cli/collect-data). Both commands grab and encode the cameras entirely on the GPU via [`almond_axol.video.gst_zed`](/api/vr): the zed-gstreamer source elements (`zedxonesrc` / `zedsrc`) feed the Jetson hardware **NVENC** (`nvvidconv` / `nvv4l2h264enc`), and an in-process `appsink` pulls the encoded H.264 access units (for the headset view) and raw frames (for the dataset). WebRTC transport itself stays on **aiortc** (a normal Python dependency) — this command does **not** install the `webrtcbin`/libnice path.

```bash theme={null}
axol gst.install
```

This command:

* `apt`-installs the GStreamer tools/plugins and the GObject-introspection typelibs + build deps (`gstreamer1.0-tools`, `gstreamer1.0-plugins-bad`, `gir1.2-gstreamer-1.0`, `gir1.2-gst-plugins-base-1.0`, `libgirepository1.0-dev`, `gobject-introspection`, `libcairo2-dev`, `pkg-config`).
* Builds **PyGObject** (`pygobject>=3.50,<3.52`) into the axol environment so the in-process pipeline can read `appsink` buffers. PyGObject is not a usable PyPI wheel (it builds against the system gobject-introspection), so it can't be a normal dependency — the same reason [`zed.install`](/installation) builds `pyzed` here.
* Verifies its **own** deliverables — that PyGObject can import `gi` + `GstApp` (the `appsink` reader) and that the NVENC elements (`nvvidconv`, `nvv4l2h264enc`) are present — and fails if any are missing. The NVENC elements aren't `apt`-installable; they ship with the Jetson L4T BSP. The zed-gstreamer source elements (`zedxonesrc` / `zedsrc`) are **not** gated here — they're built separately by [`gst.build-zed`](/cli/gst-build-zed), which the one-command install runs right *after* this command, so their absence is expected on a first install and is reported only as an informational note (not a warning).

The [one-command install](/installation) runs this for you. It is **not** run at `teleop` / `serve` startup — those entry points just run; install (the source-plugin build [`gst.build-zed`](/cli/gst-build-zed) and the Jetson clock setup [`jetson.setup`](/cli/jetson-setup)) is owned by the installer.

<Note>
  Best-effort and idempotent: it skips when the stack is already present, and is a no-op on machines without `apt-get`. When the gst stack is unavailable the cameras fall back to the ZED Python SDK grab path (higher latency).
</Note>
