Espresso Labs

Version 23.12 (Momo)

  • Added support for ESP32 devices connected to controller with dedicated device class
  • Added IDE for ESP32 with remote compilation and installation
  • Changes in controller management

Version 23.06 (Lulu)

  • Added support for Jupyter’s computing backend based on Amazon Web Services with its automatic deployment

Version 22.12 (Kiki)

  • Added support for virtual devices within Amazon Web Services clouds
  • Added support for Amazon Web Services cloud controller
  • Simplification of the controller control process
  • Added exclusive name assignment, DNS registration and origin of certificates for it on the controller
  • Access to the controller only based on a domain relationship
  • Extended monitoring of controller operation
  • Added an automatic schedule to turn devices on and off
  • Manage the activation and deactivation of the controller in an automated way
  • Changing the way lab files work
  • Improved admin navigation
  • New translation for Polish language
  • New documentation covering screen changes

What is Espresso Labs?

Espresso Labs is a cloud-based service with locally deployed controllers that allows you to create extensive laboratories based on physical and virtual devices with full support for managing them via a web application.

The environment prepared in this way can be used both in the didactic process and in the cases of testing new solutions or conducting research and development activities.

Users’ access to individual components of the system can be realized both freely, based on their registration, and accidentally, based on an extensive mechanism of generating temporary one-time keys.

The solution on the side of the client using remote access requires only a browser that supports HTML5 to achieve full access.

The controller attending the lab requires, as a minimum, only Internet access for outbound and inbound traffic of the open HTTP ports (80 and 443). This means that it can also be installed in private networks with configured port forwarding on the router.

The controller itself fully isolates the laboratory environment and allows to build its infrastructure without a direct connection to the public network.

Communication to individual devices within the laboratory can take place using the Telnet, SSH, RDP and RBF (VNC) protocols.

Due to the way of its implementation, the controller can be both a physical server, an instance operating within a virtual environment, or an instance within the operator’s cloud computing.


The basic components of Espresso Labs is a cloud manager available via a web application and one or a few controllers responsible for access management and direct communication with the infrastructure constituting the laboratory.

Since the entire logical configuration of the laboratory is stored on the manager’s side, both load balancing and migration between controllers can be implemented in a seamless manner.

The controller within the laboratory network is responsible for enabling access to its individual components and performing tasks related to their management and delegated from the manager’s level.

Through it, it is also possible to control the power supply or the control over virtualization planned for implementation in version 20.12.

Client application

Both the client and the system administrator use the same login point as the dedicated manager server instance. If a user who does not have the administrator status logs in, he will only be able to see the laboratories on offer, reserve access to the sets he has assigned and connect to the laboratory infrastructure as part of the reservation.

Client access via one-time key

The customer can also access the laboratory based on the generated one-time key. Access of this type may be limited to any number of sets as well as in time. The moment of access itself can be reserved by the key holder or indicated during its generation by the administrator.

Manager configuration options

A user with the administrator status has, in addition to the complete functionality available to other registered users, also the ability to manage laboratory configurations.

In addition to managing licenses, controllers and users, a number of options are available that allow you to shape the laboratory and access it in a number of ways.


In a logical model, a laboratory is a collection of assigned sets containing devices. The laboratory is usually associated with a specific task, which may be available as a description in the markdown format or as an attached pdf document.


It is a logical set of devices. Each kit can be assigned to one or more laboratories. The reservation of the set, although carried out with the indication of a specific laboratory, assigns exclusivity to the devices contained in it to a specific user. Access to devices can be configured at the assembly level, as can a local name other than the standard device name.

As part of the set, it is also possible to create a description of connections, which will be used to generate a dynamic map of the set in the laboratory.


A device is a logical instance with associated name and class associated with it. For each device, it is possible to configure any number of global accesses based on Telnet, SSH, RDP and RBF protocols, including defining parameters in the form of addresses and ports for access and authentication. Accesses can also be defined locally for each of the sets containing them.

Device classes

Devices are associated with classes, which facilitates their visual identification. The classes can be freely added and modified to adapt their list to the actual components of the laboratory.

User permissions

Users can be authorized to use individual sets from the level of their management as well as each set separately. It is also possible to add or remove a user from the administrator’s group and reset the password.

Power management

The manager, via the controller, can communicate with power strips within the laboratory network in order to change the state of individual sockets.

Installing the controller

The Espresso Labs controller is created and configured based on the latest Ubuntu LTS distribution using a dedicated application. Due to the laboratory configuration stored within the manager, its implementation or replacement does not involve any additional operations apart from preparation and registration in the management system.