The Magenta Kernel (kernel/...) and the Magenta Scripts (scripts/...)
are under an MIT-style license, copies of which may be found in
kernel/LICENSE and scripts/LICENSE.

The Third Party Components (third_party/...) are under various
licenses (of the BSD, MIT, or Zlib style), which may be found in the
root directory of each component, respectively.

All other components and materials, including the Magenta System
(system/...) and Bootloader (bootloader/...), are under a BSD-style
license, copies of which may be found in system/LICENSE and
bootloader/LICENSE.

The PATENTS file, which may be found in the same directories as the
LICENSE files, provides additional license rights and conditions
relating to patents.
