Pocketix is a modular and system-agnostic program execution engine implemented as a Node.js package developed by Petr John and Jiří Hynek at BUT FIT, primarily aimed at automating smart devices on mobile phones.
The first prototype was created through a collaboration between BUT FIT and Logimic as part of the project Services for Water Management and Monitoring Systems in Retention Basins.
More information is available on the Pocketix GitHub Organization.
The IoTiX Interpreter, is built around two core interfaces, IReferenceManager and ICommander, which abstract system-specific details and enable integration with diverse environments, including those with custom digital twins or non-JavaScript runtimes. IReferenceManager manages loading and storing of device parameters, while ICommander handles the dispatching of execution commands. Program execution begins with the creation of a ProgramRunner, which parses the program into an Abstract Syntax Tree (AST) and constructs a dependency table. Each block in the program can be evaluated and visually represented, ensuring alignment between graphical and textual logic. The evaluation process involves retrieving parameters, binding values, traversing the AST, and dispatching the resulting commands through the provided interfaces.
Through this architecture, the IoTiX Interpreter provides a powerful backend for executing IoTiX scripts, enabling consistent and adaptable automation across smart environments.
Pocketix Node is the backend logic engine that interprets automation flows from the editors and outputs clean, testable commands — with zero risk of triggering hardware unintentionally.
const runner = new ProgramRunner()
.setCommander(commander)
.setReferenceManager(referenceManager)
.parseProgram(program);
const {{ commands, toUpdate }} = await runner.run();
npm run test
All IoTiX components are open-source under the MIT License. Contributions are warmly welcomed via pull requests on GitHub.