Skip to content
neuralSPOT-X
Getting started
HELIA HUB

Create your first app

nsx create-app writes a standalone app directory and, unless you tell it not to, clones the starter modules that board needs into it. Nothing else on your machine changes.

nsx create-app
$ nsx create-app hello_ap510 --board apollo510_evb Created app 'hello_ap510' at: /home/you/hello_ap510 Next steps: 1) cd /home/you/hello_ap510 2) Run `nsx configure --app-dir .` 3) Run `nsx build --app-dir .`, `nsx flash --app-dir .`, or `nsx view --app-dir .` Cloning into '/home/you/hello_ap510/modules/nsx-ambiq-sdk'... Cloning into '/home/you/hello_ap510/modules/nsx-pmu-armv8m'...

Captured on macOS 26 with an Apollo510 EVB target configuration. The app path is replaced by /home/you/hello_ap510, and Git advisory output is omitted for clarity. The CLI prints your own absolute path.

--board defaults to apollo510_evb, so you can leave it off for that target. Run nsx board list for the 17 packaged boards, or read the board matrix for each board’s SoC, tier, provider and declared toolchains.

hello_ap510/
├── .gitignore
├── CMakeLists.txt
├── README.md
├── boards/
│ └── apollo510_evb/
├── cmake/
│ ├── nsx/
│ └── presets/
├── modules/
├── nsx.yml
└── src/
└── main.c
Path What it is
nsx.yml The app manifest: board and SoC target, toolchain, release channel, starter profile and the module list. This is the file you edit.
CMakeLists.txt An ordinary top-level CMake file. It declares cmake_minimum_required(VERSION 3.24), includes the packaged NSX support, and links your executable against nsx::board_apollo510_evb and nsx::runtime_core.
src/main.c The generated application.
cmake/nsx/ Packaged CMake support: module wiring, the three toolchain files, the SEGGER flash and reset templates. Regenerated by NSX rather than hand-edited.
cmake/presets/ CMakePresets.json, so editors and IDEs can open the project directly.
boards/apollo510_evb/ The vendored board module: board.yaml, plus the board, BSP, SoC, memory and debug CMake fragments.
modules/ Where vendored modules land. After a default create-app it holds the starter set, here nsx-ambiq-sdk and nsx-pmu-armv8m. Gitignored.
README.md A short readme for the generated app, including the build and flash sequence.

There is no nsx.lock and no build/ yet. Both appear when you run nsx configure.

The generated src/main.c is a one-second SWO heartbeat:

#include "nsx_core.h"
int main(void)
{
nsx_core_config_t cfg = {
.api = &nsx_core_V1_0_0,
};
(void)nsx_core_init(&cfg);
nsx_itm_printf_enable();
while (1) {
nsx_printf("nsx hello from generated app\r\n");
nsx_delay_us(1000000);
}
}

--template picks the scaffold flavor.

Template What you get
default The minimal app above: a SWO printf loop.
npu-tflm TFLite Micro inference on the Ethos-U85 NPU. It seeds nsx-helia-rt and nsx-npu, turns on heliaRT’s Ethos-U dispatch, and ships a Vela model harness plus a tools/tflite_to_header.py converter. The generated README covers the offline Vela compilation step.

The NPU template targets boards whose SoC NSX registers as carrying an Ethos-U85 NPU, which today is atomiq110_fpga_turbo:

Terminal window
nsx create-app pd_npu --board atomiq110_fpga_turbo --template npu-tflm

--no-bootstrap writes the app but skips the clones, which is what you want when you plan to pick modules yourself or when you have no network. The app then has no boards/ directory and an empty modules/, and nsx.yml records baseline: none. NSX tells you what to do next:

Created app 'my_app' at: /home/you/my_app
Starter modules were not bootstrapped (--no-bootstrap).
Next steps:
1) cd /home/you/my_app
2) Run `nsx module list --app-dir .`
3) Add modules with `nsx module add <module> --app-dir .`

Browse what you can add in the module catalog.

The remaining options are --soc, which overrides the SoC that the board would otherwise imply, and --force, which allows writing into a directory that is not empty. Both are documented on the nsx create-app reference page.

Configure and build the app you just created.