# Software

Use the following links to jump over the step by step intro and dive straight into Luxonis SDK and the full OAK software stack:
DepthAI API, tools and examples across OAK USB, PoE and OAK4 cameras.

### DepthAI API (Python/C++)

DepthAI v3 SDK library for building pipelines and apps on OAK and OAK4 cameras.

[Open DepthAI API docs](https://docs.luxonis.com/software-v3/depthai.md)

### oakctl CLI

Command-line tool for managing and configuring OAK4 devices and deploying apps.

[Install oakctl](https://docs.luxonis.com/software-v3/oak-apps/oakctl.md)

### DepthAI Examples

Reference examples for building DepthAI pipelines on OAK cameras.

[Browse examples](https://docs.luxonis.com/software-v3/depthai/examples.md)

For an easy step by step introduction into OAK4 and OAK devices follow the steps below.

Pick the correct getting started guide for your device.

### Connecting OAK4

Use the RVC4-based OAK4 Getting Started guide to set up the hardware and perform the initial configuration.

[OAK4 Getting Started](https://docs.luxonis.com/hardware/platform/deploy/oak4-deployment-guide/oak4-getting-started.md)

### Connecting OAK

Follow the RVC2-based OAK Getting Started to see how to connect it to your host PC.

[OAK Getting Started](https://docs.luxonis.com/hardware/platform/deploy/usb-deployment-guide.md)

After you have your camera connected, the quickest way to start is by running OAK Viewer.

### OAK Viewer

OAK Viewer is a desktop GUI application that allows you to visualize the camera's streams and interact with the device. It is
available for Windows, macOS and Linux.

Warning: In OAK Viewer, you can test only the selected Luxonis Models Zoo models included in Viewer. You cannot upload custom
models or use other Zoo models. For custom-model upload and validation, see the [Use custom models on
HubAI](https://docs.luxonis.com/cloud/tutorials/use-custom-models-on-hub-ai.md) tutorial.

[Click here to get started](https://docs.luxonis.com/software-v3/depthai/tools/oak-viewer.md)

Try out our [pre-made applications](https://github.com/luxonis/oak-examples/tree/main) to dip your toes into our ecosystem. Here
is an example of how to start the generic neural network app:

### Run first application with OAK4

### Install oakctl

#### Linux/MacOS

On 64bit system, run:

```bash
bash -c "$(curl -fsSL https://oakctl-releases.luxonis.com/oakctl-installer.sh)"
```

#### Windows

Download and install using the [Windows
Installer](https://oakctl-releases.luxonis.com/data/latest/windows_x86_64/oakctl-installer.exe).

### Deploy an example App

```bash
# Connect to the device
oakctl connect
# Clone the repo
git clone --depth 1 --branch main https://github.com/luxonis/oak-examples.git
# Change directory to the generic-example
cd oak-examples/neural-networks/generic-example/
# Run the app and follow instructions to open the web viewer
oakctl app run .
```

> **You just ran the App in Standalone mode.**
> See below for the difference between Standalone and Peripheral mode.

[Continue exploring other pre-made applications](https://github.com/luxonis/oak-examples/tree/main)

### Run first application with OAK

#### Linux/MacOS

```bash
# Clone the repo
git clone --depth 1 --branch main https://github.com/luxonis/oak-examples.git
# Change directory to the generic-example
cd oak-examples/neural-networks/generic-example/
# Create and enter virtual python environment
python3 -m venv venv
source venv/bin/activate
# Install requirements into the environment
pip install -r requirements.txt
# Run the app and follow instructions to open the web viewer
python3 main.py
```

#### Windows

```bash
# Clone the repo
git clone --depth 1 --branch main https://github.com/luxonis/oak-examples.git
# Change directory to the generic-example
cd oak-examples\neural-networks\generic-example\
# Install requirements
pip install -r requirements.txt
# Run the app and follow instructions to open the web viewer
python main.py
```

> **You just ran the App in Peripheral mode.**
> See below for the difference between Standalone and Peripheral mode.

[Continue exploring other pre-made applications](https://github.com/luxonis/oak-examples/tree/main)

### Standalone vs Peripheral

| Compatibility | Standalone¹ | Peripheral² |
| --- | --- | --- |
| OAK4 | ✅ | ✅ |
| OAK | 🚫 | ✅ |

 1. Standalone: The App is run only on the camera. Apps are deployed via
    [oakctl](https://docs.luxonis.com/software-v3/oak-apps/oakctl.md).
 2. Peripheral: The App runs on the host computer, and the camera runs the App's pipeline. The host stays connected to the camera
    over USB or Ethernet. Apps are run using the [DepthAI API](https://docs.luxonis.com/software-v3/depthai.md). Best used for
    quick prototyping and development.

The quickest way to build your own app is to start from an example in [oak-examples](https://github.com/luxonis/oak-examples). The
[generic-example](https://github.com/luxonis/oak-examples/tree/main/neural-networks/generic-example) app from the steps above runs
on OAK and OAK4 devices and has the files that an OAK App needs: `main.py`, `requirements.txt` and `oakapp.toml`. Copy it and
change it for your use case.

See [OAK Apps](https://docs.luxonis.com/software-v3/oak-apps.md) for the app structure and how to deploy an app.

We suggest you continue exploring the ecosystem in one of the following ways.

### OAK Apps

Build, package, and manage containerized computer vision apps for OAK devices.

[Open OAK Apps overview](https://docs.luxonis.com/software-v3/oak-apps.md)

### DepthAI

Use the DepthAI API to build and run real-time vision pipelines on OAK and OAK4 cameras.

[Open DepthAI overview](https://docs.luxonis.com/software-v3/depthai.md)

### AI

Explore model deployment, inference workflows, and AI tooling for OAK devices.

[Open AI overview](https://docs.luxonis.com/software-v3/ai-inference.md)
