An OS to build, deploy and securely manage billions of devices

Clone this repo:
  1. 1686c67 Don't panic in case of other error types in NewtUsage by Michal Gorecki · 6 weeks ago master
  2. 3e0e3d8 newt: Fix autogenerated linker include path by Michal Gorecki · 6 weeks ago
  3. 0ce1291 builder: Add private includes only to specific packages by Michal Gorecki · 6 weeks ago
  4. cb6f87f Generate mod log names by Jerzy Kasenberg · 8 weeks ago
  5. a798fcc Add pkg.whole_archive flag to allow --whole_archive linker option to be set per package by Jocelyn Masserot · 7 weeks ago


Apache Newt is a smart build and package management tool, designed for C and C++ applications in embedded contexts. Newt was developed as a part of the Apache Mynewt Operating System, more information on Apache Mynewt can be found at


Newt is a build system that can read a directory tree, build a dependency tree, and emit the right build artifacts. It then allows you to do the following:

  • Download built target to board
  • Generate full flash images
  • Download debug images to a target board using a debugger
  • Conditionally compile libraries & code based upon build settings
  • Generate and download manufacturing flash images

Newt is also a source management system that allows you to do the following:

  • Create reusable source distributions (called repos) from a collection of code.
  • Use third-party components with licenses that are not comptatible with the ASF (Apache Software Foundation) license
  • Upgrade repos

How it Works

When Newt sees a directory tree that contains a “project.yml” file, it recognizes it as the base directory of a project, and automatically builds a package tree. More information can be found in the “Newt Tool Manual” under Docs at

Getting Started

To build Apache Newt, simply run the included script. For more information on building and installng Apache Newt, please read INSTALLING or the documentation on

Once you've installed newt, you can get started by creating a new project:

  $ newt new your_project

For more information, and a tutorial for getting started, please take a look at the Apache Mynewt documentation.



Anybody who works with Apache Mynewt can be a contributing member of the community that develops and deploys it. The process of releasing an operating system for microcontrollers is never done: and we welcome your contributions to that effort.

Pull Requests

Apache Mynewt welcomes pull request via Github. Discussions are done on Github, but depending on the topic, can also be relayed to the official Apache Mynewt developer mailing list

Filing Bugs

Bugs can be filed as Github issues here. Where possible, please include a self-contained reproduction case!

Feature Requests

If you are suggesting a new feature, please email the developer list directly with a description of the feature or submit a Github issue.

Writing Tests

We love getting newt tests! Apache Mynewt is a huge undertaking, and improving code coverage is a win for every Apache Mynewt user.

Automated Newt tests are run in Travis. The test code can be found here.

Writing Documentation

Contributing to documentation (in addition to writing tests), is a great way to get involved with the Apache Mynewt project. The Newt documentation is found in /docs.

Getting Help

The best place to seek help is the Apache Mynewt slack channel

The Apache Mynewt developers mailing list is another good resource.