
Security News
Lovable’s OJ Rewrites Vite’s Dev Server in Rust as AI Lowers the Cost of Forking Open Source
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.
@mearl/cloud-connector
Advanced tools
本地连接器,用于把云端 Agent 的操作转发到本地 native-host。普通云模式使用 WebSocket; Qoder Cloud Agent 使用官方 Session API、SSE 事件流和 Client-Side 自定义工具。
npm install -g @mearl/cloud-connector
# 或
pnpm add -g @mearl/cloud-connector
连接器同时支持两种生命周期管理方式,二者通过同一份共享注册表互通(见运行时文件),不会对同一个 server-url 重复建连:
start / stop 等子命令把连接器作为后台守护进程管理,拥有独立日志文件,便于在无插件面板的场景(如远程机器、排查问题)下使用。mearl-cloud-connector <server-url> [options] # 前台运行
mearl-cloud-connector <command> [server-url|pid] [options] # 管理后台守护进程
参数:
server-url —— 连接端点,支持原有 ws://、wss://,以及 setup 生成的
qoder://pair/<code>?created=<timestamp>。qoder:// 是不含凭证的配对标识,不是网络
地址,也不会被转换成 WebSocket URL。子命令:
start <server-url> —— 后台启动守护进程(幂等:已有存活连接器则复用)stop <server-url|pid> —— 按端点或 list / status 展示的 PID 停止后台连接器;
PID 必须与当前连接器注册记录匹配,实例已被替换时不会停止新实例stop --all —— 停止所有后台连接器restart <server-url> —— 重启指定连接器status [server-url] —— 查看连接器健康状态、最近心跳及重试信息;省略
server-url 时汇总全部list —— 列出所有正在运行的连接器logs <server-url> —— 打印某连接器日志末尾选项:
--foreground / -f —— 前台运行(不守护化)--heartbeat <seconds> —— 心跳间隔(默认 30 秒)--reconnect <ms> —— 重连间隔(默认 5000 毫秒)--max-reconnect <n> —— 最大重连次数,-1 表示无限(默认 -1)--connector-id <id> —— 覆盖本机稳定的 connector ID--name <name> —— 设置便于识别的 connector 名称(默认主机名)--fail-fast —— 首次连接失败即退出(供 native-host 探测启动结果)示例:
# 后台启动一个自管理连接器,拥有独立日志文件(推荐)
mearl-cloud-connector start "wss://cloud.example.com/ws?token=xxx" --name work-mac
# Qoder 配对模式;地址由 npx @mearl/setup --qoder-cloud --yes 生成
mearl-cloud-connector start "qoder://pair/pairing-code-1234?created=1786723200000"
# 前台运行,仅用于排障或交给 systemd / PM2 等外部进程管理器
mearl-cloud-connector "ws://localhost:8080/ws?token=xxx"
# 查看状态 / 列表 / 日志
mearl-cloud-connector status
mearl-cloud-connector list
mearl-cloud-connector logs "wss://cloud.example.com/ws?token=xxx"
# 停止
mearl-cloud-connector stop "wss://cloud.example.com/ws?token=xxx"
mearl-cloud-connector stop 12345
mearl-cloud-connector stop --all
# 自定义心跳和重连配置
mearl-cloud-connector start "ws://localhost:8080/ws?token=xxx" --heartbeat 60 --max-reconnect 10
status 将连接器标记为 starting、healthy、reconnecting、degraded、failed
或 unknown。其中 healthy 表示进程存活、传输已连接且 WebSocket 最近收到过有效心跳;
旧版本创建、尚未包含连接状态字段的运行记录显示为 unknown,重启该连接器后即可补齐。
输出中的 token 会被隐藏。
start 会在连接成功后返回,后台进程继续运行。Qoder 配对时请紧接着提交 setup 输出的
pair 工具调用;如果配对工具调用已经结束、取消或过期,需要重新生成配对 URL,旧 URL
不能重复使用。
import { CloudConnector } from '@mearl/cloud-connector';
const connector = new CloudConnector({
serverUrl: 'wss://cloud.example.com/ws?token=xxx',
connectorName: 'work-mac',
heartbeatInterval: 30,
reconnectInterval: 5000,
maxReconnectAttempts: -1,
onConnected: url => console.log('connected to', url),
});
connector.connect();
// 优雅关闭
process.on('SIGINT', () => {
connector.disconnect();
process.exit(0);
});
连接器首次运行时会生成稳定的 connector ID,并保存到
~/.mearl/cloud-connector-identity.json。名称默认取主机名,可通过 --name 或
MEARL_CONNECTOR_NAME 设置;ID 可通过 --connector-id 或
MEARL_CONNECTOR_ID 设置。相同 ID 的新连接会替换旧连接,适合进程重启和网络重连。
每个连接器实例在 ~/.mearl/connectors/ 下按 server-url 哈希生成一对文件:
<hash>.json —— 连接记录(含身份、进程、连接状态、最近心跳和重试信息)。daemon
manager 在拉起子进程后立即写入 starting 占位,连接器进程随后持续更新自己的状态;
删除记录时会核对 pid,避免退出中的旧进程删除新实例记录。崩溃残留会被读取方按 pid
存活性自动清理。<hash>.log —— 守护进程日志(logs 子命令读取,或 tail -f 跟踪);超过 5MB 会在下次启动时滚动为 <hash>.log.1。native-host 与守护进程 CLI 都通过这套共享路径(由 @mearl/daemon-core 派生)读取注册表,因此一方启动的连接器另一方也能发现、复用或停止。
前台运行(含 native-host 托管)时日志输出到 stdout/stderr,不写独立日志文件;只有守护进程模式才落盘到
<hash>.log。
Qoder 配对还要求在本地提供 QODER_PERSONAL_ACCESS_TOKEN。连接器依次读取当前进程环境、
MEARL_ENV_FILE、~/.mearl/.env;macOS 还会读取当前用户钥匙串中 service 为
com.mearl.qoder.pat 的通用密码。PAT 只用于访问 Qoder Cloud Session API,连接器不会把它
写入 qoder:// URL、进程参数、注册表或日志。配对完成后,连接器
保持 SSE 连接,收到 agent.custom_tool_use 后调用现有本地 Mearl action,并以
user.custom_tool_result 回传。截图会优先作为 base64 图片内容块回传;若 Cloud API 拒绝
图片块,则退回完整 JSON 文本,避免丢失数据。
macOS 可在本地终端交互式写入钥匙串,PAT 不会进入 shell 历史:
security add-generic-password -U -a "$USER" -s com.mearl.qoder.pat -w
安装并初始化本地 Mearl 环境
npx @mearl/setup
setup 会同步安装 @mearl/native-host 与 @mearl/client,并完成 Native Messaging 初始化。
使用本项目的 monorepo 构建产物时,仍需手动初始化:
mearl-native-host --init
确保 Chrome 浏览器正在运行,且:
chrome://inspect/#remote-debugging 启用远程调试(Chrome 145+)云端 Agent
↓
@mearl/client
↓
@mearl/cloud-server
↓ (WebSocket)
@mearl/cloud-connector (本进程)
↓ (Unix Socket)
@mearl/native-host
↓
Chrome Extension / CDP
Qoder 配对信息由 mearl-cloud-server start 统一生成;配对后的运行时转发不经过常驻
cloud-server 服务:
Qoder Cloud Agent(mearl Client-Side 自定义工具)
↓ agent.custom_tool_use / user.custom_tool_result
Qoder Cloud Session API + SSE
↓
@mearl/cloud-connector(本进程)
↓ (Unix Socket)
@mearl/native-host
↓
Chrome Extension / CDP
detached 方式启动,会在插件重载/更新后继续存活;自管理时由 start/stop 子命令掌控生命周期。--foreground 让其在前台运行并由管理器负责守护重启。format: "jpeg" 和较低的 quality 重试。FAQs
Cloud connector for Mearl — bridges cloud agents to a local native-host
The npm package @mearl/cloud-connector receives a total of 278 weekly downloads. As such, @mearl/cloud-connector popularity was classified as not popular.
We found that @mearl/cloud-connector demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.

Security News
Lovable’s OJ rewrites Vite’s dev server in Rust, reducing memory use and preview times as AI lowers the cost of open source reimplementation.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.