Building Apps with the Frame SDK


  1. How Do Apps Run on Frame?
  2. Getting Started
  3. Development Options for Frame
    1. Platform SDK Development
    2. Direct Bluetooth LE Development
    3. Firmware Customization

How Do Apps Run on Frame?

Frame runs a power-efficient System-on-a-Chip (SoC) with relatively limited memory and processing power compared to modern smartphones. Rather than installing apps directly on Frame, it typically functions as a peripheral accessory for “host” apps running on computers or mobile devices. These host apps communicate with Frame via Bluetooth to control features like the camera, microphone, and display.

While you may write Lua scripts that execute on Frame for specific behaviors, your host app primarily drives the logic while Frame runs a simple event handler loop. For example, the Noa mobile app connects to Frame, receives sensor data over Bluetooth, processes it, and sends content back to Frame for display.

Frame doesn’t have its own app launcher or traditional app installation system. To share your Frame apps with others, publish your host app through normal distribution channels like App Store, Google Play, or open source repositories. Of course if you build something cool, let us know and we will be happy to share it with the community.

Getting Started

For the quickest start:

Development Options for Frame

  1. Use Platform SDKs (Recommended)
    • Build with supported platforms:
    • Benefits: Common tasks are simplified, many examples to follow
  2. Communicate via Bluetooth LE
  3. Customize Firmware (Advanced)

The typical development pattern involves creating a Python desktop application or Flutter mobile app that uses the Frame SDK to communicate with Frame over Bluetooth, abstracting away many Lua and BTLE details.

Platform SDK Development

This recommended approach offers quick and reliable Frame app development for Python and Flutter platforms, with each of these platform SDKs under active development.

Our platform SDKs simplify the low-level Bluetooth and Lua APIs, eliminating the need to write boilerplate code for device discovery, connection, and communication.

Familiarity with the Lua API remains useful for main application event loops, main.lua scripts that run at wakeup, or custom on-device processing.

Check the Python or Flutter SDK documentation for implementation details.

Direct Bluetooth LE Development

For developers comfortable with Bluetooth LE, this approach offers maximum flexibility but requires a greater understanding of Bluetooth technology.

After establishing BTLE communication, you’ll use Lua to control Frame’s functions. Frame provides a Lua virtual machine where you can execute scripts or use the Lua REPL over the BTLE interface.

Refer to the Bluetooth LE API documentation and the full Lua API reference for details on Frame’s capabilities.

During development, you can also use the AR Studio extension for VSCode to directly write and execute Lua code on Frame.

Firmware Customization

Frame is developed by hackers for hackers, so even though we don’t recommend it for most users, Frame’s open-source firmware can be customized. Find the official firmware on GitHub.

For more details on how to customize the firmware, see the hardware documentation.


Table of contents