{"id":46566,"library":"swarm-queue","title":"Swarm Queue","description":"Distributed job queue for coordinating multi-agent swarms, built on BullMQ and Redis. Version 0.1.0 is the current stable release with weekly updates. Differentiator: lightweight, typed, and designed specifically for agent-to-agent task distribution, not generic job queuing.","status":"active","version":"0.1.0","language":"javascript","source_language":"en","source_url":"https://github.com/joelhooks/opencode-swarm-plugin","tags":["javascript","typescript"],"install":[{"cmd":"npm install swarm-queue","lang":"bash","label":"npm"},{"cmd":"yarn add swarm-queue","lang":"bash","label":"yarn"},{"cmd":"pnpm add swarm-queue","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core job queue engine","package":"bullmq","optional":false},{"reason":"Redis client for BullMQ","package":"ioredis","optional":false}],"imports":[{"note":"ESM-only; CommonJS require() breaks with dynamic export","wrong":"const SwarmQueue = require('swarm-queue')","symbol":"SwarmQueue","correct":"import { SwarmQueue } from 'swarm-queue'"},{"note":"Top-level export; do not subpath import","wrong":"import { createQueue } from 'swarm-queue/createQueue'","symbol":"createQueue","correct":"import { createQueue } from 'swarm-queue'"},{"note":"Job is a TypeScript type only, not a runtime value since v0.1.0","wrong":"import { Job } from 'swarm-queue'","symbol":"Job","correct":"import type { Job } from 'swarm-queue'"}],"quickstart":{"code":"import { SwarmQueue } from 'swarm-queue';\nimport Redis from 'ioredis';\n\nconst connection = new Redis(process.env.REDIS_URL ?? 'redis://localhost:6379');\nconst queue = new SwarmQueue({ connection, queueName: 'swarm-tasks' });\n\nasync function main() {\n  await queue.add({ agentId: 'agent-1', payload: { instruction: 'process data' } });\n  const worker = queue.createWorker(async (job) => {\n    console.log(`Agent ${job.data.agentId} executing: ${job.data.payload.instruction}`);\n    return { status: 'done' };\n  });\n  await worker.waitUntilReady();\n  console.log('Queue ready');\n}\nmain().catch(console.error);\n","lang":"typescript","description":"Initializes a SwarmQueue with Redis, adds a job, and runs a worker to process it."},"warnings":[{"fix":"Pass a Redis connection or ioredis instance as `{ connection }`","message":"Queue constructor now requires explicit `connection` option; removed default Redis connection","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Replace `delay` with `defer` in job options","message":"`delay` option on job add() is deprecated, use `defer` instead","severity":"deprecated","affected_versions":">=0.1.0"},{"fix":"Create a new Redis connection per SwarmQueue instance","message":"Do not share same Redis connection across multiple SwarmQueue instances; BullMQ expects exclusive connections per queue","severity":"gotcha","affected_versions":"*"},{"fix":"Change `import { Job }` to `import type { Job }`","message":"Type `Job` no longer exported as runtime value; use TypeScript `import type`","severity":"breaking","affected_versions":">=0.1.0"},{"fix":"Ensure worker handler returns a result or Promise","message":"Worker callbacks must return a value; returning undefined causes job to hang indefinitely","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"search_vec":"'0.1.0':18 'agent':10,35,37 'agent-to-ag':34 'built':12 'bullmq':14 'coordin':7 'current':21 'design':31 'differenti':27 'distribut':3,39 'generic':41 'javascript':44 'job':4,42 'lightweight':28 'multi':9 'multi-ag':8 'queu':43 'queue':2,5 'redi':16 'releas':23 'specif':32 'stabl':22 'swarm':1,11 'task':38 'type':29 'typescript':45 'updat':26 'version':17 'week':25","created_at":"2026-06-07T13:00:33.397228+00:00","updated_at":"2026-06-07T13:00:33.397228+00:00","problems":[{"fix":"Use `import { SwarmQueue } from 'swarm-queue'`","cause":"Imported SwarmQueue incorrectly using default import (import SwarmQueue) instead of named import","error":"TypeError: queue.add is not a function"},{"fix":"Use `import type { Job } from 'swarm-queue'`","cause":"Imported Job as runtime value instead of type-only import in TypeScript","error":"Error: Job type is not a constructor"},{"fix":"Pass `{ connection: new Redis() }` to the constructor","cause":"Instantiated SwarmQueue without passing `connection` option","error":"BullMQ: Error: connection is not a Redis connection (Missing connection)"},{"fix":"Return a result object from the worker handler","cause":"Worker callback returns undefined (or void) instead of a value","error":"Worker never completes job"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/joelhooks/opencode-swarm-plugin","github":"https://github.com/joelhooks/opencode-swarm-plugin","docs":null,"changelog":null,"pypi":null,"npm":"swarm-queue","openapi_spec":null,"status_page":null,"smithery":null,"categories":["ai-ml","devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}