Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Gptqueue

FreeNot checked

Enables AI agents to discover each other and exchange typed messages through a Redis-backed queue via MCP tool calls, with support for registration, heartbeat,

GitHubEmbed

About

Enables AI agents to discover each other and exchange typed messages through a Redis-backed queue via MCP tool calls, with support for registration, heartbeat, and queue management.

README

gptqueue logo

gptqueue

CI

Inter-agent message queue over MCP + Redis.

gptqueue lets AI agents (Claude Code, Codex, Gemini CLI, or any MCP-compatible client) discover each other and exchange messages through a shared Redis-backed queue. Each agent registers with a name and description, then sends and receives typed messages via MCP tool calls.

Architecture

┌─────────────┐       MCP (stdio)       ┌──────────────┐
│  AI Agent A  │◄──────────────────────►│              │
└─────────────┘                         │  gptqueue    │       ┌───────┐
                                        │  MCP server  │◄─────►│ Redis │
┌─────────────┐       MCP (stdio)       │              │       └───────┘
│  AI Agent B  │◄──────────────────────►│              │
└─────────────┘                         └──────────────┘

Each agent gets its own bounded inbox queue in Redis. Messages are delivered atomically via a Lua script that enforces queue size limits. Agents publish heartbeats so others can see who is online.

Components

Component Description
MCP server (src/mcp-server/) Stdio-based MCP server exposing 6 tools for agent communication
PTY wrapper (src/pty-wrapper/) Wraps a CLI process in a PTY, watches Redis for incoming messages, and injects notifications when the process is idle
Hook script (scripts/check-queue.sh) Claude Code hook for startup context injection and stop-gate (blocks exit if inbox has unread messages)

MCP Tools

Tool Description
register_agent Register with a name, role (publisher/consumer/both), and description
send_message Send a typed message (task/result/status/error/ping) to another agent's inbox. Supports optional metadata object and in_reply_to message ID for threading
receive_message Blocking pop from your inbox (default timeout: 5s)
list_agents Discover all registered agents with online/offline status
get_queue_status Check queue depth and capacity for one or all agents
unregister_agent Unregister and clean up queue data

Prerequisites

  • Node.js >= 18
  • Redis running locally (default redis://127.0.0.1:6379)

Install

git clone https://github.com/rahulrajaram/gptqueue.git
cd gptqueue
npm install   # builds automatically via postinstall

Configuration

Claude Code

Add to ~/.claude.json under mcpServers:

{
  "gptqueue": {
    "type": "stdio",
    "command": "node",
    "args": ["/path/to/gptqueue/dist/mcp-server/index.js"]
  }
}

Optionally add the hook script to ~/.claude/settings.json for automatic startup context and exit gating:

{
  "hooks": {
    "SessionStart": [{
      "matcher": "",
      "hooks": [{
        "type": "command",
        "command": "/path/to/gptqueue/scripts/check-queue.sh --startup"
      }]
    }],
    "Stop": [{
      "matcher": "",
      "hooks": [{
        "type": "command",
        "command": "/path/to/gptqueue/scripts/check-queue.sh --stop"
      }]
    }]
  }
}

Any MCP client

The server speaks stdio MCP. Point your client at:

node /path/to/gptqueue/dist/mcp-server/index.js [agent-name]

Or set GPTQ_AGENT_NAME in the environment.

Environment variables

Variable Default Description
REDIS_URL redis://127.0.0.1:6379 Redis connection URL (MCP server and PTY wrapper)
GPTQ_AGENT_NAME (none) Pre-register with this agent name on startup
GPTQ_QUEUE_BOUND 10 Max messages per agent inbox
REDIS_HOST 127.0.0.1 Redis host (hook script only)
REDIS_PORT 6379 Redis port (hook script only)

PTY wrapper

The PTY wrapper lets you run any CLI (e.g. claude, codex) inside a PTY that monitors Redis for incoming messages and injects prompts when the process goes idle:

gptqueue-pty --agent alice --cmd claude

How it works

  1. Registration -- An agent calls register_agent with a name, role, and description. This writes to a Redis hash (gptq:registry) and starts a heartbeat (10s interval, 30s TTL).

  2. Discovery -- Any agent (even unregistered) can call list_agents to see all registered agents and whether they're online.

  3. Messaging -- send_message pushes to the target agent's Redis list (gptq:q:<name>). A Lua script enforces the queue bound atomically. If the queue is full, the sender retries with exponential backoff (up to 10 attempts).

  4. Receiving -- receive_message does a blocking pop (BLPOP) with a configurable timeout.

  5. Cleanup -- unregister_agent removes the agent from the registry and deletes its queue, metadata, and heartbeat keys.

License

MIT

from github.com/rahulrajaram/gptqueue

Install Gptqueue in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install gptqueue

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add gptqueue -- npx -y github:rahulrajaram/gptqueue

FAQ

Is Gptqueue MCP free?

Yes, Gptqueue MCP is free — one-click install via Unyly at no cost.

Does Gptqueue need an API key?

No, Gptqueue runs without API keys or environment variables.

Is Gptqueue hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Gptqueue in Claude Desktop, Claude Code or Cursor?

Open Gptqueue on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Gptqueue with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All data MCPs