- What is Mynic?
- Why Mynic exists
- Features
- Quick syntax example
- Installation
- Current project status
- Documentation links
- Contributing
- License
Mynic is a high-performance binary decoding tool built around the Mynic Programming Language. It is designed to decode raw streams of binary data into universal, human-readable formats such as JSON.
Mynic can be used across a wide range of industries that rely on raw packet communications, including:
- networking
- robotics
- aerospace and space communications
- radio communications
- embedded systems
Mynic exists to solve a simple problem:
There is no fast, universal, and developer-friendly way to parse raw streams of bytes into human-readable data structures.
This problem is especially common when working with binary streams that do not follow IEEE-standardized protocols, as frequently seen in robotics, aerospace, embedded systems, and custom hardware environments.
Most developers and companies either:
- build custom parsers in-house, or
- rely on tools such as Wireshark.
While tools like Wireshark are powerful, they are primarily focused on networking protocols and often require significant setup when working with custom packet formats.
Mynic is designed to make packet schema creation simple, modular, and fast while providing high-performance parsing for both standard and custom protocols.
- Modular packet schema system
- Reusable protocol components
- JSON export support
- Cross-language integration
- Human-readable protocol definitions
- Designed for custom and non-standard protocols
Below is a complete example showing how to parse a User Datagram Protocol (UDP) packet. The definition parses the UDP header and exposes the remaining payload as a stream of bytes.
segment UDP_HEADER {
uint16 sourcePort;
uint16 destinationPort;
uint16 length;
bytes2 checksum;
}
packet UDP_PACKET {
UDP_HEADER header;
bytes payload[TO_END];
}
Below is a screenshot of interpreting a raw UDP packet using the Mynic CLI.
Mynic's modular design allows components from different packet definitions to be reused together.
For example, if the payload structure is known, the UDP header can be combined with a custom packet definition without redefining the header itself.
This enables rapid construction of complex protocol parsers from reusable building blocks.
Mynic will eventually be distributed in multiple forms and integrated with additional languages such as Python.
At the moment, the CLI executable is the recommended installation method.
Installation instructions can be found in: docs/user-guide/getting-started.md.
Mynic version 1.0.0 has been released and is currently functional and stable.
However, the project is still actively evolving, and many planned features, optimizations, and tooling improvements are still in development.
All documentation can be loaded in the docs folder.
User-focused documentation is located in: docs/user-guide.
Examples can be found in: docs/contributor-guide.
Examples are also located in docs/examples.
These examples include:
- custom packet definitions
- event-based packet handling
- protocol composition
- advanced parsing workflows
Contribution guidelines are located in: docs/contributor-guide/CONTRIBUTING.md
Contributions, issue reports, feature requests, and feedback are welcome.
Licensing information can be found in:
LICENSE.txt
NOTICE.txt
README_LICENSE.md
Mynic is licensed under Apache License 2.0 with Commons Clause.
You are free to:
- Use Mynic for personal or commercial projects
- Modify the source code
- Redistribute original or modified versions
- Use Mynic internally in commercial products
You may NOT:
- Sell Mynic itself
- Sell modified versions of Mynic
- Offer Mynic or derivatives as a paid product or service
Attribution to the original author (Benjamin Manwell) is required in all redistributions.
