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

@stdiobus/workers-registry

v1.5.6

Published

Worker implementations for stdio Bus kernel - ACP, MCP, and protocol bridges

Readme

stdio Bus – Workers Registry

npm Downloads ACP MCP stdioBus Node TypeScript Workers Tests License

Protocol workers for stdio Bus — a high-performance message routing kernel for AI agent protocols. This package provides ready-to-use ACP and MCP workers that run as child processes, communicating via NDJSON over stdin/stdout.


Install

npm install @stdiobus/workers-registry

For embedded mode (no Docker or binary needed):

npm install @stdiobus/node @stdiobus/workers-registry

Requires Node.js ≥ 20.0.0.


Architecture

graph TB
    %% ── Clients ──
    App["🖥️ Client Application"]
    IDE["🧩 IDE / MCP Client"]

    %% ── Kernel ──
    Kernel["⚡ stdio Bus kernel<br/><i>routing · session affinity · backpressure</i>"]

    %% ── Workers ──
    Registry["📋 ACP Registry<br/><code>acp-registry</code>"]
    ACP["🤖 ACP Worker<br/><code>acp-worker</code>"]
    OpenAI["🧠 OpenAI Agent<br/><code>openai-agent</code>"]
    Echo["🔁 Echo Worker<br/><code>echo-worker</code>"]
    Proxy["🔌 MCP-to-ACP Proxy<br/><code>mcp-to-acp-proxy</code>"]
    MCP["🛠️ MCP Echo Server<br/><code>mcp-echo-server</code>"]

    %% ── External agents ──
    Claude["Claude"]
    Goose["Goose"]
    Cline["Cline"]
    Copilot["GitHub Copilot"]
    Others["..."]

    %% ── External services ──
    OpenAIAPI["OpenAI API"]
    MCPServers["MCP Servers"]

    %% ── Connections ──
    App -->|"TCP / Unix Socket / Embedded"| Kernel
    IDE -->|"MCP Protocol (stdio)"| Proxy

    Kernel -->|"NDJSON stdin/stdout"| Registry
    Kernel -->|"NDJSON stdin/stdout"| ACP
    Kernel -->|"NDJSON stdin/stdout"| OpenAI
    Kernel -->|"NDJSON stdin/stdout"| Echo
    Proxy -->|"ACP via TCP"| Kernel

    Registry -->|"Spawns & routes"| Claude
    Registry -->|"Spawns & routes"| Goose
    Registry -->|"Spawns & routes"| Cline
    Registry -->|"Spawns & routes"| Copilot
    Registry -->|"Spawns & routes"| Others

    OpenAI -->|"HTTP/SSE"| OpenAIAPI
    ACP -->|"MCP Protocol"| MCPServers

    %% ── Styles ──
    classDef kernel fill:#1a1a2e,stroke:#4a90e2,stroke-width:3px,color:#fff,font-weight:bold
    classDef worker fill:#16213e,stroke:#50c878,stroke-width:2px,color:#fff
    classDef proxy fill:#16213e,stroke:#e67e22,stroke-width:2px,color:#fff
    classDef agent fill:#0f3460,stroke:#9b59b6,stroke-width:1px,color:#ddd
    classDef client fill:#1a1a2e,stroke:#f39c12,stroke-width:2px,color:#fff
    classDef external fill:#1a1a2e,stroke:#95a5a6,stroke-width:1px,color:#bbb,font-style:italic

    class Kernel kernel
    class Registry,ACP,OpenAI,Echo,MCP worker
    class Proxy proxy
    class Claude,Goose,Cline,Copilot,Others agent
    class App,IDE client
    class OpenAIAPI,MCPServers external

Workers communicate with the kernel via NDJSON (JSON-RPC 2.0, one message per line) over stdin/stdout. All logging goes to stderr. The kernel handles routing, session affinity, backpressure, and worker lifecycle.


Quick Start

Embedded

No Docker, no binary, no TCP. The bus runs inside your Node.js process.

import { StdioBus } from '@stdiobus/node';

const bus = new StdioBus({
  config: {
    pools: [{
      id: 'openai-agent',
      command: 'npx',
      args: ['@stdiobus/workers-registry', 'openai-agent'],
      instances: 1,
    }],
  },
});

await bus.start();

const result = await bus.request('initialize', {
  protocolVersion: 1,
  clientInfo: { name: 'my-app', version: '1.0.0' },
});

console.log(result.agentInfo.name); // 'openai-agent'
await bus.stop();

Universal Launcher

Run any worker directly:

npx @stdiobus/workers-registry echo-worker
npx @stdiobus/workers-registry acp-registry
npx @stdiobus/workers-registry openai-agent

Docker / TCP Mode

docker run -p 9000:9000 \
  -v $(pwd)/config.json:/config.json:ro \
  stdiobus/stdiobus:latest \
  --config /config.json --tcp 0.0.0.0:9000
echo '{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"clientInfo":{"name":"test","version":"1.0"}}}' \
  | nc localhost 9000

Workers

Launchable Workers

| Worker | Description | Protocol | |--------|-------------|----------| | acp-registry | Routes to any ACP Registry agent (Claude, Goose, Cline, Copilot, etc.) | ACP | | acp-worker | Standalone ACP agent for SDK/protocol testing | ACP | | openai-agent | Bridges ACP to any OpenAI-compatible Chat Completions endpoint | ACP | | mcp-to-acp-proxy | Bridges MCP clients (IDEs) to ACP agents via stdio Bus | MCP → ACP | | echo-worker | Echoes messages back — for testing and protocol learning | NDJSON | | mcp-echo-server | MCP server with echo/reverse/uppercase tools — for testing | MCP |

All launchable via: npx @stdiobus/workers-registry <worker-name>

Internal Modules

| Module | Description | Used by | |--------|-------------|---------| | registry-launcher | Agent discovery, routing, OAuth, runtime management | acp-registry |

Exported for programmatic use but not a direct launch target.


Configuration

Workers are configured via stdio Bus pool configs:

{
  "pools": [
    {
      "id": "acp-registry",
      "command": "npx",
      "args": ["@stdiobus/workers-registry", "acp-registry"],
      "instances": 1
    }
  ]
}

Swap "acp-registry" for any worker name. Scale with "instances": N.

Worker-Specific Configuration

| Worker | Requirements | |--------|-------------| | acp-registry | api-keys.json in working directory (or custom config with apiKeysPath) | | openai-agent | OPENAI_API_KEY env var or OAuth login | | mcp-to-acp-proxy | ACP_HOST, ACP_PORT, AGENT_ID env vars |

Limits (optional)

{
  "limits": {
    "max_input_buffer": 1048576,
    "max_output_queue": 4194304,
    "max_restarts": 5,
    "restart_window_sec": 60,
    "drain_timeout_sec": 30,
    "backpressure_timeout_sec": 60
  }
}

See stdio Bus documentation for full configuration reference.


Package API

Exports

// Default export — ACP Worker
import worker from '@stdiobus/workers-registry';

// Individual workers
import acpWorker from '@stdiobus/workers-registry/workers/acp-worker';
import openaiAgent from '@stdiobus/workers-registry/workers/openai-agent';
import echoWorker from '@stdiobus/workers-registry/workers/echo-worker';
import mcpEchoServer from '@stdiobus/workers-registry/workers/mcp-echo-server';
import mcpToAcpProxy from '@stdiobus/workers-registry/workers/mcp-to-acp-proxy';

// Registry Launcher (programmatic access)
import registryLauncher from '@stdiobus/workers-registry/workers/registry-launcher';
import { resolveRegistry } from '@stdiobus/workers-registry/workers/registry-launcher/registry';
import { RuntimeManager } from '@stdiobus/workers-registry/workers/registry-launcher/runtime';

// Workers metadata
import { workers } from '@stdiobus/workers-registry/workers';

TypeScript

Full type definitions included. Strict mode.

import type { ACPAgent } from '@stdiobus/workers-registry/workers/acp-worker';
import type { MCPServer } from '@stdiobus/workers-registry/workers/mcp-echo-server';

IDE Integration (MCP Client)

Connect your IDE to ACP agents via the MCP-to-ACP proxy:

{
  "mcpServers": {
    "stdio-bus-acp": {
      "command": "npx",
      "args": ["@stdiobus/workers-registry", "mcp-to-acp-proxy"],
      "env": {
        "ACP_HOST": "localhost",
        "ACP_PORT": "9000",
        "AGENT_ID": "claude-acp"
      }
    }
  }
}

Requires acp-registry running on the stdio Bus side to resolve AGENT_ID to real agents.


Authentication

Registry Launcher supports two authentication methods:

API Keys

Create api-keys.json in your working directory:

{
  "claude-acp": { "apiKey": "sk-ant-..." },
  "openai-agent": { "apiKey": "sk-..." }
}

OAuth 2.1 with PKCE

npx @stdiobus/workers-registry acp-registry --login github
npx @stdiobus/workers-registry acp-registry --auth-status
npx @stdiobus/workers-registry acp-registry --logout

Supported OAuth providers: GitHub, Google, Azure AD, AWS Cognito, OIDC.

OpenAI and Anthropic use API keys, not OAuth. Configure them via api-keys.json or --setup.

Supported providers: GitHub, Google, Azure AD, AWS Cognito, OIDC.

OAuth takes precedence when available, with automatic fallback to API keys. For headless/CI environments, use API keys or environment variables.

See OAuth documentation for details.


Deployment Modes

| Mode | Package | Infrastructure | Use case | |------|---------|---------------|----------| | Embedded | @stdiobus/node + this package | None | Applications, scripts, testing | | Docker | This package (mounted) | stdiobus/stdiobus container | Production, multi-worker setups | | Binary | This package (on disk) | stdio_bus binary | Custom deployments |

All modes use the same worker configs and the same npx @stdiobus/workers-registry <worker> command.


Troubleshooting

| Problem | Solution | |---------|----------| | node: command not found or version < 20 | Install Node.js ≥ 20 (nvm install 20) | | Worker crashes on start | Check stderr output; verify config JSON is valid | | acp-registry fails to route | Ensure api-keys.json exists with valid keys | | Connection refused on port 9000 | Verify stdio Bus kernel is running (docker ps) | | MCP proxy can't reach agent | Check ACP_HOST/ACP_PORT env vars point to running kernel |


Documentation


Contributing

git clone https://github.com/stdiobus/workers-registry
cd workers-registry
npm install
npm run build
npm test

See CONTRIBUTING.md for guidelines.


License

Apache License 2.0 — Copyright (c) 2025–present Raman Marozau, Target Insight Function.

See LICENSE for details.