The motivation behind the project was to create an adapter between the shell and the web. Allowing users to expose command line programs as HTTP services with a high degree of freedom and flexibility, not imposing any predefined behavior.
The project is based on an open specification.
Kapow! supports an increasing list of HTTP features; including forms, websockets and streaming. The architecture is based on exposing a private REST API through which the shell can interact with the incoming user HTTP requests.
Leveraging this architecture an ecosystem of specialized tools is planned, to help with common high level tasks in Kapow! services.
For example:
- Shell commands that can interact with incoming web browser requests and render specialized web pages.
- Automatic mapping of shell command parameters to REST API through bash completion scripts.
Roberto will do some demos about creating Kapow! services from scratch (expose nmap as a service, tcpdump and pandoc).