An IO Ninja plugin is a collection of scripts residing in a dedicated directory. IO Ninja comes with a set of standard plugins, and users can extend this set with plugins of their own. Plugins fall into one of the following two categories.

Session Plugins

Session plugins provide a transport for sending and receiving data. Whenever you click the New Session button, you choose one of the available session plugins to be used as a transport provider:


IO Ninja contains session plugins for all commonly used transports (Serial, TCP, UDP, SSL, pipes, etc), but it’s always possible to create a new plugin for a vendor-specific transport (e.g., to work with a device that exposes a non-standard USB interface).

Layer Plugins

Layer plugins are attached on top of existing transport sessions and can be used for:

  • Post-processing logs:

    • Decode higher-level protocols (e.g. Modbus Analyzer);
    • Colorize data according to some logic (e.g. Regex Colorizer);
    • Filter/clean-up logs according to some logic (e.g. TX/RX Filter);
  • Custom logic of sending and receiving data:

    • Implement application-layer protocols (e.g. Xmodem);
    • Auto-reply to incoming packets (e.g. Echo);
    • Send packets on timer (e.g. Replay Log);
    • Add prefix/suffix/pack/encode/retransmit packets (e.g. TX Modifier).

Layers don’t implement transports; instead, they use a transport provided by the underlying session plugin. On the one hand, it means, layers are more restricted in what they can do. On the other hand, it makes them transport-independent and typically more lightweight than session plugins.

It’s possible to stack layers one on top of another, thus applying their functionality in a specific order: