Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/juice/troubleshooting/collecting-logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,11 @@ On Linux, the logs are located in a hidden configuration directory in your home
~/.config/Juice GPU/logs
```

If you installed the agent as a Linux service using `https://get.juicelabs.co`, also collect:

```bash
/var/lib/juice/logs/agent_service.log
```

## Step 3: Send the Logs
The log files are named using patterns like client-*.log, agent_service.log, or agent-*.log. When contacting support, please find the most recently modified log files and attach them to your ticket.
20 changes: 20 additions & 0 deletions docs/juice/troubleshooting/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,26 @@ To connect to a remote GPU from an application that you are running through juic

Check your Endpoint Security or Antivirus. If you see any warnings about blocked DLLs or executables, add an exception for **C:\Program Files\Juice GPU\juice**. If you are unable to do so, please contact your IT administrator.

### Linux installer fails with "Token check failed".

The installer validates `INSTALL_JUICE_TOKEN` against the controller before downloading binaries.

- Confirm `INSTALL_JUICE_TOKEN` is present and still valid.
- If you are not using the default controller, set `INSTALL_JUICE_CONTROLLER=<controller-hostname>` in the same command.
- Verify the host can reach the controller over HTTPS.

### Linux installer fails with missing libraries or "Could not install service".

When `INSTALL_JUICE_POOL` is set, the installer requires both client and agent runtime libraries. Common missing libraries are `libvulkan`, `libgl`, or `libnvidia-encode`.

- Check runtime visibility with `ldconfig -p | rg "libvulkan|libGL|libnvidia-encode|libnuma|libatomic"`.
- Make sure NVIDIA drivers are installed correctly so `libnvidia-encode` is present.
- Verify the pool value is valid and accessible by the token (service install fails if pool/token permissions are incorrect).

### Linux installer completed, but no agent service is running.

If `INSTALL_JUICE_POOL` is omitted, the installer only installs the CLI and does not install/start the agent service. Re-run the installer with `INSTALL_JUICE_POOL=<pool-id>` to install the service.

### My agent failed to start.

Check to see if you're already running an agent.
42 changes: 29 additions & 13 deletions docs/juice/user-guide/docker/docker-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,33 +20,49 @@ The official agent is published to our [Dockerhub](https://hub.docker.com/r/juic

## Building a custom agent image:

The Dockerfile for our offical agent is available in our [open source repository](https://github.com/Juice-Labs/juice-oss/tree/main/docker/agent). You can checkout and customize the agent using the following steps:
The Dockerfile for our official agent is available in our [open source repository](https://github.com/Juice-Labs/juice-oss/tree/main/docker/agent). You can customize and build it with the following steps.

1. Open a terminal and clone the respository
1. Open a terminal and clone the repository:
```bash
git clone https://github.com/Juice-Labs/juice-oss.git
cd juice-oss/docker/agent
```

2. Modify the Dockerfile at *docker/agent/Dockerfile*
2. Place these required files in `docker/agent/` before building:

3. Build your custom image:
- `juice-gpu-linux.tar.gz` downloaded from `https://app.juicelabs.co`
- NVIDIA Video Codec SDK zip file, named `Video_Codec_SDK_<version>.zip`

By default, the Dockerfile expects `Video_Codec_SDK_12.0.16.zip`. If you use another SDK archive version, pass `--build-arg VIDEOSDK_VERSION=<version>`.

3. (Optional) Modify `docker/agent/Dockerfile`.

4. Build your custom image:

```bash
docker build -t juice-agent .
```

4. Once the image is built, you can run a container using your M2M token and pool id:
Or build with explicit args:

```bash
docker build \
--build-arg JUICE_VERSION=<juice-version> \
--build-arg VIDEOSDK_VERSION=<video-sdk-version> \
-t juice-agent .
```

5. Once the image is built, run a container using your M2M token and pool ID:

```bash
docker run --rm
-p 7865:7865/udp \
-e JUICE_TOKEN=<YOUR_TOKEN> \
-e JUICE_POOL=<YOUR_POOL_ID> \
-e JUICE_HOST_IP=<YOUR_HOST_IP> \
-v ./logs:/home/juice/agent/log \
--restart unless-stopped \
juice-agent
docker run --rm \
-p 7865:7865/udp \
-e JUICE_TOKEN=<YOUR_TOKEN> \
-e JUICE_POOL=<YOUR_POOL_ID> \
-e JUICE_HOST_IP=<YOUR_HOST_IP> \
-v ./logs:/home/juice/agent/log \
--restart unless-stopped \
juice-agent
```

For detailed information on these parameters and how you can use docker compose to run the agent please see the [README](https://github.com/Juice-Labs/juice-oss/tree/main/docker/agent/README.md)
Expand Down
39 changes: 39 additions & 0 deletions docs/juice/user-guide/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,45 @@ juice gpu list

This shows the GPUs you've just shared plus any other GPUs you might have access to through other pools. Running applications with Juice, without specifying any arguments to limit GPU selection, will choose one of these GPUs to act as the local GPU for that application.

## Linux Agent Installer (Service Mode)

For unattended Linux installs, use the hosted installer script. This installs the `juice` binary and, when a pool is provided, installs and starts the agent service.

```sh
curl -fsSL https://get.juicelabs.co | \
INSTALL_JUICE_TOKEN=<m2m_token> \
INSTALL_JUICE_POOL=<pool-id> \
sh -
```

### Installer behavior and constraints

- `INSTALL_JUICE_TOKEN` is required.
- `INSTALL_JUICE_POOL` is optional.
- If `INSTALL_JUICE_POOL` is omitted, the script installs the CLI only and does not install/start the agent service.
- `INSTALL_JUICE_CONTROLLER` can be set to a custom controller hostname; token validation and release downloads use that controller.
- Extra service flags can be passed as script arguments or through `INSTALL_JUICE_EXEC`.

### Examples

Install CLI only:

```sh
curl -fsSL https://get.juicelabs.co | \
INSTALL_JUICE_TOKEN=<m2m_token> \
sh -
```

Install agent service against a custom controller:

```sh
curl -fsSL https://get.juicelabs.co | \
INSTALL_JUICE_TOKEN=<m2m_token> \
INSTALL_JUICE_POOL=<pool-id> \
INSTALL_JUICE_CONTROLLER=<controller-hostname> \
sh -
```

## Run an Application

There are two ways to launch an application using a remote GPU provided by Juice. The first uses `juice run ...` to launch an executable directly from the command line; the second activates a path beneath which any launched executables will use a Juice GPU.
Expand Down
15 changes: 15 additions & 0 deletions docs/juice/user-guide/setup/systerm-reqs.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ Both the **Client** and **GPU Agent** are supported on Windows 10 and Windows 11

The client and GPU agent are supported on Debian-based distributions (version 10 and greater, like Ubuntu 18.04) and Red Hat Enterprise Linux (RHEL) 8-based distributions, such as AlmaLinux 8 or greater. Other distributions with similar or newer release dates are also likely supported.

If you are using the Linux installer script (`https://get.juicelabs.co`), the host must provide **glibc 2.27 or newer**.

:::note
Currently, only the client is supported when running in WSL on Windows.
:::
Expand Down Expand Up @@ -84,6 +86,8 @@ On all platforms an NVIDIA GPU with an installed driver version 535 or greater,

- libgl1

- libnvidia-encode (provided by your NVIDIA driver installation)

- libglib2.0-0


Expand All @@ -105,6 +109,8 @@ On all platforms an NVIDIA GPU with an installed driver version 535 or greater,
- vulkan-loader

- mesa-libGL

- libnvidia-encode (provided by your NVIDIA driver installation)

- glib2

Expand All @@ -116,4 +122,13 @@ On all platforms an NVIDIA GPU with an installed driver version 535 or greater,
```
:::

## Installer Dependency Checks (Linux Script)

The installer script checks dependencies in two groups:

- Client dependencies (always required): `libnuma`, `libatomic`
- Agent dependencies (required only when `INSTALL_JUICE_POOL` is set): `libvulkan`, `libgl`, `libnvidia-encode`

If you run the installer without `INSTALL_JUICE_POOL`, missing agent-only dependencies are reported as warnings instead of hard failures.