Pearl is a free, open source ai interaction & interfaces project written in TypeScript and released under Apache-2.0. It has 1,093 GitHub stars, 180 forks and 40 open issues, and was last pushed 5 months ago. On this registry it ranks #71 of 76 tracked projects in AI Interaction & Interfaces, with 5 head-to-head comparisons available.

What is Pearl?

Bubble Lab is an open-core, TypeScript workflow engine that powers the Slack-native Bubble Lab platform and its AI assistant Pearl, and it is aimed at teams that want operational work automated inside Slack as well as at developers and organisations that want to host that same execution engine on their own infrastructure.

What it is

Bubble Lab is a Slack-native AI operator platform built around Pearl, an AI assistant that teams ask to execute workflows, access systems, and perform tasks across their stack without leaving Slack. This repository, published under the name Bubble Lab, contains the open-core workflow engine that powers that platform. It is the same execution engine Bubble Lab uses internally, and it is also fully runnable, hostable, and extensible on its own. It is written in TypeScript and licensed under Apache-2.0, and it ships the workflow execution runtime, agent and integration primitives the project calls "Bubbles", a local workflow studio, execution tracing and logging, CLI tooling, and exportable workflows. Installation is handled with pnpm, and the local studio is served at http://localhost:3000.

The concrete problem it addresses is tool switching and the operational work that gets stranded between disconnected systems. Rather than moving between applications to run a task, a team member asks Pearl inside Slack and the workflow executes against SaaS tools, APIs, and databases. For organisations that cannot or will not route execution through managed hosting, the engine is the alternative: it can be run locally, hosted in existing infrastructure, extended with custom agents and integrations, and used to embed Bubble Lab workflows inside other products.

Key capabilities

  • Workflow execution runtime that Bubble Lab uses in production, described in the README as fully functional and production-ready.
  • Agent and integration primitives called "Bubbles", which developers extend to create custom agents and integrations.
  • Local workflow studio, started with pnpm run dev and opened at http://localhost:3000, for building, editing, and running workflows.
  • Execution tracing, logging, and observability over workflow runs.
  • CLI tooling, including npx create-bubblelab-app, which scaffolds a new BubbleLab project with a pre-configured TypeScript setup and the core packages and runtime installed.
  • Exportable workflows that can be deployed anywhere or embedded inside your own products.
  • Pearl-driven flow creation that requires a GOOGLE_API_KEY, uses gemini-3.0-pro by default for generation, and uses fast find-and-replace for code edits.

Who uses it and how

  • Teams on the managed Bubble Lab platform, which adds hosted execution and orchestration, observability dashboards, execution history, team collaboration, and deployment management.
  • Developers who want full control over workflow execution and run the engine locally instead of relying on managed hosting.
  • Organisations that need self-hosted automation infrastructure and host the engine inside their own environment.
  • Engineers building custom agents or integrations who extend the runtime and the "Bubbles" primitives for their own use cases.
  • Slack-centric teams that keep the interface in the workspace, where Pearl reaches Slack, SaaS tools, APIs, and databases on the team's behalf.

Getting started

The quickest route is the managed platform at https://app.bubblelab.ai, which requires no setup. Running it yourself takes two commands — pnpm install and pnpm run dev — after which the local studio is available at http://localhost:3000, while npx create-bubblelab-app scaffolds a new BubbleLab project with the core packages and runtime pre-configured; detailed setup instructions live in CONTRIBUTING.md and at https://docs.bubblelab.ai/intro.

How it compares

No similar open-source projects and no paid products it replaces are named in the facts available for this entry, so it stands alone in this registry on that measure. The one documented contrast is internal to the project: a fully managed hosted platform option, and a self-hosted open-core engine option that shares the same execution engine.

When to use it — and when not to

Self-hosting means operating the engine yourself and supplying your own GOOGLE_API_KEY, and flow creation with Pearl is only well tested against gemini-3.0-pro — the README warns that a weaker model can produce degraded or inconsistent results. Teams that want managed Slack and SaaS integrations, hosted orchestration, and observability dashboards out of the box should take the hosted platform rather than the open-core path. Anyone unwilling to run and maintain the runtime, or to keep a capable generation model configured, should not pick the self-hosted engine.

project readme (upstream, from github) — read inline

Bubble Lab

Open-core workflow engine powering Bubble Lab — and fully runnable, hostable, and extensible on its own.

Discord Docs GitHub Stars CI Status License TypeScript

Use Bubble Lab PlatformView DemosDocumentation


Editing Workflows

Editing Flow

Running Workflows

Running Flow


📋 Overview

Bubble Lab is a Slack-native AI operator platform that helps teams automate operational work directly inside Slack using Pearl, its AI assistant.

Instead of switching between tools, teams can ask Pearl to execute workflows, access systems, and perform tasks across their stack.

This repository contains the open-core workflow engine that powers the Bubble Lab platform.

It is the same execution engine used internally by Bubble Lab — and can also be run, hosted, and extended independently.

This makes it suitable for:

  • Teams using the Bubble Lab platform
  • Developers who want full control over workflow execution
  • Organizations that need self-hosted automation infrastructure
  • Engineers building custom agents or integrations

🧠 How this relates to Bubble Lab Platform

You can use Bubble Lab in two ways:

Option 1 — Use Bubble Lab Platform (recommended)

Use the fully managed platform with:

  • Pearl, the Slack-native AI operator interface
  • Managed integrations with Slack, SaaS tools, APIs, and databases
  • Hosted workflow execution and orchestration
  • Observability dashboards and execution history
  • Team collaboration and deployment management

👉 https://app.bubblelab.ai


Option 2 — Run the Open-Core Engine Yourself

You can run and host the workflow engine independently.

This allows you to:

  • Build and execute workflows locally
  • Host the engine in your own infrastructure
  • Create custom agents and integrations
  • Extend the runtime for your own use cases
  • Export workflows and deploy anywhere
  • Embed Bubble Lab workflows inside your own products

Everything in this repository is fully functional and production-ready.


⚙️ What this repository provides

The open-core engine includes:

  • Workflow execution runtime
  • Agent and integration primitives ("Bubbles")
  • Local workflow studio
  • Execution tracing, logging, and observability
  • CLI tooling
  • Exportable workflows

This is the infrastructure layer that powers Bubble Lab and Pearl.


🚀 Quick Start

Option A — Use Bubble Lab Platform

No setup required:

https://app.bubblelab.ai


Option B — Run locally

Run Bubble Studio locally in 2 commands:

# 1. Install dependencies
pnpm install

# 2. Start everything
pnpm run dev

Open http://localhost:3000 and you can now build, edit, and run workflows locally!

⚠️ Note: To create flow with pearl (our ai assistant), you'll need API keys (GOOGLE_API_KEY). By default gemini-3.0-pro is used for generation and code edits use fast find-and-replace. Weaker model is not well tested and can lead to degraded/inconsistent performance. See CONTRIBUTING.md for detailed setup instructions.

Option C — Create a new Bubble Lab project

Get started with BubbleLab in seconds using our CLI tool:

npx create-bubblelab-app

This will scaffold a new BubbleLab project with:

  • Pre-configured TypeScript setup with core packages and run time installed
  • Sample templates (basic, reddit-scraper, etc.) you can choose
  • All necessary dependencies
  • Ready-to-run example workflows you fully control, customize

Next steps after creation:

cd my-agent
npm install
npm run dev
What You'll Get: Real-World Example

Let's look at what BubbleFlow code actually looks like using the reddit-scraper template:

The Flow (reddit-news-flow.ts) - Just ~50 lines of clean TypeScript:

export class RedditNewsFlow extends BubbleFlow<'webhook/http'> {
  async handle(payload: RedditNewsPayload) {
    const subreddit = payload.subreddit || 'worldnews';
    const limit = payload.limit || 10;

    // Step 1: Scrape Reddit for posts
    const scrapeResult = await new RedditScrapeTool({
      subreddit: subreddit,
      sort: 'hot',
      limit: limit,
    }).action();

    const posts = scrapeResult.data.posts;

    // Step 2: AI analyzes and summarizes the posts
    const summaryResult = await new AIAgentBubble({
      message: `Analyze these top ${posts.length} posts from r/${subreddit}:
        ${postsText}

        Provide: 1) Summary of top news, 2) Key themes, 3) Executive summary`,
      model: { model: 'google/gemini-2.5-flash' },
    }).action();

    return {
      subreddit,
      postsScraped: posts.length,
      summary: summaryResult.data?.response,
      status: 'success',
    };
  }
}

What happens when you run it:

$ npm run dev

✅ Reddit scraper executed successfully
{
  "subreddit": "worldnews",
  "postsScraped": 10,
  "summary": "### Top 5 News Items:\n1. China Halts US Soybean Imports...\n2. Zelensky Firm on Ukraine's EU Membership...\n3. Hamas Demands Release of Oct 7 Attackers...\n[full AI-generated summary]",
  "timestamp": "2025-10-07T21:35:19.882Z",
  "status": "success"
}

Execution Summary:
  Total Duration: 13.8s
  Bubbles Executed: 3 (RedditScrapeTool → AIAgentBubble → Return)
  Token Usage: 1,524 tokens (835 input, 689 output)
  Memory Peak: 139.8 MB

What's happening under the hood:

  1. RedditScrapeTool scrapes 10 hot posts from r/worldnews
  2. AIAgentBubble (using Google Gemini) analyzes the posts
  3. Returns structured JSON with summary, themes, and metadata
  4. Detailed execution stats show performance and token usage

Key Features:

  • Type-safe - Full TypeScript support with proper interfaces
  • Simple - Just chain "Bubbles" (tools/nodes) together with .action()
  • Observable - Built-in logging shows exactly what's executing
  • Production-ready - Error handling, metrics, and performance tracking included

📚 Documentation

Learn how to use each bubble node and build powerful workflows:

👉 Visit BubbleLab Documentation

The documentation includes:

  • Detailed guides for each node type
  • Workflow building tutorials
  • API references
  • Best practices and examples

🤝 Community & Support

⚠️ UPDATE (January 20, 2026): We are no longer accepting code contributions or pull requests at this time. However, we still welcome and encourage:

  • 🐛 Bug reports - Help us identify issues
  • 💬 Feature requests - Share your ideas for improvements
  • 🗨️ Community discussions - Join conversations in Discord
  • 📖 Documentation feedback - Suggest improvements to our docs

Thank you to everyone who has contributed and shown interest in Bubble Lab!

Get involved:

License

This repository contains the open-core components of Bubble Lab and is licensed under Apache 2.0. The Bubble Lab platform, Pearl, and hosted infrastructure include additional proprietary components not included in this repository.

Frequently asked questions

Is Pearl free to use?

Pearl is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Pearl do?

AI-powered automation that lives in your Slack workspace

What is Pearl written in?

Pearl is primarily written in TypeScript. Its source is publicly available at https://github.com/bubblelabai/bubblelab, and it has 1,093 GitHub stars.