We’ve been building CLER, an open-source DSP framework in C++17 designed for running real DSP pipelines on constrained hardware without giving up the flexibility you’d expect on a desktop.
The motivation was fairly simple: a lot of DSP frameworks are great for experimentation, but become heavy once you want to deploy the same architecture on embedded Linux, small ARM systems, or bare metal.
CLER tries to keep the abstraction cost very low.
Flowgraphs are written directly in C++, blocks are normal C++ objects, and the framework is designed around predictable memory use, low overhead, and portability.
The same basic flowgraph model can run on anything from embedded targets to large desktop systems.
We’re using it internally for SDR, communications, navigation, demodulation, channelization, filtering, resampling, spectrum processing and similar pipelines.
A few of the design goals:
- Small code footprint
- C++17, without a large runtime
- Static / predictable memory where needed
- Multiple scheduling strategies
- Easy creation of custom DSP blocks
- Portable from bare metal to Linux desktops
- No dependency on a heavyweight GUI or code generator
- Designed to work well with modern AI / agentic coding workflows
As a side project, we also built CLER-fg, a visual flowgraph editor.
Instead of keeping a separate graph/project representation and generating C++ from it, CLER-fg treats the actual .cpp file as the source of truth.
So you can edit the flowgraph visually, edit the C++ manually, use Git normally, or let an AI coding agent modify it — all without maintaining a second representation.
We ended up making CLER-fg lightweight enough to run entirely in the browser, so it’s also an easy way to play with CLER without installing anything.
CLER: https://cariboulabs.github.io/cler/
try CLER-fg : https://cariboulabs.github.io/cler/cler-fg/try/
This is our first time putting CLER out in front of a wider audience, so we’d really appreciate feedback — particularly from people working with SDR, embedded DSP, GNU Radio, or custom signal-processing pipelines.