Flexa - M400 / MPI400 / LX400

Program Your Own Flexa Audio Application with Claude AI

Flexa Audio Skill for Claude AI

Build your own Audio over IP application on Barix Flexa devices — guided by Claude AI.

Don't just build it. Build it on Barix. Barix Flexa devices give you a stable, certified Audio-over-IP and I/O platform; Claude AI gives you a development partner that already knows it. The Flexa Audio Skill is a specialized instruction set that teaches Claude how to generate complete, deployable Flexa audio applications — manifest, configuration form, Python code, and ready-to-upload package — for the LX400 and M400 Flexa devices.

This guide walks you through downloading the skill, importing it into Claude.ai, and using it to develop your first Flexa app. An annotated example conversation is included at the end so you can see exactly how a session typically unfolds.

1. What the Skill Does

The Flexa Audio Skill turns Claude.ai into a Flexa-aware code generator. Once loaded, Claude will:

  • Ask a short, structured set of questions to capture your application requirements.

  • Confirm a build plan with you before writing any code.

  • Generate the full Flexa package: install.json, config/sdf.json, run.py, and any optional web UI or LED-control files.

  • Bundle everything into a ZIP file that is ready to upload to your Flexa device — no manual editing required.

Supported source types

  • HTTP / Web Radio — Icecast, Shoutcast, HTTP audio file

  • RTP — unicast or multicast

  • BRTP — Barix proprietary back-channel protocol

  • RIST — Reliable Internet Stream Transport

  • SRT — Secure Reliable Transport

  • SIP — full registration with UDP, TCP, TLS or SRTP+TLS transport, configurable codec priority, auto-answer or ring-with-pickup behaviour, and configurable answer tone

Supported hardware

  • LX400 Flexa

  • M400 Flexa

Additional Flexa devices may be added in future skill releases.

Optional features the skill can wire in

  • External web UI on a custom port, with optional logo and theme reference

  • Static or dynamic (SDP) payload handling for RTP-based sources

  • GPI/GPO control (LX400 only — 8 contact inputs and 8 relay outputs, numbered 1–8)

  • Status LED control — red and green, solid or blinking

  • Remote syslog forwarding

2. What You Need

  • A http://Claude.ai account on a Free, Pro, Max, Team or Enterprise plan.

  • Code execution and file creation enabled in your Claude account settings (this is required for skills to run).

  • A Flexa device — LX400 Flexa or M400 Flexa — reachable over the network for upload.

  • The Flexa unit must run minimum firmware version 2.3.3 or later

  • The skill ZIP file — attached to this article.

3. Download the Skill

The skill is distributed as a single ZIP file, flexa-audio-skill.zip. Download it to your computer;
DO NOT unzip it — Claude.ai expects the ZIP exactly as provided.

CLICK TO DOWNLOAD

Contents: a folder named flexa-audio-skill/ with SKILL.md and reference.md.

4. Import the Skill into http://Claude.ai

Follow these steps once. Once the skill is installed it stays in your account and can be enabled or disabled at any time.

  1. Sign in to http://Claude.ai

  2. in your web browser.

  3. Open Settings → Capabilities and make sure Code execution and file creation is enabled. Skills will not run without it.

  4. Open Customize → Skills.

  5. Click the + button, then + Create skill, then choose Upload a skill.

  6. Select the downloaded flexa-audio-skill.zip file.

  7. Wait for the upload to complete. Flexa Audio Skill will appear in your Skills list.

  8. Toggle the skill ON. You are ready to use it.

image-20260611-083239.png

Team and Enterprise accounts

Organisation owners can provision the skill account-wide so it appears automatically for every member.

Open Organization settings → Skills, enable Code execution and file creation and Skills, then upload flexa-audio-skill.zip as a provisioned skill.

5. How to Use the Skill

Start a new chat in http://Claude.ai and ask Claude to build a Flexa app. The skill will trigger automatically when you mention Flexa, LX400 or M400 in a development context. If you want to be explicit, simply say:

Use the Flexa Audio Skill to build me an app for my LX400.

The skill drives the conversation in three phases:

Phase 1 — Requirements gathering

Claude asks a numbered list of questions covering hardware platform, app name, audio source types, codecs, optional features (SDF or external web UI, syslog, GPIO, LEDs), and SIP behavior where relevant. Answer them in a single reply — Claude reads all your answers together.

About the SDF

SDF stands for Settings Definition Form. It is a JSON file (config/sdf.json) that describes the configuration page shown for your app inside the Flexa device's web interface — every field, default value, dropdown and grouping. The Flexa firmware reads the SDF at app startup and renders the form automatically; whatever the user enters is saved into the app's runtime configuration and read by your Python code at run time. The skill generates the SDF for you based on your answers in Phase 1, so you get a fully working configuration page without writing any UI code.

When the SDF is enough — and when it isn't

The SDF is the right choice for the vast majority of Flexa apps. It is fast to render, requires no extra code, and gives your users a configuration page that looks and behaves like the rest of the Flexa interface. Use it whenever the app's configuration is a flat set of fields — addresses, ports, codecs, toggles, dropdowns — that the user fills in once and rarely revisits.

The SDF starts to feel limiting when you need more than a static form: live status readouts that update while the app is running, action buttons that trigger something on the device (answer a call, send a test tone, reset a counter), custom branding or a guided multi-step workflow, lists of items the user adds and removes dynamically (contacts, presets, schedules), or visualisations such as level meters and call logs. In those cases the skill can generate a separate web server alongside your app — running on its own port (for example 8080 or 8443) and serving a purpose-built HTML/JavaScript UI with your own graphics and theme. When you choose this option, the SDF shrinks to just the web server port and the syslog settings; everything else moves into the custom UI, which talks to your Python code through HTTP endpoints. Just answer "yes" to the external web UI question in Phase 1 and Claude will wire it all up — Flask server, HTML template, logo asset and config persistence — into the same ZIP.

Phase 2 — Plan confirmation

Claude prints a compact summary of the build plan: app name, sources, codecs, output device, web UI on/off, syslog, GPIO, LEDs, SIP behaviour, and the list of files that will be generated. Review it, then say yes to continue. If anything is off, just tell Claude what to change.

Phase 3 — File generation and upload

Claude generates every file in order, packages them into a ZIP, and tells you the ZIP filename and how to upload it to the Flexa device

6. Alternative Approach: Start From a Working Example

Building from scratch with the skill is the most flexible route, but it is not always the fastest one. If your target application is close to something that already exists, it is often quicker — and the result is often more reliable — to start from a working example app and let Claude modify it, rather than asking Claude to generate everything from a blank page.

simple_player_v1.0.0.zip

This is a working example of an app made for LX400 with Claude AI using the flexa-audio-skill.

Download, install on your LX400 unchanged, connect to your DEVICE_IP:8080 and use it as a starting point for your own development.

image-20260611-095053.png
Example App to start from

The example is fully functional out of the box: a complete install.json, application code, and external web UI for configuration are already in place and known to work on the target firmware and hardware.

To use this approach:

  1. Download the example app ZIP from the link above and install it on your target device to verify it runs.

  2. Unzip the package on your computer so you can see all the source files.

  3. Open a new chat in http://Claude.ai with the Flexa Audio Skill enabled.

  4. Upload the example files to the chat (drag and drop the unzipped folder, or paste the contents of individual files).

  5. Describe the changes you want to apply — for example "Here is a working app that can play HTTP or RTP or BRTP or SRT or RIST. Please modify it so that it only exposes RTP and HTTP with configurable priorities so that I can decide if HTTP wins over RTP or vice versa. Give me back a deployable ZIP."

  6. Claude will read the existing structure, apply your changes consistently with the skill's conventions, and re-package the result.

When to prefer this approach over starting from scratch:

  • Your new app is a variation of an existing one

  • You want to preserve a specific code structure, comment style, or naming convention that already works for your team.

  • You need to retain compatibility with an external system and want to avoid Claude reinventing those details.

  • You are learning what a well-structured Flexa app looks like and want a concrete reference to read alongside the skill's instructions.

When to start from scratch instead:

  • The new app does something fundamentally different from any example you have on hand.

  • The example you are tempted to start from is significantly more complex than what you actually need — Claude is faster at generating a lean app from a clear specification than at trimming a large one down.

Either approach uses the same Flexa Skill in the background; the difference is only what Claude has on the table when the conversation starts.

7. Example: Building an RTP Receiver with Relay Control

The following is an example of a real session with Claude using the Flexa Audio Skill. The target is an LX400 Flexa configured as an STL-style RTP receiver that closes a relay while audio is playing and indicates stream state with the front-panel LEDs. The conversation is reproduced here for illustration; your exact wording will differ.

👤 You

Use the Flexa Audio Skill to build me an app for my LX400. I want it to receive an RTP stream from our studio and close relay 1 while the stream is playing, so the downstream amplifier wakes up.

🤖 Claude

Great — happy to put that together. A few quick questions and we'll be ready to generate the package:

  • Hardware: confirmed LX400.

  • App name?

  • Audio source: confirmed RTP. Multicast or unicast? Static codec configured in the SDF, or dynamic via an SDP file pasted into the config, or both?

  • Codecs to support: any combination of MP3, MP2, AAC, Opus, PCM L16, G.711 µ-law, G.711 A-law, G.722 — or all of them?

  • Default RTP listen port?

  • Output buffer settings: keep the defaults (7000 ms buffer, 5000 ms ready threshold) or customise?

  • GPO relays: relay 1 closed while audio plays — any of the other seven relays you want exposed too? Any GPI inputs needed?

  • Status LEDs: which colours/behaviours would you like? Available: red and green, solid or blinking.

  • Remote syslog: yes/no? If yes, server address and port?

  • External web UI on a custom port, or is the standard Flexa SDF configuration page enough?

  • One-line description of what this app does (used as a comment header in the generated code).

👤 You

Here are the answers:

  • App name: stl-rtp-rx

  • RTP: multicast, default port 5004. Static codec from the SDF is fine.

  • Codecs: MP3, AAC and Opus(allow uploading an sdp)

  • Buffer settings: keep defaults.

  • GPO: relay 1 closed while audio is playing; the other relays can stay unused.

  • GPI: not needed.

  • LEDs: green solid while a stream is active, green blinking while waiting for audio, red solid on stream error.

  • Syslog: yes, 10.0.10.4 port 514.

  • External web UI: no, SDF is fine.

  • Description: "STL RTP receiver with relay wake-up for downstream amplifier."

🤖 Claude

Got it. Here is the build plan:

App:        stl-rtp-rx
Sources:    RTP (multicast, port 5004, static codec from SDF)
Codecs:     MP3, AAC, Opus
Payload:    use sdp upload
Output:     plug:external_analog_out
Web UI:     no
SDF scope:  full config in SDF (no web UI)
Syslog:     yes (default 10.0.10.4:514)
GPIO:       GPI: no  |  GPO: relay 1 follows stream-playing state
LEDs:       green solid = playing, green blink = waiting, red solid = error

Files to generate:
  - install.json
  - config/sdf.json
  - run.py
  - leds.py

Does this plan look correct? Shall I generate the package?

👤 You

Looks good — go ahead.

🤖 Claude

Generating the package now…

  • Wrote stl-rtp-rx/package/install.json

  • Wrote stl-rtp-rx/package/config/sdf.json

  • Wrote stl-rtp-rx/package/run.py

  • Wrote stl-rtp-rx/package/leds.py

  • Created stl-rtp-rx.zip

Your package is ready: stl-rtp-rx.zip

To deploy:

  • Open your LX400 web interface and go to HOME → Upload

  • Upload stl-rtp-rx.zip, then start the app.

  • Open the app's configuration page and set the RTP multicast group address and any codec/payload-type fields the SDF exposes.

  • Save. Relay 1 will close as soon as the stream starts; the green LED will go solid; syslog will start forwarding to 10.0.10.4:514.

That is the complete development loop: less than five minutes of conversation, and a tested, deployable Flexa application at the end of it. The same flow applies to SIP intercoms, RIST or SRT receivers, web-radio players, and combinations thereof — just describe what you need.

8. Tips for Getting Good Results

  • Be concrete. Tell Claude the hardware, the sources, and the I/O behavior you want. Vague prompts produce vague apps. Don’t be afraid to add more requirements to the first prompt. They will be organized into a clear plan by Claude.

  • Answer all questions in one reply. The skill is designed to capture all requirements in a single round so it can produce a coherent plan.

  • Always review the plan carefully before generation. It is faster and consumes less tokens to correct the plan than to regenerate files.

  • Iterate. If the generated app needs adjustments, simply describe the change — Claude will edit and rebuild the ZIP.

  • Test on the device. Generated code targets the exact firmware environment, but every deployment has its own network and audio-routing quirks; always verify on the real hardware.

  • To start test with a simple app. Test the skill with a simple app, try things out with simple requirements first, then iterate on it. Test every stage on the real hardware while adding features.

9. Support and Limitations

The Flexa Audio Skill is provided as part of Barix's AI Ready ecosystem. Please note the following support policy:

  • No code troubleshooting. Barix provides the hardware, the firmware environment and the Claude AI skill, but cannot provide technical support for troubleshooting, debugging or fixing application code — whether it is written by you or generated by AI.

  • No guarantee of performance. Barix does not guarantee the success, stability or performance of self-programmed applications. The responsibility for the final application's functionality and reliability rests solely with the developer.

  • Paid support services. Our hardware and standard firmware are backed by the Barix global warranty. Engineering assistance for custom product development or code-specific issues is available as a paid professional service.

  • Barix terms and conditions apply: https://www.barix.com/terms-and-conditions/

For product information, ordering numbers and the latest list of Flexa-optimized devices, see the
https://www.barix.com/product/program-your-own-application-with-claude-ai-and-barix-flexa/


Don't just build it. Build it on Barix.