netease-youdao/LobsterAIPublic

Open-source, desktop-grade AI agent that gets real work done — data analysis, slides, docs, video & web research. Built on OpenClaw; runs tools on your real desktop and takes commands from your phone via WeChat, Feishu, DingTalk & Telegram.

AI summary: Open-source desktop agent capable of executing real OS workflows and responding to mobile messaging commands.

Stars
6.1K
+3 today
Forks
972
Watchers
37
Open issues
382
Open PRs
146
Contributors
~62
Commits
4.2K
Branches
115

TypeScriptMITCreated Feb 12, 2026Last push 3d agoLatest release 2026.9.23+13 stars this week+106 this month

Quick answers

What is LobsterAI?
Open-source desktop agent capable of executing real OS workflows and responding to mobile messaging commands.
What does LobsterAI do?
LobsterAI is a highly capable, desktop-grade AI agent robustly built on the OpenClaw framework that interacts directly with a user's operating system to perform complex tasks. It flawlessly executes real, intensive desktop operations—such as analyzing data, compiling web research, and generating detailed slide decks—by directly controlling native applications. Uniquely, it seamlessly bridges the traditional desktop environment with mobile interfaces by readily accepting remote commands. It heavily supports popular messaging platforms like WeChat, Feishu, DingTalk, and Telegram to execute background tasks incredibly seamlessly from anywhere.
Who is LobsterAI for?
Knowledge workers, dedicated researchers, and serious automation enthusiasts wanting to remotely control their desktop machines to execute complex operational tasks. It provides extreme flexibility for users who operate primarily on mobile.
How do I get started with LobsterAI?
git clone https://github.com/netease-youdao/LobsterAI.git
How popular is LobsterAI on GitHub?
netease-youdao/LobsterAI has 6,082 stars and 972 forks on GitHub, and gained 13 stars in the last 7 days.
What license does LobsterAI use?
netease-youdao/LobsterAI is released under the MIT license.

Star history

since Jul 29, 2026
02K4K6KJul 2026Aug 2026Sep 2026Oct 2026
6.1K stars as of Oct 2, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
OctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 4 commits2026-02-20: 1 commit2026-02-21: 5 commits2026-02-22: 4 commits2026-02-23: 13 commits2026-02-24: 15 commits2026-02-25: 11 commits2026-02-26: 21 commits2026-02-27: 22 commits2026-02-28: 5 commits2026-03-01: 4 commits2026-03-02: 27 commits2026-03-03: 12 commits2026-03-04: 18 commits2026-03-05: 21 commits2026-03-06: 13 commits2026-03-07: 18 commits2026-03-08: 5 commits2026-03-09: 8 commits2026-03-10: 7 commits2026-03-11: 9 commits2026-03-12: 18 commits2026-03-13: 19 commits2026-03-14: 4 commits2026-03-15: 15 commits2026-03-16: 23 commits2026-03-17: 23 commits2026-03-18: 26 commits2026-03-19: 27 commits2026-03-20: 28 commits2026-03-21: 18 commits2026-03-22: 24 commits2026-03-23: 27 commits2026-03-24: 37 commits2026-03-25: 29 commits2026-03-26: 30 commits2026-03-27: 17 commits2026-03-28: 20 commits2026-03-29: 6 commits2026-03-30: 17 commits2026-03-31: 49 commits2026-04-01: 28 commits2026-04-02: 44 commits2026-04-03: 39 commits2026-04-04: 3 commits2026-04-05: 1 commit2026-04-06: 0 commits2026-04-07: 20 commits2026-04-08: 22 commits2026-04-09: 29 commits2026-04-10: 26 commits2026-04-11: 1 commit2026-04-12: 1 commit2026-04-13: 21 commits2026-04-14: 18 commits2026-04-15: 14 commits2026-04-16: 29 commits2026-04-17: 12 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 27 commits2026-04-21: 14 commits2026-04-22: 17 commits2026-04-23: 21 commits2026-04-24: 16 commits2026-04-25: 9 commits2026-04-26: 1 commit2026-04-27: 19 commits2026-04-28: 36 commits2026-04-29: 11 commits2026-04-30: 1 commit2026-05-01: 1 commit2026-05-02: 1 commit2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 3 commits2026-05-06: 23 commits2026-05-07: 30 commits2026-05-08: 23 commits2026-05-09: 11 commits2026-05-10: 1 commit2026-05-11: 17 commits2026-05-12: 25 commits2026-05-13: 19 commits2026-05-14: 22 commits2026-05-15: 12 commits2026-05-16: 9 commits2026-05-17: 0 commits2026-05-18: 16 commits2026-05-19: 16 commits2026-05-20: 11 commits2026-05-21: 5 commits2026-05-22: 27 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 21 commits2026-05-26: 14 commits2026-05-27: 13 commits2026-05-28: 11 commits2026-05-29: 18 commits2026-05-30: 1 commit2026-05-31: 0 commits2026-06-01: 14 commits2026-06-02: 15 commits2026-06-03: 17 commits2026-06-04: 7 commits2026-06-05: 15 commits2026-06-06: 1 commit2026-06-07: 0 commits2026-06-08: 16 commits2026-06-09: 21 commits2026-06-10: 17 commits2026-06-11: 11 commits2026-06-12: 12 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 6 commits2026-06-16: 9 commits2026-06-17: 14 commits2026-06-18: 7 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 2 commits2026-06-22: 8 commits2026-06-23: 14 commits2026-06-24: 17 commits2026-06-25: 16 commits2026-06-26: 12 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 19 commits2026-06-30: 13 commits2026-07-01: 21 commits2026-07-02: 7 commits2026-07-03: 22 commits2026-07-04: 0 commits2026-07-05: 3 commits2026-07-06: 22 commits2026-07-07: 21 commits2026-07-08: 10 commits2026-07-09: 26 commits2026-07-10: 15 commits2026-07-11: 1 commit2026-07-12: 3 commits2026-07-13: 11 commits2026-07-14: 4 commits2026-07-15: 14 commits2026-07-16: 8 commits2026-07-17: 16 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 11 commits2026-07-21: 7 commits2026-07-22: 9 commits2026-07-23: 6 commits2026-07-24: 2 commits2026-07-25: 2 commits2026-07-26: 0 commits2026-07-27: 10 commits2026-07-28: 10 commits2026-07-29: 9 commits2026-07-30: 6 commits2026-07-31: 9 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 6 commits2026-08-04: 14 commits2026-08-05: 9 commits2026-08-06: 6 commits2026-08-07: 10 commits2026-08-08: 0 commits2026-08-09: 0 commits2026-08-10: 10 commits2026-08-11: 9 commits2026-08-12: 11 commits2026-08-13: 5 commits2026-08-14: 16 commits2026-08-15: 1 commit2026-08-16: 0 commits2026-08-17: 9 commits2026-08-18: 9 commits2026-08-19: 4 commits2026-08-20: 2 commits2026-08-21: 10 commits2026-08-22: 0 commits2026-08-23: 0 commits2026-08-24: 16 commits2026-08-25: 8 commits2026-08-26: 17 commits2026-08-27: 19 commits2026-08-28: 16 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 8 commits2026-09-01: 14 commits2026-09-02: 13 commits2026-09-03: 14 commits2026-09-04: 14 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 5 commits2026-09-08: 14 commits2026-09-09: 11 commits2026-09-10: 12 commits2026-09-11: 10 commits2026-09-12: 1 commit2026-09-13: 4 commits2026-09-14: 9 commits2026-09-15: 18 commits2026-09-16: 8 commits2026-09-17: 15 commits2026-09-18: 16 commits2026-09-19: 0 commits2026-09-20: 8 commits2026-09-21: 6 commits2026-09-22: 10 commits2026-09-23: 15 commits2026-09-24: 0 commits2026-09-25: 0 commits2026-09-26: 0 commits2026-09-27: 0 commits2026-09-28: 0 commits2026-09-29: 0 commits2026-09-30: 0 commits2026-10-01: 0 commits2026-10-02: 0 commits2026-10-03: 0 commits
2,530 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Very active

    2,530 commits in 52 weeks

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What LobsterAI does

LobsterAI is a highly capable, desktop-grade AI agent robustly built on the OpenClaw framework that interacts directly with a user's operating system to perform complex tasks. It flawlessly executes real, intensive desktop operations—such as analyzing data, compiling web research, and generating detailed slide decks—by directly controlling native applications. Uniquely, it seamlessly bridges the traditional desktop environment with mobile interfaces by readily accepting remote commands. It heavily supports popular messaging platforms like WeChat, Feishu, DingTalk, and Telegram to execute background tasks incredibly seamlessly from anywhere.

Knowledge workers, dedicated researchers, and serious automation enthusiasts wanting to remotely control their desktop machines to execute complex operational tasks. It provides extreme flexibility for users who operate primarily on mobile.

  • Native OS control: Interfaces completely directly with the desktop environment to smoothly operate native applications and complex workflows.
  • Cross-platform messaging: Receives complex task prompts and direct commands remotely via WeChat, Telegram, Feishu, and DingTalk.
  • Automated research capabilities: Conducts highly comprehensive web searches and intelligently compiles findings into highly structured documents.
  • Intelligent data processing: Highly capable of ingesting raw data files and independently outputting sophisticated analytical reports or slide presentations.
  • OpenClaw architecture: Built heavily on a specialized framework expressly designed for highly reliable, persistent OS-level agent execution.
  • Scheduled task management: Allows users to securely create highly recurring work either by conversation or through a dedicated UI.

Where teams use it

Remote desktop automation

Texting a direct command from a mobile phone to instantly have the desktop machine autonomously research a complex topic and generate a report.

Automated document generation

Instructing the agent remotely to independently process a folder of raw data and autonomously build a highly professional presentation slide deck.

Multi-modal desktop workflows

Bridging vital communication flawlessly between mobile messaging apps and heavy desktop applications without ever requiring any human intervention.

Background task delegation

Assigning incredibly time-consuming web research tasks directly to the local machine while actively away from the keyboard.

Getting started: git clone https://github.com/netease-youdao/LobsterAI.git

README

main branch

LobsterAI
LobsterAI

GitHub stars License Follow LobsterAI on X Follow LobsterAI on X
Supported platforms: macOS and Windows Electron 43 React 18

English · 中文

All-scenario office assistant Agent.
The first open-source desktop-grade Agent among major Chinese tech companies, built by NetEase Youdao.

Features  ·  Developing  ·  Community

main page

LobsterAI is a desktop Agent that can operate in your real working environment: local files, terminal commands, browser workflows, documents, spreadsheets, slides, IM channels, scheduled jobs, and project workspaces.

Cowork is the LobsterAI product/session layer. OpenClaw is the runtime and gateway underneath it. That split lets LobsterAI keep local persistence, permissions, UI state, artifacts, agents, memory, and IM bindings in the desktop app while using OpenClaw for agent execution.

Features

Desktop Cowork Sessions

Run long-form Agent tasks against local projects and files. LobsterAI streams progress, keeps session history, renders tool output, and asks for approval before sensitive actions such as file operations, terminal commands, or network access.

Multi-Agent Workflows

Create custom Agents with their own identity, model choice, skills, working directory, enabled state, and IM bindings. Keep the Main Agent for general work and use specialized Agents for repeatable roles.

Expert Kits

Install scenario-oriented Expert Kits that package capability selections and references for common workflows. Kits are selected independently from direct skills, so a workflow can combine curated kits with individual tools.

Skills

LobsterAI ships with 28 built-in skills configured in SKILLs/skills.config.json, including web search, Word documents, spreadsheets, PowerPoint, PDF processing, Remotion video generation, browser automation, image/video generation, stock research, content writing, email, weather, and skill creation.

MCP Servers

Connect external tools and data sources through Model Context Protocol servers. LobsterAI stores user-configured servers locally and syncs enabled servers into OpenClaw.

Scheduled Tasks

Create recurring work either by conversation or through the scheduled task UI. Use it for daily news digests, inbox summaries, website monitoring, weekly reports, and other repeatable work.

IM Remote Control

Reach your desktop Agent from WeChat, WeCom, DingTalk, Feishu/Lark, QQ, Telegram, Discord, NetEase IM, NetEase Bee, POPO, and email. Multi-instance platforms can bind different accounts or channels to different Agents.

Rich Artifacts

Preview and manage generated HTML, SVG, images, video, Mermaid diagrams, code, Markdown, text, documents, and local service artifacts inside the desktop app.

Local Memory And Data

Sessions and app data live locally in SQLite. OpenClaw workspace memory uses files such as MEMORY.md, USER.md, SOUL.md, and daily notes, so durable preferences and project context can carry across sessions.

Real-World Prompts

Scenario Example prompt
Build a local system "I still track inventory and sales in Excel. Build a local inventory system that records purchases and sales, calculates stock and profit, and opens in my browser."
Analyze local data "Use product-growth.xlsx to build a visual dashboard and summarize the main growth drivers."
Generate a deck "Research the AI Agent market and turn the findings into a presentation."
Automate browser checks "Open the ads dashboard every morning, check spend and conversion anomalies, and summarize likely causes."
Screen documents "Turn the resumes in this folder into a screening sheet and shortlist the strongest candidates against the JD."
Run scheduled work "Every weekday at 9 AM, collect yesterday's AI news and send me a concise digest."

How It Works

LobsterAI architecture

  • Renderer: React, Redux Toolkit, Tailwind, artifact renderers, settings, agent/session UI, skills, MCP, scheduled tasks, and IM configuration.
  • Main process: Electron lifecycle, IPC, SQLite persistence, auth, logging, OpenClaw startup, runtime repair, skill sync, IM gateways, and artifact services.
  • OpenClaw integration: openclawEngineManager, openclawConfigSync, openclawRuntimeAdapter, and coworkEngineRouter translate LobsterAI state into OpenClaw runtime behavior.

Install

Desktop

Download the latest macOS and Windows installers from Official Website or GitHub Releases.

Run From Source

Requirements:

  • Node.js >=24.15.0 <25
  • npm >=11.17.0 <12 (older versions: npm install -g npm@11.17.0)
  • git and pnpm, needed on the first run to build the pinned OpenClaw runtime from the sibling ../openclaw checkout

better-sqlite3@13.0.3 includes prebuilt N-API binaries for Windows, macOS, and Linux on x64/arm64. The allowScripts entry in package.json skips npm's unnecessary implicit rebuild for this version, so installing it does not require Visual Studio C++ Build Tools on Windows. Other dependencies' install scripts still run. Recheck this entry when upgrading better-sqlite3.

git clone https://github.com/netease-youdao/LobsterAI.git
cd LobsterAI
npm install

First development run:

npm run electron:dev:openclaw

Daily development after the pinned OpenClaw runtime exists:

npm run electron:dev

The renderer dev server runs at http://localhost:5175.

Developing

# Production renderer bundle
npm run build

# Electron main/preload TypeScript build
npm run compile:electron

# Official Vitest entry used by CI
npm test

# Full ESLint across src; may expose existing legacy debt
npm run lint

# CI-style lint for touched TypeScript files
npx eslint --ext ts,tsx --report-unused-disable-directives --max-warnings 0 <files>

OpenClaw Runtime

The pinned OpenClaw version and third-party plugin list live in package.json under openclaw.

# Build the current-platform runtime manually
npm run openclaw:runtime:host

# Use a custom OpenClaw source checkout
OPENCLAW_SRC=/path/to/openclaw npm run electron:dev:openclaw

# Force runtime rebuild
OPENCLAW_FORCE_BUILD=1 npm run electron:dev:openclaw

# Keep a local OpenClaw checkout on its current branch/tag
OPENCLAW_SKIP_ENSURE=1 npm run electron:dev:openclaw

DeepSeek Harness Runtime

The pinned dsh version and one archive descriptor per platform live in package.json under dsh. Development reads vendor/dsh-runtime/current; shipped apps download the archive on first use and verify it against the digest they carry.

# Build and activate the current-platform runtime
npm run dsh:runtime:host

# Boot it once and assert the web UI answers
npm run dsh:runtime:verify

# Full gate: build, pack, install over HTTP, boot, assert provider/model over RPC
npm run dsh:e2e
Publish a runtime archive (per platform)

Each target must be built on a matching machine: native dependencies install for the host, so a cross-architecture build produces an archive that packs cleanly and only fails on users' machines. The build refuses to run on a mismatched host.

Target Build on
mac-arm64 Apple Silicon mac
mac-x64 Intel mac
win-x64 Windows 10 1803+ (ships tar.exe)

Run these on that machine, substituting the target:

# 1. Build (applies the pinned patches, prunes to ~160 MB)
npm run dsh:runtime:mac-arm64

# 2. Pack; prints the sha256 and size
npm run dsh:runtime:pack mac-arm64

# 3. Upload vendor/dsh-dist/dsh-runtime-<version>-mac-arm64.tar.gz to the CDN,
#    then record where it landed. Digest and size come from the local manifest,
#    so they cannot drift from the bytes that were packed.
npm run dsh:runtime:url mac-arm64 "https://cdn.example.com/<uploaded>"

# 4. Confirm the URL serves exactly those bytes
npm run dsh:runtime:verify-urls mac-arm64

Step 3 writes dsh.runtimes[target] into package.json; commit that hunk so every platform's descriptor ships in one build. Each target holds one absolute URL and nothing is appended to it, so a CDN that mints an unrelated URL per file needs no shared directory.

Update to a newer dsh version
  1. Bump dsh.version in package.json.
  2. Copy the patch directory to the new version before that directory exists: cp -R scripts/dsh-patches/<old> scripts/dsh-patches/<new> (if <new> already exists, cp nests the copy one level down and the build finds no patches). Patches are found by version, and a missing directory applies no patches without failing — the Windows console-hiding fix would vanish silently. After copying, the build's sentinels re-verify each patch still lands, and fail if upstream moved the code: retarget the patch and add its sentinel to PATCH_SENTINELS in scripts/build-dsh-runtime.cjs, or drop it once upstream carries the fix (the directory-picker fix is upstream from 0.1.5, the console-hiding fix from 0.1.6-alpha.2).
  3. Empty dsh.runtimes. A descriptor left pointing at the previous archive still passes its digest check, so the old runtime would install under the new version's name.
  4. Rebuild, upload, and record all three targets as above.
  5. Re-run npm run dsh:runtime:verify-urls and npm run dsh:e2e.

Known gap: existing users keep the runtime they already installed. ensureRuntimeInstalled returns early whenever any runtime is present and never compares it with the pinned version, so only fresh installs pick up a new dsh. Selection among installed versions is also a lexical sort, which puts rc.6 ahead of rc.10.

Packaging

Build desktop installers

The CI workflow builds each installer on its own OS (macOS, Windows, Linux). Do the same locally: native modules are compiled for the host, and the dist:* scripts build the OpenClaw runtime for the requested target only.

Build machine prerequisites:

  • Node.js >=24.15.0 <25. .npmrc sets engine-strict, so npm refuses other versions.
  • npm >=11.17.0 <12, required for the dependency install-script policy.
  • git and pnpm, used to build the pinned OpenClaw runtime from the sibling ../openclaw checkout (override with OPENCLAW_SRC).
  • Windows: Git for Windows. The runtime build runs in its Git Bash. Without it, run npm run setup:mingit once to prepare a portable Git under resources/mingit.

Clean build:

# 1. Install dependencies exactly as pinned in package-lock.json.
#    npm ci removes node_modules itself, so do not delete it by hand and do not
#    run npm install first: that installs everything twice and may rewrite the
#    lock file. postinstall applies patches/. better-sqlite3 uses its bundled
#    N-API binaries in both Node.js and Electron.
npm ci

# 2. Remove stale build output. dist-electron is compiled by tsc, which keeps
#    files whose sources were deleted.
npx rimraf dist dist-electron

# 3. Build the installer. Output goes to release/.
npm run dist:mac            # macOS, host architecture
npm run dist:mac:x64
npm run dist:mac:arm64
npm run dist:mac:universal
npm run dist:win            # Windows x64
npm run dist:linux

vendor/ does not need to be deleted between builds. The OpenClaw runtime under vendor/openclaw-runtime/<target> is cached by pinned version and patch hash and is rebuilt automatically when either changes. Set OPENCLAW_FORCE_BUILD=1 to rebuild it after changing the build scripts themselves, and OPENCLAW_FORCE_PLUGIN_INSTALL=1 to re-download the bundled plugins. Optional plugins (POPO, NIM) are skipped with a warning when their registry is unreachable, so check the build log before shipping.

The dist:* scripts also run these steps for you:

  • openclaw:runtime:<target>: build, patch, bundle, and prune the OpenClaw runtime, shipped under Resources/cfmind.
  • Windows only, verify:installer-patches: re-applies patches/app-builder-lib+*.patch to node_modules and runs the installer contract tests. It fails when node_modules still carries an older version of the patch, for example after git pull without reinstalling; run npm ci and retry. Never ship an installer from a tree where it fails.
  • Windows only, setup:python-runtime: prepares a portable Python under resources/python-win, so end users do not need to install Python. cfmind, SKILLs, and python-win are shipped as a single win-resources.tar and extracted after install.

Windows channel and web-installer builds wrap the same dist:win chain:

# Full installer for a distribution channel
npm run dist:win:channel -- --keyfrom <channel> [--silent]

# Web installer: a small stub that downloads the package from your CDN
npm run dist:win:web -- --keyfrom <channel> [--silent] [--pkg-base-url <cdn-dir> | --pkg-url <package-url>]

Offline or private-source packaging can use:

  • LOBSTERAI_PORTABLE_PYTHON_ARCHIVE
  • LOBSTERAI_PORTABLE_PYTHON_URL
  • LOBSTERAI_WINDOWS_EMBED_PYTHON_VERSION
  • LOBSTERAI_WINDOWS_EMBED_PYTHON_URL
  • LOBSTERAI_WINDOWS_GET_PIP_URL
  • LOBSTERAI_PORTABLE_GIT_ARCHIVE
  • LOBSTERAI_PORTABLE_GIT_URL

Project Map

Path Purpose
src/main/main.ts Electron lifecycle, IPC registration, auth, logging, runtime startup, and service wiring
src/main/libs/openclawEngineManager.ts OpenClaw gateway process, runtime state, ports, logs, restart, and repair
src/main/libs/openclawConfigSync.ts Renders LobsterAI providers, models, agents, IM bindings, skills, MCP, and workspace instructions into OpenClaw config
src/main/libs/agentEngine/openclawRuntimeAdapter.ts Translates OpenClaw gateway events into Cowork stream events
src/main/coworkStore.ts Cowork sessions, messages, config, agents, memory metadata, and SQLite CRUD
src/renderer/components/cowork/ Main Cowork UI, prompt input, session detail, permissions, thinking/tool display, media, and voice input
src/renderer/components/agent/ Agent creation and settings UI
src/renderer/components/skills/ Skill management UI
src/renderer/components/mcp/ MCP server management UI
src/renderer/components/scheduledTasks/ Scheduled task list, form, detail, run history, and templates
src/renderer/services/i18n.ts Renderer i18n dictionary and t() helper
SKILLs/ Bundled LobsterAI skills

Security And Data

  • Renderer windows use context isolation, disabled Node integration, and sandboxing.
  • Renderer-to-main access goes through preload IPC APIs.
  • Sensitive tool actions are permission-gated and logged.
  • App data is stored locally in lobsterai.sqlite under Electron userData.
  • OpenClaw state, workspace memory, generated config, and gateway logs live under userData/openclaw.

Community & Support

Join the WeChat group for help, feedback, and release updates:

WeChat Community QR Code

Please use the repository issue templates for bugs and feature requests. For pull requests, include a short summary, linked issue when relevant, screenshots for UI changes, and notes for Electron-specific behavior such as IPC, storage, runtime, or windowing changes.

Star History

Star History Chart

License

MIT License

Built and maintained by NetEase Youdao.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

77 total
  1. LobsterAI 2026.9.232026.9.23Sep 23, 2026316 downloads

    What’s Changed * feat(decision-model): add experimental Jev decision model tool by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2753 * feat(cowork): stream live per-step turn progress and diff stats by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2749 * feat(cowork): unify activity step rendering with turn timing by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2756 * feat: cowork turn progress polish by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2750 * feat: update dsh runtime to 0.1.5 rc.3 by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2752 * fix(openclaw): raise Kimi K3 maxTokens and localize stream wrapper by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2748 * fix(openclaw): degrade gracefully on plugin errors while preserving basic chat functionality by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2754 * feat(subscription-trial): broaden campaign visibility by @Mind-Hand in https://github.com/netease-youdao/LobsterAI/pull/2751 * Release/2026.9.23 by @liuzhq1986 in https://github.com/netease-youdao/LobsterAI/pull/2757

  2. LobsterAI 2026.9.222026.9.22Sep 22, 2026114 downloads

    ## What's Changed * fix(im): restore native scheduled tasks and Feishu delivery by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2737 * fix(openclaw): recover Windows gateway exits and repair startup by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2729 * fix(openclaw): avoid startup failure on legacy identity conflicts by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2735 * fix(openclaw): migrate legacy weixin allowFrom files blocking gateway startup by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2734 * fix(openclaw): recover invalid generated model policies on upgrade by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2745 * fix(openclaw): stabilize skill config sync and timeout recovery by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2742 * fix(openclaw): backport native koffi Windows private directory patch by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2743 * fix: openclaw sqlite readonly result file by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2728 * feat(browserCredentials): req

  3. LobsterAI 2026.9.202026.9.20Sep 20, 2026167 downloads

    ## What’s Changed * feat: subagent session visibility by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2703 * feat(browser): add passkey/WebAuthn support for the in-app agent browser by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2723 * feat: scheduled task weixin delivery receipt by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2717 * fix(scheduled-task): preserve Weixin target casing and explain resend rejection by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2722 * fix: weixin qq qr login channel routing by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2718 * fix: openclaw workspace setup recovery by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2702 * fix(openclaw): harden startup recovery and Feishu secret routing by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2701 * fix(openclaw): initialize legacy v1 state schema before repair verification by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2700 * feat(subscription): add one-cent trial and low-credit purchase offers by @Mind-Hand in https://github.com/netea

  4. LobsterAI 2026.9.172026.9.17Sep 20, 202616 downloads

    ## What’s Changed * feat(openclaw): migrate shared state schema before startup repair by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2689 * feat(openclaw): add repair snapshot rollback and agent media migration handling by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2690 * fix(openclaw): safely recover stale gateway lock owners by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2698 * fix(openclaw): guard IM workloads and observe config recovery by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2694 * fix(openclaw): prevent browser DNS failures from restarting gateway by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2695 * fix(openclaw): restore native Feishu plugin loading by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2691 * fix(main): make app quit hide windows immediately and stop skill services faster by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2693 * fix(auth): bypass LobsterAI proxy credential cooldowns by @Mind-Hand in https://github.com/netease-youdao/LobsterAI/pull/2688 * Pr 2692 by @fisherdaddy in

  5. LobsterAI 2026.9.152026.9.15Sep 20, 202614 downloads

    ## What’s Changed * feat: openclaw compatibility repair by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2683 * feat(openclaw): migrate xAI auth credentials to canonical SQLite store by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2675 * fix(openclaw): recover scoped gateway startup compatibility failures by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2676 * fix(openclaw): recover invalid legacy dreaming state at startup by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2681 * fix(openclaw): preserve patched workspace runtime dependencies by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2685 * fix(openclaw): resolve plan-mode safety recovery race conditions by @fisherdaddy in https://github.com/netease-youdao/LobsterAI/pull/2674 * fix(openclaw): prevent heuristic output budget starvation by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2684 * fix(openclaw): preserve compaction summary format and audit facts by @btc69m979y-dotcom in https://github.com/netease-youdao/LobsterAI/pull/2678 * fix(openclaw): validate historical transcript r

Code frequency

additions and deletions
+123.4K-123.4KWeek of 2026-02-15: +123,425 linesWeek of 2026-02-15: -145 linesWeek of 2026-02-22: +25,890 linesWeek of 2026-02-22: -4,841 linesWeek of 2026-03-01: +72,094 linesWeek of 2026-03-01: -56,301 linesWeek of 2026-03-08: +12,644 linesWeek of 2026-03-08: -17,673 linesWeek of 2026-03-15: +29,508 linesWeek of 2026-03-15: -10,415 linesWeek of 2026-03-22: +30,460 linesWeek of 2026-03-22: -12,983 linesWeek of 2026-03-29: +26,440 linesWeek of 2026-03-29: -7,414 linesWeek of 2026-04-05: +22,552 linesWeek of 2026-04-05: -12,963 linesWeek of 2026-04-12: +15,458 linesWeek of 2026-04-12: -6,423 linesWeek of 2026-04-19: +10,780 linesWeek of 2026-04-19: -3,155 linesWeek of 2026-04-26: +27,816 linesWeek of 2026-04-26: -20,229 linesWeek of 2026-05-03: +19,320 linesWeek of 2026-05-03: -5,637 linesWeek of 2026-05-10: +21,983 linesWeek of 2026-05-10: -4,384 linesWeek of 2026-05-17: +37,586 linesWeek of 2026-05-17: -11,312 linesWeek of 2026-05-24: +20,383 linesWeek of 2026-05-24: -2,594 linesWeek of 2026-05-31: +24,753 linesWeek of 2026-05-31: -4,751 linesWeek of 2026-06-07: +19,412 linesWeek of 2026-06-07: -2,741 linesWeek of 2026-06-14: +11,346 linesWeek of 2026-06-14: -1,680 linesWeek of 2026-06-21: +26,831 linesWeek of 2026-06-21: -2,356 linesWeek of 2026-06-28: +31,930 linesWeek of 2026-06-28: -11,982 linesWeek of 2026-07-05: +30,711 linesWeek of 2026-07-05: -7,614 linesWeek of 2026-07-12: +36,199 linesWeek of 2026-07-12: -8,527 linesWeek of 2026-07-19: +41,088 linesWeek of 2026-07-19: -2,885 linesWeek of 2026-07-26: +55,661 linesWeek of 2026-07-26: -43,596 linesWeek of 2026-08-02: +18,653 linesWeek of 2026-08-02: -11,789 linesWeek of 2026-08-09: +15,007 linesWeek of 2026-08-09: -4,495 linesWeek of 2026-08-16: +24,616 linesWeek of 2026-08-16: -1,899 linesWeek of 2026-08-23: +22,473 linesWeek of 2026-08-23: -3,128 linesWeek of 2026-08-30: +35,487 linesWeek of 2026-08-30: -10,535 linesWeek of 2026-09-06: +26,211 linesWeek of 2026-09-06: -3,120 linesWeek of 2026-09-13: +35,766 linesWeek of 2026-09-13: -2,473 linesWeek of 2026-09-20: +19,193 linesWeek of 2026-09-20: -3,502 linesWeek of 2026-09-27: +0 linesWeek of 2026-09-27: -0 linesFeb 15, 2026Sep 27, 2026
+971.7K lines added, -303.5K removed over the last year.

Commits per week

last 52 weeks
1860Week of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 10 commitsWeek of 2026-02-22: 91 commitsWeek of 2026-03-01: 113 commitsWeek of 2026-03-08: 70 commitsWeek of 2026-03-15: 160 commitsWeek of 2026-03-22: 184 commitsWeek of 2026-03-29: 186 commitsWeek of 2026-04-05: 99 commitsWeek of 2026-04-12: 95 commitsWeek of 2026-04-19: 104 commitsWeek of 2026-04-26: 70 commitsWeek of 2026-05-03: 90 commitsWeek of 2026-05-10: 105 commitsWeek of 2026-05-17: 75 commitsWeek of 2026-05-24: 78 commitsWeek of 2026-05-31: 69 commitsWeek of 2026-06-07: 77 commitsWeek of 2026-06-14: 36 commitsWeek of 2026-06-21: 69 commitsWeek of 2026-06-28: 82 commitsWeek of 2026-07-05: 98 commitsWeek of 2026-07-12: 56 commitsWeek of 2026-07-19: 37 commitsWeek of 2026-07-26: 44 commitsWeek of 2026-08-02: 45 commitsWeek of 2026-08-09: 52 commitsWeek of 2026-08-16: 34 commitsWeek of 2026-08-23: 76 commitsWeek of 2026-08-30: 63 commitsWeek of 2026-09-06: 53 commitsWeek of 2026-09-13: 70 commitsWeek of 2026-09-20: 39 commitsWeek of 2026-09-27: 0 commitsOct 4, 2025Sep 27, 2026
2.5K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 7 commitsSun 1:00 — 2 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 1 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 2 commitsSun 10:00 — 2 commitsSun 11:00 — 4 commitsSun 12:00 — 4 commitsSun 13:00 — 1 commitsSun 14:00 — 3 commitsSun 15:00 — 6 commitsSun 16:00 — 13 commitsSun 17:00 — 6 commitsSun 18:00 — 5 commitsSun 19:00 — 8 commitsSun 20:00 — 9 commitsSun 21:00 — 4 commitsSun 22:00 — 2 commitsSun 23:00 — 3 commitsMon 0:00 — 7 commitsMon 1:00 — 0 commitsMon 2:00 — 2 commitsMon 3:00 — 3 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 5 commitsMon 10:00 — 13 commitsMon 11:00 — 25 commitsMon 12:00 — 18 commitsMon 13:00 — 8 commitsMon 14:00 — 37 commitsMon 15:00 — 45 commitsMon 16:00 — 53 commitsMon 17:00 — 49 commitsMon 18:00 — 30 commitsMon 19:00 — 33 commitsMon 20:00 — 34 commitsMon 21:00 — 28 commitsMon 22:00 — 16 commitsMon 23:00 — 16 commitsTue 0:00 — 4 commitsTue 1:00 — 8 commitsTue 2:00 — 3 commitsTue 3:00 — 1 commitsTue 4:00 — 1 commitsTue 5:00 — 0 commitsTue 6:00 — 1 commitsTue 7:00 — 0 commitsTue 8:00 — 2 commitsTue 9:00 — 3 commitsTue 10:00 — 15 commitsTue 11:00 — 32 commitsTue 12:00 — 22 commitsTue 13:00 — 18 commitsTue 14:00 — 54 commitsTue 15:00 — 52 commitsTue 16:00 — 64 commitsTue 17:00 — 60 commitsTue 18:00 — 61 commitsTue 19:00 — 36 commitsTue 20:00 — 28 commitsTue 21:00 — 17 commitsTue 22:00 — 10 commitsTue 23:00 — 7 commitsWed 0:00 — 2 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 2 commitsWed 10:00 — 22 commitsWed 11:00 — 35 commitsWed 12:00 — 27 commitsWed 13:00 — 17 commitsWed 14:00 — 37 commitsWed 15:00 — 49 commitsWed 16:00 — 58 commitsWed 17:00 — 57 commitsWed 18:00 — 51 commitsWed 19:00 — 39 commitsWed 20:00 — 31 commitsWed 21:00 — 25 commitsWed 22:00 — 8 commitsWed 23:00 — 7 commitsThu 0:00 — 6 commitsThu 1:00 — 2 commitsThu 2:00 — 1 commitsThu 3:00 — 0 commitsThu 4:00 — 2 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 0 commitsThu 9:00 — 7 commitsThu 10:00 — 31 commitsThu 11:00 — 46 commitsThu 12:00 — 22 commitsThu 13:00 — 13 commitsThu 14:00 — 37 commitsThu 15:00 — 50 commitsThu 16:00 — 51 commitsThu 17:00 — 49 commitsThu 18:00 — 47 commitsThu 19:00 — 31 commitsThu 20:00 — 43 commitsThu 21:00 — 16 commitsThu 22:00 — 15 commitsThu 23:00 — 11 commitsFri 0:00 — 11 commitsFri 1:00 — 2 commitsFri 2:00 — 1 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 1 commitsFri 9:00 — 1 commitsFri 10:00 — 40 commitsFri 11:00 — 35 commitsFri 12:00 — 30 commitsFri 13:00 — 13 commitsFri 14:00 — 44 commitsFri 15:00 — 41 commitsFri 16:00 — 53 commitsFri 17:00 — 71 commitsFri 18:00 — 48 commitsFri 19:00 — 24 commitsFri 20:00 — 19 commitsFri 21:00 — 13 commitsFri 22:00 — 11 commitsFri 23:00 — 11 commitsSat 0:00 — 6 commitsSat 1:00 — 1 commitsSat 2:00 — 1 commitsSat 3:00 — 1 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 4 commitsSat 11:00 — 7 commitsSat 12:00 — 5 commitsSat 13:00 — 8 commitsSat 14:00 — 11 commitsSat 15:00 — 4 commitsSat 16:00 — 9 commitsSat 17:00 — 6 commitsSat 18:00 — 6 commitsSat 19:00 — 15 commitsSat 20:00 — 6 commitsSat 21:00 — 7 commitsSat 22:00 — 8 commitsSat 23:00 — 6 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Feb 20, 2026daily#8+162
Feb 19, 2026daily#9+192
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    251.2K stars · Python

  • react/react

    The library for web and native user interfaces.

    250.9K stars · JavaScript

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript