A cross-platform header-only C++14 library for building interactive command line interfaces with Cisco-style navigation.
cli is a header-only C++14 library for building interactive command-line interfaces with hierarchical menus, persistent history, and autocompletion. It solves the problem of creating professional CLI tools that mimic Cisco-style interfaces, supporting both local and remote sessions via telnet. The library provides an asynchronous architecture that simplifies development of single-threaded applications without synchronization concerns.
C++ developers building interactive command-line tools, network management applications, or embedded systems requiring professional CLI interfaces. Particularly useful for those creating tools with hierarchical menus and remote access capabilities.
Developers choose cli for its header-only simplicity, cross-platform compatibility, and rich feature set including telnet support and asynchronous architecture. It stands out by providing Cisco-style navigation patterns without external dependencies for local sessions.
A library for interactive command line interfaces in modern C++
Being header-only means no separate compilation is needed; developers just include the headers, reducing build complexity and dependency management, as emphasized in the Installation section.
Provides persistent command history, tab autocompletion, hierarchical menus, and color output, mimicking professional CLI tools like Cisco interfaces, as shown in the demo GIFs and Features list.
Asynchronous command execution with schedulers allows for single-threaded applications without synchronization worries, detailed in the Async programming section with examples like LoopScheduler.
Built-in telnet server enables remote CLI access, expanding usability for network management, with support for both boost and standalone asio, as described in the Dependencies and Async sections.
The README explicitly states that cli does not have effective Unicode support by default, requiring custom stream implementations like boost::nowide for proper handling, which adds complexity.
To enable telnet server functionality, the library depends on asio (standalone or boost), adding external dependencies and setup complexity that might not be desired for local-only applications.
As a specialized C++ library, it has a smaller community and less extensive documentation compared to more general CLI frameworks, which could hinder troubleshooting and adoption for broader use cases.
:computer: C++ Functional Terminal User Interface. :heart:
Lightweight C++ command line option parser
CLI11 is a command line parser for C++11 and beyond that provides a rich feature set with a simple and intuitive interface.
ImTui: Immediate Mode Text-based User Interface C++ Library
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.