Compact tool for building and debugging applications for Flipper Zero.
See the codeuFBT is a cross-platform tool for building applications for Flipper Zero. It is a simplified version of Flipper Build Tool (FBT).
uFBT has an official GitHub Action. With it, you can automate building and publishing your application using GitHub workflows.
uFBT enables basic development tasks for Flipper Zero, such as building and debugging applications, flashing firmware, creating VSCode development configurations. It uses prebuilt binaries and libraries, so you don't need to build the whole firmware to compile and debug your application for Flipper.
python3 -m pip install --upgrade ufbtpy -m pip install --upgrade ufbtuFBT uses your system's Python for running bootstrap code. Minimal supported version is Python 3.8. For executing actual build tasks, uFBT will download and use its own Python binaries and a toolchain built for your platform.
On first run, uFBT will download and install required SDK components from release update channel of official firmware. For more information on how to switch to a different version of the SDK, see Managing the SDK section.
If you are using pyenv to manage python versions, after installation you may need to run pyenv rehash to generate shim for ufbt command.
Run ufbt in the root directory of your application (the one with application.fam file in it). It will build your application and place the resulting binary in dist subdirectory.
You can upload and start your application on Flipper attached over USB using ufbt launch.
To see other available commands and options, run ufbt -h.
In order to debug your application, you need to be running the firmware distributed alongside with current SDK version. You can flash it to your Flipper using ufbt flash (using a supported SWD probe), ufbt flash_usb (over USB).
For other flashing and debugging options, see ufbt -h.
uFBT provides a configuration for VSCode that allows you to build and debug your application directly from the IDE. To deploy it, run ufbt vscode_dist in the root directory of your application. Then you can open the project in VSCode (File-Open Folder...) and use the provided launch (ctrl+shift+b) & debugging (ctrl+shift+d) configurations.
uFBT can create a template for your application. To do this, run ufbt create APPID=<app_id> in the directory where you want to create your application. It will create an application manifest and its main source file. You can then build and debug your application using the instructions above.
Application manifests are explained in the FBT documentation.
ufbt cli starts a CLI session with the device;ufbt lint, ufbt format run clang-format on application's sources;ufbt --help for more information.To update the SDK, run ufbt update. This will download and install all required SDK components from previously used source.
ufbt update --channel=[dev|rc|release].
ufbt update --index-url=<url>, where <url> is a URL to the index file, e.g. https://update.flipperzero.one/firmware/directory.json.ufbt update --branch=0.81.1 or ufbt update --branch=owner/my-awesome-feature.
--index-url=<url>.ufbt update --url=<url>.ufbt update --local=<path>. This will use the SDK located in <path> instead of downloading it. Useful for testing local builds of the SDK.By default, uFBT stores its state - SDK and toolchain - in .ufbt subfolder of your home directory. You can override this location by setting UFBT_HOME environment variable.
uFBT also supports dotenv (.env) files, containing environment variable overrides for the project in current directory. Most commonly, you will want to use this to override the default state directory to a local one, so that your project could use a specific version and/or hardware target of the SDK.
You can enable dotenv mode for current directory by running ufbt dotenv_create. This will create .env file in current directory with default values, linking SDK state to .ufbt subfolder in current directory, and creating a symlink for toolchain to .ufbt/toolchain in your home directory. You can then edit .env file to further customize the environment.
You can also specify additional options when creating the .env file. See ufbt dotenv_create --help for more information.
Updating the SDK is handled by uFBT component called bootstrap. It has a dedicated entry point, ufbt-bootstrap, with additional options that might be useful in certain scenarios. Run ufbt-bootstrap --help to see them.
If something goes wrong and uFBT state becomes corrupted, you can reset it by running ufbt clean. If that doesn't work, you can try removing .ufbt subfolder manually from your home folder.
ufbt-bootstrap and SDK-related ufbt subcommands accept --verbose option that will print additional debug information.
uFBT is a small tool and does not contain the actual implementation of build system, project templates or toolchain. It functions as a downloader and manager of SDK components that are packaged alongside with Flipper firmware.
Issues and pull requests regarding ufbt-bootstrap features like SDK management should be reported to this project, and the rest - related to actual application development - to Flipper firmware repo.
909 followers · starred Jul 2024
183 followers · starred Mar 2023
85 followers · starred Dec 2024
25 followers · starred Aug 2025
Compact tool for building and debugging applications for Flipper Zero.
See the codeuFBT is a cross-platform tool for building applications for Flipper Zero. It is a simplified version of Flipper Build Tool (FBT).
uFBT has an official GitHub Action. With it, you can automate building and publishing your application using GitHub workflows.
uFBT enables basic development tasks for Flipper Zero, such as building and debugging applications, flashing firmware, creating VSCode development configurations. It uses prebuilt binaries and libraries, so you don't need to build the whole firmware to compile and debug your application for Flipper.
python3 -m pip install --upgrade ufbtpy -m pip install --upgrade ufbtuFBT uses your system's Python for running bootstrap code. Minimal supported version is Python 3.8. For executing actual build tasks, uFBT will download and use its own Python binaries and a toolchain built for your platform.
On first run, uFBT will download and install required SDK components from release update channel of official firmware. For more information on how to switch to a different version of the SDK, see Managing the SDK section.
If you are using pyenv to manage python versions, after installation you may need to run pyenv rehash to generate shim for ufbt command.
Run ufbt in the root directory of your application (the one with application.fam file in it). It will build your application and place the resulting binary in dist subdirectory.
You can upload and start your application on Flipper attached over USB using ufbt launch.
To see other available commands and options, run ufbt -h.
In order to debug your application, you need to be running the firmware distributed alongside with current SDK version. You can flash it to your Flipper using ufbt flash (using a supported SWD probe), ufbt flash_usb (over USB).
For other flashing and debugging options, see ufbt -h.
uFBT provides a configuration for VSCode that allows you to build and debug your application directly from the IDE. To deploy it, run ufbt vscode_dist in the root directory of your application. Then you can open the project in VSCode (File-Open Folder...) and use the provided launch (ctrl+shift+b) & debugging (ctrl+shift+d) configurations.
uFBT can create a template for your application. To do this, run ufbt create APPID=<app_id> in the directory where you want to create your application. It will create an application manifest and its main source file. You can then build and debug your application using the instructions above.
Application manifests are explained in the FBT documentation.
ufbt cli starts a CLI session with the device;ufbt lint, ufbt format run clang-format on application's sources;ufbt --help for more information.To update the SDK, run ufbt update. This will download and install all required SDK components from previously used source.
ufbt update --channel=[dev|rc|release].
ufbt update --index-url=<url>, where <url> is a URL to the index file, e.g. https://update.flipperzero.one/firmware/directory.json.ufbt update --branch=0.81.1 or ufbt update --branch=owner/my-awesome-feature.
--index-url=<url>.ufbt update --url=<url>.ufbt update --local=<path>. This will use the SDK located in <path> instead of downloading it. Useful for testing local builds of the SDK.By default, uFBT stores its state - SDK and toolchain - in .ufbt subfolder of your home directory. You can override this location by setting UFBT_HOME environment variable.
uFBT also supports dotenv (.env) files, containing environment variable overrides for the project in current directory. Most commonly, you will want to use this to override the default state directory to a local one, so that your project could use a specific version and/or hardware target of the SDK.
You can enable dotenv mode for current directory by running ufbt dotenv_create. This will create .env file in current directory with default values, linking SDK state to .ufbt subfolder in current directory, and creating a symlink for toolchain to .ufbt/toolchain in your home directory. You can then edit .env file to further customize the environment.
You can also specify additional options when creating the .env file. See ufbt dotenv_create --help for more information.
Updating the SDK is handled by uFBT component called bootstrap. It has a dedicated entry point, ufbt-bootstrap, with additional options that might be useful in certain scenarios. Run ufbt-bootstrap --help to see them.
If something goes wrong and uFBT state becomes corrupted, you can reset it by running ufbt clean. If that doesn't work, you can try removing .ufbt subfolder manually from your home folder.
ufbt-bootstrap and SDK-related ufbt subcommands accept --verbose option that will print additional debug information.
uFBT is a small tool and does not contain the actual implementation of build system, project templates or toolchain. It functions as a downloader and manager of SDK components that are packaged alongside with Flipper firmware.
Issues and pull requests regarding ufbt-bootstrap features like SDK management should be reported to this project, and the rest - related to actual application development - to Flipper firmware repo.
909 followers · starred Jul 2024
183 followers · starred Mar 2023
85 followers · starred Dec 2024
25 followers · starred Aug 2025