# API Documentation

## Introduction

The Zephyr OS is a small-footprint kernel designed for use on
resource-constrained and embedded systems: from simple embedded
environmental sensors and LED wearables to sophisticated embedded
controllers, smart watches, and IoT wireless applications.

See the [zephyrproject.org](https://zephyrproject.org) site for more
information about the project and becoming a member, and this [summary
of Zephyr resources](https://docs.zephyrproject.org/latest/introduction/index.html#resources)
to help you find your way around the project.

## Supported Boards

The Zephyr kernel supports multiple architectures, including ARM
Cortex-M, Intel x86, ARC, NIOS II, Tensilica Xtensa, and RISC-V 32.  For
details, see the [latest supported boards
documentation](https://docs.zephyrproject.org/latest/boards/index.html).

## Licensing

Zephyr is permissively licensed using the Apache 2.0 license (as found
in the [project's GitHub LICENSE
file](https://github.com/zephyrproject-rtos/zephyr/blob/main/LICENSE).
There are some imported or reused components of the Zephyr project that
use other licensing, as described in [Licensing of Zephyr Project
components](https://docs.zephyrproject.org/latest/LICENSING.html#zephyr-licensing).
