ioAuthoring User Guide

To start using ioAuthoring, log in here:

ioAuthoring has 3 main pages (Fog, Build and Publish) for the IoT system creation. Let's see what we can do using each of them!


The ioFog Agent turns commodity hardware into fog nodes. It works with virtualization/containerization technologies such as Docker or unikernels, to dynamically instantiate software. It provides fog services to the running software, which includes a distributed data bus, secure dynamic configuration, remote debugging, common logging, and more.

The FogController tells each of the fog nodes what software to run. It is the primary control point of the fog system. It offers a REST API for interfacing with the fog programmatically or via user interfaces such as ioAuthoring. FogController can be installed on anything running NodeJS, and is commonly installed on standard Linux web servers.

Comsat is internetworking aid for fog nodes (short for Communications Satellite). ComSat installs on any common version of Linux. It handles the traffic between fog nodes. You can have as many ComSat instances in a fog deployment as you want.

ioAuthoring is an easy to use visual interface for working with FogController. It provides the ability to visualize microservices schemas, called "tracks". It can be installed on any standard web server that has connectivity to the FogController. Users have the ability to organize the software running on the fog and see the status of the system components. Drag-and-drop functionality makes it easy to model data flows, which become active on the actual fog nodes automatically.

IOTRACKS fog computing system

fog architecture

Fog page

Fog page allows you to add and manage ioFog Agents.

ioFog Agent is a service that runs constantly in the background on a Linux machine. It is the agent that turns a Linux computer into a piece of the IOTRACKS I/O compute fabric.

  1. Click on the fog link
  2. Drag and drop any element to the layout (select either x86 or ARM according to your system). After that you will see the properties of the ioFog Agent on the properties pane to the right.
    drop fog
  3. You can add Name, Location, Description (all these are optional) to your ioFog Agent here:
    fog description
  4. You can enable 3 system containers on your ioFog Agent:
    • Enable Bluetooth – activates a system container that provides REST API for Bluetooth low energy devices.
    • Enable Debug Console – activates Debug system container.
    • Enable Stream Viewer – activates Stream Viewer system container.
  5. In order to provide your ioFog Agent installation for usage you have to generate a Provisioning Key by clicking on the respective button. For steps on how to enter the key on your machine please see the Step 2 here:
  6. Here you can see a read-only information about your ioFog Agent:
    fog health

    Instance ID corresponds to ID of your installation.
    IP Address shows the address of the device from which ioFog Agent connected to Fog Controller last time.
    Last Seen tells you the last time when FogController received data from ioFog Agent.
    System Time tells you the ioFog Agent local time.
    Local Status tells you the last time that the ioFog Agent was able to gather status information from its components.
    Last Command tells you when the ioFog Agent last listened to a command from FogController.
    ioFog Type is Linux Type (x86 or ARM).
    Daemon Status can be displayed as: RUNNING, STARTING or UNKNOWN. Please note: If your ioFog Agent didn't communicate with FogController for more than 1 minute, it's status will turn to Unknown automatically.
    Daemon Duration is Daemon uptime.
    Daemon Start is the time when Daemon was started.
    Processed Msgs is the number of processed messages since the Daemon started.
    Disk Usage is the amount of disk space (in GB) that ioFog Agent uses for messages.
    Memory Usage is the amount of RAM used by ioFog Agent (in MB).
    CPU Usage is the percentage of CPU time that the software uses.
    Network Interface is the name of the network adapter that is used by Linux machine for connection to FogController.

  7. Below you can see fields for your ioFog Agent configuration. You can modify them right here
    fog config
  8. You can find some configuration descriptions using 'sudo iofog help' command on the machine where ioFog Agent is running. Here's respective expected output:
    iofog help

Build page

Build page provides environment where user creates data streams from and between containers.

Build page

On the left side you can find the list of public and private elements (containers with microservices).
They can be added to a Track - a graphic interface of the system where you establish connections between microservices (create stream(s)).
You can create new track using “+New Track” button or select existing one from drop-down field left to the button.
Also you can rename a track, delete and activate it using corresponding buttons. When the track is activated, containers that are attached to ioFog Agent instance will start running on the machine (you can find how to attach containers to ioFog Agent in point 3 below).

  1. Lets drag-and-drop any element to track layout and look at its properties to the right.
    drop element
  2. Name your Element
    element properties 1
  3. Select the ioFog Agent created on the Fog page (the container will run on the corresponding machine). Please note, that element status (Unknown, Running, Starting, Rebuilding) is updated only when the page reloads.
  4. Add configuration JSON. It sends configuration parameters in JSON format to corresponding container. Your container may not need any configuration to be sent, but most do.
  5. See Configuration Example in order to add correct configuration JSON at the previous step. You can add your own configuration example when you create your own element on the Publish page.
  6. Container Log limit value defines max disk space obtained by the container logs. Default value is 10 MB, you can change it here if you need.
  7. Clicking on REBUILD CONTAINER button will force your container to restart. Some settings (like Log limit etc.) can be applied only when container starts so they require rebuilding. Also it guarantees you that the latest container version is running as Docker checks it each time container is built.
  8. Here you can see 3 checkboxes that enable additional container management capabilities:
    • Grand host access – is required for containers that use some resources of host system. For example you'll need to check it for granting access to Bluetooth
    • Send to Debugger – connects the element to the Debug system container.
    • Send to Stream Viewer – connects the element to the Stream Viewer system container.

    element properties 2
  9. MANAGE PORTS button allows to set internal and external ports for granting access to the element from a browser, cloud, container or machine.
  10. DELETE THIS ELEMENT removes the element from the track. Corresponding container will be stopped and removed.
  11. Routing data between elements is made by linking them with blue arrows. You can click on the blue arrow to remove the existing routing if you need to delete connection.
    element routing

Publish page

Publish page allows user to publish his own containers and use them on Build page afterwards.

  1. Lets drag-and-drop any element to the layout and look at its properties to the right.
    drop element
    There are 2 required fields: Name (marked as 2) and Container Image (marked as 3). Other fields are optional.
  2. Add a friendly Name to your Element.
  3. Add Container Image URL (an example is displayed). It is the path to repository where the container is posted ("temperature-conversion-node-v1.00" container in the "catalog" folder of "iotracks" repository).
  4. Disk Space Required and RAM Required are numeric fields that show how much resources allowed for the container usage.
    element fields 1
  5. Input Information Type, Input Information Format, Output Information Type, Output Information Format fields are optional descriptive fields.
    Containers are able to send not only messages in JSON format but also multimedia files etc. For example, you can enter "video" for Input Information Type and Output Information Type, "mp4" for Input Information Format, "3gp" for Output Information Format.
  6. You can choose icon image for custom container display (max size is 64 KB).
    element fields 1
  7. You can fill in Configuration Example field - it will be displayed as configuration example of the respective element on the Build page.
  8. DELETE THIS ELEMENT removes the element from the layout and from Build page. Corresponding containers will be stopped and removed.