npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ohmyvibe

v0.1.5

Published

VibeCoding daemon + web console MVP for orchestrating Codex sessions

Readme

OhMyVibe

这是一个 VibeCoding 控制台:

  • daemon -> control server <- browser 架构(daemon 主动连接管理端)
  • 每个会话独立启动一个 codex app-server 子进程
  • daemon 统一管理多会话、消息发送、中断、状态同步
  • 额外提供一个标准 ACP bridge 入口,方便后续给编辑器或其他 ACP client 接入
  • 应用侧 session 本地持久化到 data/sessions.json
  • 支持从 Codex 历史 ~/.codex/sessions 恢复会话,并绑定到原始 Codex thread
  • Web 控制台为独立 React + shadcn 风格项目,浏览器只连接管理端

为什么这样做

当前官方能力里,Codex CLI 暴露的是 app-server 自动化接口,而不是原生 ACP agent。因此这个 MVP 采用两层桥接:

  1. 南向:daemon 通过 codex app-server --listen stdio:// 控制 Codex
  2. 北向:daemon 自己暴露 ACP 兼容 agent,供外部 ACP client 使用

这能保证现在就能正确接入 Codex,同时不把上层协议绑死在 Codex 私有接口上。

运行

要求:

  • Node.js 22+
  • 本机已安装并可运行 codex
  • codex 已完成登录
  1. 启动 Web 管理端(API + 页面):
npm install
npm --prefix web install
npm --prefix web run build
npm run web:server

默认监听 http://localhost:3310 默认读取 web/.env

  1. 在被控机器启动 daemon,并主动连接管理端:
npm run daemon

daemon 不再暴露本地 HTTP API,浏览器也不应直接连接 daemon。 默认读取根目录 .env

可选环境变量:

  • DAEMON_ID:固定 daemon 标识
  • DAEMON_NAME:展示名称
  1. 浏览器访问管理端页面:
http://your-control-host:3310

开发模式(前端热更新):

npm run web:dev

启动 ACP bridge:

npm run acp

使用示例

示例 1:本机快速跑通

先启动控制端:

git clone https://github.com/gaoyu06/OhMyVibe.git
cd OhMyVibe
npm install
npm --prefix web install
npm --prefix web run build
npm run web:server

再在另一台机器或另一个终端启动 daemon:

cp .env.example .env

.env:

MANAGEMENT_SERVER_URL=http://localhost:3310
DAEMON_NAME=ohmyvibe-local

启动:

npm run daemon

浏览器访问:

http://localhost:3310

示例 2:通过 npm 全局安装 daemon

如果你只想安装被控端 daemon,可以直接安装 npm 包:

npm install -g ohmyvibe

然后直接连接到你的控制端:

ohmyvibe --management-server-url http://your-control-host:3310

也可以显式指定 daemon 名称或 id:

ohmyvibe daemon ^
  --management-server-url http://your-control-host:3310 ^
  --daemon-name office-win ^
  --daemon-id office-win-01

说明:

  • 当前 npm 包主要提供 daemon / acp CLI
  • Web 控制服务端目前仍建议直接从仓库部署

服务端部署示例

示例 1:在 Linux 服务器部署控制端

git clone https://github.com/gaoyu06/OhMyVibe.git
cd OhMyVibe
npm install
npm --prefix web install
cp web/.env.example web/.env
npm --prefix web run build
npm run web:server

web/.env:

PORT=3310
VITE_CONTROL_SERVER_URL=https://your-domain.example.com

反向代理到 3310 端口后,浏览器即可访问控制台,远端 daemon 使用:

MANAGEMENT_SERVER_URL=https://your-domain.example.com

示例 2:用 PM2 托管控制端

pm2 start "npm run web:server" --name ohmyvibe-control
pm2 save

示例 3:发布前验证 npm 包

npm run build:daemon
npm run pack:dry-run

全局安装 daemon

如果你要把 daemon 作为全局命令安装,当前包已经支持:

npm install -g ohmyvibe

然后直接启动:

ohmyvibe --management-server-url http://localhost:3310

也可以显式指定 daemon 名称或 id:

ohmyvibe daemon \
  --management-server-url http://localhost:3310 \
  --daemon-name ohmyvibe-local \
  --daemon-id local-1

如果仍然想走环境变量,也支持:

  • MANAGEMENT_SERVER_URL
  • DAEMON_ID
  • DAEMON_NAME

发布前可先验证打包内容:

npm run build:daemon
npm run pack:dry-run

正式发布:

npm publish --access public

现在支持的能力

  • 创建多个独立 Codex 会话
  • daemon 重启后恢复应用内 session 列表与 transcript
  • 给指定会话发送消息
  • 流式接收 assistant 文本增量
  • item/*turn/* 事件维护实时 transcript
  • 中断运行中的 turn
  • 关闭会话
  • 从 Codex 历史会话列表恢复,并继续在同一 threadId 上对话
  • 使用独立前端从其他设备远程管理 daemon
  • daemon 主动连接管理端,浏览器不需要直连 daemon

后续建议

  • turn/interrupt、审批、文件 diff、命令执行输出做成更细粒度 UI
  • 将 ACP session 和 web session 统一到同一后端存储
  • codex app-server 请求/通知补完整类型约束

参考文档

  • OpenAI Codex App Server: https://developers.openai.com/codex/app-server
  • OpenAI Codex CLI repo: https://github.com/openai/codex
  • ACP 协议主页: https://agentclientprotocol.com
  • ACP TypeScript SDK: https://www.npmjs.com/package/@agentclientprotocol/sdk