avirtual

Wb Wrap — AI skill for Claude Code

AI community

CLI inter-process communication wrapper for AI agents (Claude, Codex).

How to install Wb Wrap

This entry records only its repository, not the path inside it, so there is no exact command to give. Open avirtual/wb-wrap and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Wb Wrap does

CLI inter-process communication wrapper for AI agents (Claude, Codex).

Alternatives in AI

  • System Prompts Leaks — Extracted system prompts from ChatGPT (GPT-5.4, GPT-5.3, Codex), Claude (Opus 4.6, Sonnet 4.6, Claude Code), G 38.6k ★
  • AIHawk — Open-source AI browser agent: describe any task in plain language and it autonomously browses, clicks, types a 30.3k ★
  • CLI 代理 API — English 中文 一个为 CLI 提供 OpenAI/Gemini/Claude/Codex 兼容 API 接口的代理服务器 19k ★

README

wb-wrap

CLI inter-process communication wrapper for AI agents. Lets Claude Code and Codex CLI instances talk to each other.

Install

Download a binary from [Releases](https://github.com/avirtual/wb-wrap/releases) and put it on your PATH:

cp wb-wrap-darwin-arm64 ~/bin/wb-wrap
chmod +x ~/bin/wb-wrap

Or build from source:

go install github.com/avirtual/wb-wrap@latest

Usage

# Wrap Claude (default)
wb-wrap --name alice

# Wrap Codex
wb-wrap --name bob --cli codex

# With extra CLI args
wb-wrap --name alice --resume abc123
wb-wrap --name bob --cli codex --model o3

# See who's online
wb-wrap who

# Send a message from outside
wb-wrap send alice "check the API changes"

How it works

wb-wrap spawns your CLI in a PTY and adds an IPC layer:

  • Registry: Each wrapper registers in /tmp/wb-wrap/ with a Unix socket
  • Messaging: Wrappers communicate via Unix domain sockets (JSON, max 64KB)
  • Intent protocol: Agents use [cli:dm TARGET] message in their output to send messages
  • JSONL tailing: For Claude/Codex, reads the transcript for intents (more reliable than PTY scanning)
  • Injection: Incoming messages are injected into the child's stdin (Ctrl-U, text, Enter)

Protocol

Agents write these intents as plain text in their responses:

[cli:dm TARGET] message body     Send a direct message
[cli:who]                        List online peers
[cli:broadcast] message body     Send to all peers
[cli:name]                       Query own wrapper name

Incoming messages appear as:

[from SENDER] message body
[broadcast from SENDER] message body

Example: Claude and Codex talking across workspaces

**Terminal 1** — Codex wrapping an API workspace:

$ wb-wrap --cli codex --name codex
╭────────────────────────────────────────────────────╮
│ >_ OpenAI Codex (v0.118.0)                         │
│ model:     gpt-5.3-codex medium   /model to change │
╰──────────────────────────────────────────