Google announces an early release of Carlo, a Google Labs experiment for creating Node.js applications. Carlo leverages Puppeteer to communicate between Node.js applications and the Chrome web browser.

Electron is the current leader in providing tools for creating desktop applications with web technologies. In contrast to Electron, Carlo does not attempt to bundle a specific version of Chrome and Node.js together, but instead relies on whichever version of Chrome is installed on an end user's computer.

Carlo does not provide capabilities for making true desktop application alternatives such as changing the name, menu, or icon of the browser view. Instead, Carlo is more akin to running an application in a local application server and automating the viewing of that application within Chrome.

Puppeteer, Google's browser automation project that leverages the DevTools protocol, is the mechanism by which Carlo communicates with the Chrome browser instance.

Carlo-based applications do not need to release updates each time Chrome gets updated. The potential downside is that a new release of Chrome could break functionality within an application. Applications will return an error if unable to locate an installation of Chrome version 70 or higher.

pkg is recommended to package Carlo applications into executable binaries. In contrast, Electron provides a rich set of application building infrastructure.

Carlo is likely to reignite the debate on what is the web vs. what is not. Google engineer Alex Russell has previously argued that environments like Electron are not the web:

Many platforms have attempted to make it possible to gain access to “exotic” capabilities while still allowing developers to build with the client-side technology of the web. In doing so they usually jettison one or more aspect of the shared value system. They aren’t bad — many are technically brilliant — but they aren’t of the web.

The approach encouraged by Carlo should be well suited for Progressive Web Apps. Developers looking for full capabilities for desktop applications are likely to continue leveraging Electron.

Carlo is available under the Apache 2 open source license. Contributions are welcome via the Carlo GitHub project and should follow Carlo's contribution guidelines and Google's open source conduct guidelines.