West (Experimental)

The Zephyr project is developing a swiss-army knife command line tool named west. (Zephyr is an English name for the Greek god of the west wind.)

West is developed in its own repository on GitHub. A copy is currently maintained in Zephyr’s scripts/meta/west directory.


West’s usage is similar to Git’s: general options are followed by a command, which may also take options and arguments:

$ west [common-opts] <command-name> [command-opts] [<command-args>]

Usage guides for specific groups of subcommands are in the following pages.

(This list will expand as additional features are developed.)

Planned Features

Additional features are under development for future versions of Zephyr:

  • Building Zephyr images.
  • Running Zephyr in emulation.
  • Bootloader integration: bootloader-aware image building, signing, and flashing, as well as building and flashing the bootloader itself.
  • Multiple repository support: fetching and updating repositories that integrate with Zephyr, such as MCUboot, OpenThread and others.

See Zephyr issue #6205 for more details and discussion.

Design Constraints

West is:

  • Optional: it is always possible to drop back to “raw” command-line tools, i.e. use Zephyr without using West. It may not always be convenient to do so, however. (If all of West’s features were already conveniently available, there would be no reason to develop it.)
  • Compatible with CMake: building, flashing and debugging, and emulator support will always remain compatible with direct use of CMake.
  • Cross-platform: West is written in Python 3, and works on all platforms supported by Zephyr.
  • Usable as a Library: whenever possible, West features are implemented as libraries that can be used standalone in other programs, along with separate command line interfaces that wrap them. West itself is a Python package named west; its libraries are implemented as subpackages.
  • Conservative about features: no features will be accepted without strong and compelling motivation.
  • Clearly specified: West’s behavior in cases where it wraps other commands is clearly specified and documented. This enables interoperability with third party tools, and means Zephyr developers can always find out what is happening “under the hood” when using West.