Welcome to the Pothos project
The Pothos project is a complete data-flow framework for creating topologies of interconnected processing blocks. Topologies can be designed and tested graphically, and deployed over a network. The Pothos framework API is sleek and smart, enabling users to quickly create custom processing blocks with minimal boiler-plate. Processing blocks can support computational offload and integration with DMA devices. The project also has a diverse set of processing and hardware support toolkits. Read more on the project overview page.
Getting started
Get the Pothos development environment up and running with the getting started guide.
Project status
- Checkout the pothos-users forum
- Checkout the examples & demos
- Release tag 0.6 available
- Added PothosLiquidDSP
- Added Pothos-IIO
- New archive support
- New GUI connection work
- BTLE control demo blog
- LoRa modem demo blog
Ecosystem graph
Available toolkits
- Components map
- General blocks
- Comms/DSP blocks
- Graphical designer
- Graphical widgets
- Graphical plotters
- Python bindings
- OpenCL support
- SDR devices
- Audio devices
- FPGA support
- Zynq support
- GNU Radio support
- BTLE demo blocks
Features summary
Pothos is a feature-full dataflow programming software suite.
- API to design data flows composed of modular blocks
- Graphical interface to design, deploy, and monitor
- Integration of 3rd party toolkits such as DSP libraries
- Support computational offload to GPUs, DSPs, FPGAs
- Custom processing blocks in any language (we have a binding for)
- Distributing across threadpools, processes, and nodes on a network
- Minimally invasive scheduler, minimal boilerplate for custom blocks
Additional information:
- See the Features summary page for more detailed information.
- See the Roadmap features page for future planned features.
Build and install
Pothos can be built and installed on a variety of systems including Windows, OSX, and Linux. See the Build Guide for dependencies and compilation instructions. We have limited pre-built binaries available on the Releases page. If you would like get involved with providing distribution binaries, please contact us.
Project resources
- Project overview
- Getting started
- FAQ
- Video screencasts
- Demo applications
- Features summary
- Versioned releases
- Binary downloads
- Developer blog
- Help and support
- Contract services
- Contributing
- Helpful links
Documentation
- Dive into the graphical developer tools with the Pothos GUI tutorial.
- Using SDR blocks? Checkout the Pothos SDR tutorial for helpful tips.
- Using digital filters in the communications toolkit: Pothos Filter Tutorial.
- Learn more about the scheduler and how it works in Scheduler explained.
- Explore the install and execute JSON topologies with the PothosUtil Guide.
- Follow the Blocks Coding Guide to create custom C++ processing blocks.
- Checkout the Doxygen generated documentation for the Pothos Framework API.
- Create processing blocks in Python with this example from the pothos-python wiki.
- Extend serialization support for custom data structures to traverse network boundaries.
Project feedback
Feedback is critical for any open source project. Found a bug? Having trouble? Would a particular feature make your life easier? Please feel free to contact us or use the issue tracker for the relevant toolkit. If possible, please tell us how you are using Pothos, we would love to hear it.