# googlechromelabs/carlo

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/googlechromelabs-carlo).**

9,259 stars · 312 forks · JavaScript · Apache-2.0 · archived

## Links

- GitHub: https://github.com/GoogleChromeLabs/carlo
- awesome-repositories: https://awesome-repositories.com/repository/googlechromelabs-carlo.md

## Description

Carlo is a Node.js web rendering framework and desktop application bundler. It functions as a server-side browser controller and headless automation bridge that uses a local browser instance as the primary user interface for Node.js applications.

The project distinguishes itself by providing a bidirectional bridge for cross-environment JavaScript integration, allowing server-side functions to be exposed to the browser window object and enabling the execution of page-context code from the server. It includes capabilities for packaging applications into standalone desktop executables, complete with custom window settings and system icon configuration.

The framework covers a broad surface of capabilities, including network request interception, local and remote content serving, and browser instance orchestration. It also provides tools for application window management and a headless test mode for automated verification.

## Tags

### Networking & Communication

- [Asynchronous Message-Passing Bridges](https://awesome-repositories.com/f/networking-communication/distributed-systems-p2p/distributed-computing/communication-protocols/embedded-browser-bridge-protocols/asynchronous-message-passing-bridges.md) — Implements a bidirectional bridge for secure, asynchronous message passing between the Node.js server and the browser UI.
- [Local File Mappings](https://awesome-repositories.com/f/networking-communication/local-http-servers/local-file-mappings.md) — Maps local directory paths to browser-accessible URL prefixes to serve assets without requiring a full web server.

### Web Development

- [Node.js Desktop Frameworks](https://awesome-repositories.com/f/web-development/node-js-desktop-frameworks.md) — A framework that uses a local browser instance as a rendering surface for Node.js applications.
- [Headless Browser Controllers](https://awesome-repositories.com/f/web-development/headless-browser-controllers.md) — Uses a local browser instance as a rendering surface, controlled by a server-side Node.js process.
- [Automation Bridges](https://awesome-repositories.com/f/web-development/headless-browsers/automation-bridges.md) — A bridge connecting a backend environment to browser page contexts for executing JavaScript and intercepting network requests.
- [Server-Side Controllers](https://awesome-repositories.com/f/web-development/server-side-frameworks/browser-side-execution-environments/server-side-controllers.md) — A controller that manages browser windows and exposes server-side functions to the frontend window object.
- [Request Interception Middleware](https://awesome-repositories.com/f/web-development/request-interception-middleware.md) — Provides middleware to intercept and modify network requests at the browser level to fulfill resources from the local backend.
- [Headless Browser Orchestration](https://awesome-repositories.com/f/web-development/web-automation-scraping/web-scraping-automation/browser-automation/headless-browser-orchestration.md) — Orchestrates the startup of browser instances with configurable dimensions, colors, and user data directories. ([source](https://github.com/GoogleChromeLabs/carlo/blob/master/API.md))

### Development Tools & Productivity

- [Desktop Application Packagers](https://awesome-repositories.com/f/development-tools-productivity/desktop-application-packagers.md) — A tool for packaging Node.js applications into standalone desktop executables with custom window and icon settings. ([source](https://github.com/googlechromelabs/carlo#readme))
- [In-Page Script Execution](https://awesome-repositories.com/f/development-tools-productivity/in-page-script-execution.md) — Provides the capability to execute JavaScript strings or functions directly within the browser page context from the server. ([source](https://github.com/GoogleChromeLabs/carlo/blob/master/API.md))

### Software Engineering & Architecture

- [Browser Function Invocations](https://awesome-repositories.com/f/software-engineering-architecture/remote-function-invocation/browser-function-invocations.md) — Allows server-side JavaScript functions to be injected into the browser window object for direct invocation by the frontend. ([source](https://github.com/GoogleChromeLabs/carlo/blob/master/API.md))
- [Standalone Runtime Bundling](https://awesome-repositories.com/f/software-engineering-architecture/embedded-runtimes/standalone-runtime-bundling.md) — Packages the Node.js runtime and browser binaries into a single standalone executable for easy desktop deployment.

### User Interface & Experience

- [JavaScript Execution Bridges](https://awesome-repositories.com/f/user-interface-experience/javascript-execution-bridges.md) — Provides a bridge for executing scripts and invoking functions between a Node.js host and a browser environment.
- [Web-Based Rendering Engines](https://awesome-repositories.com/f/user-interface-experience/web-based-rendering-engines.md) — Provides a framework for hosting web-based user interfaces within native desktop windows using a local browser instance. ([source](https://github.com/googlechromelabs/carlo#readme))
- [Web Integration Bridges](https://awesome-repositories.com/f/user-interface-experience/web-integration-bridges.md) — Connects a web rendering stack with a backend environment to grant applications access to low-level system resources. ([source](https://github.com/googlechromelabs/carlo#readme))
- [Application Window Managers](https://awesome-repositories.com/f/user-interface-experience/application-window-managers.md) — Provides controls for opening and managing browser windows with specific size and position settings. ([source](https://github.com/GoogleChromeLabs/carlo/blob/master/API.md))

### Part of an Awesome List

- [Local Directory Serving](https://awesome-repositories.com/f/awesome-lists/media/file-and-image-handling/local-file-image-replacements/local-directory-serving.md) — Makes local directories available to the browser via specified URL prefixes for asset serving. ([source](https://github.com/GoogleChromeLabs/carlo/blob/master/API.md))

### DevOps & Infrastructure

- [Standalone Application Packaging](https://awesome-repositories.com/f/devops-infrastructure/deployment-management-strategies/execution-platforms-and-targets/deployment-targets/node-js-runtimes/standalone-application-packaging.md) — Packages the web-based application and Node.js runtime into a single-file binary to eliminate dependency on pre-installed runtimes.
