Catalog npm
Back to packageRELEASE DETAILS

2.1.0

npm

@0xmaxma/claude-gateway

Multi-agent gateway for Claude

Published16 Oct 2026
Direct dependencies33
Transitive dependenciesNot calculated

README

Current package documentation

Claude Gateway

An orchestrator, voice, and multi-channel platform for Claude Code.

Claude Gateway keeps conversations responsive while Claude Code workers execute tasks. Talk or type through your connected channels, follow progress, and carry your agents' memory and skills across sessions.

Claude Gateway

Documentation · Quickstart · API reference

Features

  • 🔎 Jev evaluations — optional typed Choice, Score and Noul evaluations shared by agents, workers and scoped integrations, with direct or compatible upstream credentials. See Jev setup.

  • 🪄 Agent Orchestration Engine — responsive conversations while workers execute durable tasks. The dashboard separates Agent/worker token usage and offers per-session reports with cache and tool details. Existing configurations without the switch are upgraded automatically; explicit false remains an opt-out. See orchestration settings.

  • 🔥 Agent orchestration — keep conversations responsive while reusable workers execute durable tasks, report progress, accept follow-up instructions, and support cancellation. See orchestration and tasks.

  • ⚙️ Worker harnesses — automatically route GPT workers to native Codex when ready, with Claude Code fallback before dispatch on the host or inside app containers. Conversational agents remain on Claude Code. See worker harnesses.

  • 🧰 pstack — load the pstack-claude Claude Code plugin only for agents you set up with /pstack-setup, with per-agent model sheets, subagents as gateway tasks and live review-panel status. See pstack.

  • 🎙️ Voice conversations — speech recognition and spoken replies with per-agent models and voices, direct or upstream providers, live or recorded speech input, and audio replay. See voice setup.

  • 🧠 Skill self-improvement — agents learn reusable skills from their own work: after a substantive turn a background reviewer creates or updates a skill, hot-reloaded for the next turn. Provenance-guarded (never overwrites human-written skills), capped per day, and audited to SKILLS_LEARNED.md. See gateway.skillLearning

  • 📚 Knowledge base (two-lane memory) — per-agent SQLite/FTS5 searchable archive exposed through memory_search / memory_get MCP tools, so agents recall notes that don't fit the always-injected core; chunks carry fail-closed provenance and the index is refreshed off the gateway event loop. See gateway.knowledge

  • 🌙 Nightly dreaming — background consolidation of long-term memory: a print-only reviewer proposes ops that a safe applier writes to MEMORY.md / USER.md (backup, bounded-loss, net-negative when over budget). Deterministic compaction, budget-scaled pruning, and staleness GC keep memory near budget without forgetting — archived entries stay searchable. See gateway.dreaming

  • 🤖 Multi-agent — run multiple bots from a single gateway, each with isolated sessions

  • 🔒 Isolated memory mode — an agent that serves many unrelated senders keeps USER.md/MEMORY.md per conversation, with the shared memory, skill, cron, agent and app tools turned off; an app agent also runs each conversation in its own sandbox container, and every channel tool replies only to the originating chat. Set agents[].isolateMemory on a host agent or services.agent.isolate_memory in an app's app.yaml. See isolated memory mode

  • 🔌 Multi-channel MCP — modular tool system per channel (Telegram, Discord, LINE, Slack, WhatsApp, Cron, Skills, extensible to more)

  • 📥 Channel ingress recovery — unavailable attachments preserve the message and readable files; Telegram/Discord receiver retries isolate conversations and archive stale startup queues without executing old requests. See ingress recovery.

  • ⏳ Provider outage admission — durable cooldowns bound repeated report/inference failures, preserve queued input and task results, and expose waiting status without restarting running workers. See provider admission settings.

  • 🧩 Agent skills — extensible skill system via SKILL.md files; agents can create, delete, and install skills from URLs at runtime with hot-reload

  • 🎭 Agent identity — define personality, tone, and rules via workspace markdown files

  • 📡 Live status messages — real-time status updates showing tool usage, thinking, and progress

  • ⌨️ Typing indicators — continuous typing animation while the agent is working (Telegram and Discord)

  • 🌊 Streaming API — SSE (Server-Sent Events) endpoint for real-time response streaming

  • ↪️ Auto-forward — agent text output automatically forwarded to Telegram even without explicit reply tool calls

  • ⏰ Heartbeat / scheduled tasks — cron-based proactive messages and recurring tasks via HEARTBEAT.md + REST API; agent jobs deliver output to Telegram, Discord, or both

  • 💬 Persistent chat history — two-layer storage: session context (.jsonl) + permanent SQLite DB with FTS5 full-text search; survives /compact and session eviction

  • 🧹 Auto-cleanup — configurable retention policy prunes messages and media files older than N days on a daily schedule

  • 🗄️ Long-term memory — persistent memory system across sessions

  • 🔄 Config auto-migration — automatic schema migration when config format changes

  • 🔐 Access control — allowlist, open, or pairing-based Telegram access policies

  • 🌐 HTTP API — REST API with key-based auth for external integrations

  • 🛍️ App Store — install, update, and host Docker-compose apps on the gateway; apps get a reverse proxy at /app/:name/:portName/*, optional Unix socket bridge for host scripts, and optional AI agent injection

  • ⬆️ Self-update — check for newer versions of claude-gateway and claude-code and trigger an update via a single API call (no SSH or shell access needed), or from the terminal with claude-gateway update / claude-gateway claude update; the gateway follows the npm stable dist-tag (--latest for the newest release)

  • 💾 Session persistence — conversation history saved and restored across restarts

  • 🖥️ PTY shell (wrap-shell mode) — optional interactive pseudo-terminal backend (gateway.headless: false) for tools that require a real TTY; includes a live browser viewer (xterm.js) and a /api/v1/sessions/:sessionId/screen endpoint that returns the visible screen as plain text — agents can poll it to detect hang states, menus, or unexpected output without parsing ANSI escape codes; a /cli chat command (Telegram/Discord/LINE) opens the same viewer for a single agent, agent-scoped and without an admin key; app-agents and orchestration always stay headless

Get started

Install Node.js 22+, Bun, and an authenticated Claude Code CLI with channels support. Orchestration runs on Linux, macOS, and Windows. Docker/Compose is needed for apps; some voice formats require ffmpeg.

npm install -g @0xmaxma/claude-gateway
claude-gateway gateway start

In another terminal:

claude-gateway agents create

Follow the quickstart, then enable orchestration, connect a channel, and optionally configure voice.

Learn more

TopicDocumentation
Configuration and credentialsConfiguration
Agents, workers, and task controlsOrchestration
Platform tokens and channel setupChannels
STT, TTS, providers, and replayVoice
Requests, responses, streams, and permissionsAPI reference
Running, upgrading, and troubleshootingOperations
Source builds and contributionsDevelopment

API documentation lives on the documentation website. CLI command reference is the generated command reference. To edit or preview this site, see website development.

Installation health

Run claude-gateway doctor to check startup, voice and optional Codex dependencies, even when the server is down. Use claude-gateway doctor fix for supported local repairs and installation of missing ffmpeg/ffprobe. Repair asks for confirmation and never starts or restarts the gateway. See diagnosis and repair.

Browser voice can resume unheard approved replies after navigation. Clients retain per-session mode/mute intent and reconnect with playback receipts; see the voice resume protocol.

Browser replay is available for approved spoken replies before their original recording completes, including interrupted playback. Explicit replay can generate missing audio with the configured TTS provider (normal provider charges apply). See the replay and playback controls.

Safemode investigations

Run claude-gateway safemode --name investigation --prompt "Inspect this gateway problem" for a native interactive Claude Code investigation without stopping the gateway. Use --cli codex to select Codex, --model to override the native model, and --resume investigation to return to the same investigation. Safemode preserves build/startup evidence and uses a separate source snapshot. Session IDs are the native Claude Code/Codex IDs; safemode rename ID NEW_NAME changes the alias without interrupting the conversation. Headless takeover, request IDs and trusted operator agent controls are described in the safemode guide. Trusted agents can discover explicitly assigned investigations and track them as Gateway-managed tasks, with automatic completion reports and conversation-scoped controls.

Paired desktop MCP connectors can also run through Jev as Gateway-managed Computer Use tasks, with local application consent and the same shared Thinking configuration. See Computer Use connectors. Without Jev, Computer Use can instead decide each step with the agent's own model via gateway.computerUse; see Computer Use without Jev.

Computer capability discovery lists paired online computers without requesting access. A Gateway-managed computer task requests access only when it starts. The desktop owner then selects applications (or explicitly selects All applications) and a session duration. Denial prevents execution; pairing and discovery alone never start desktop actions. The task waits for approval with cancellation and ownership checks active, rather than asking the user to pre-enable access in Settings.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 33

Native requirements
33 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
ws
Environment
{
  "local_name": "ws",
  "alias": false,
  "peer_metadata": null
}
^8.21.0runtime
pino
Environment
{
  "local_name": "pino",
  "alias": false,
  "peer_metadata": null
}
^10.3.1runtime
sharp
Environment
{
  "local_name": "sharp",
  "alias": false,
  "peer_metadata": null
}
^0.35.4runtime
qrcode
Environment
{
  "local_name": "qrcode",
  "alias": false,
  "peer_metadata": null
}
^1.5.4runtime
express
Environment
{
  "local_name": "express",
  "alias": false,
  "peer_metadata": null
}
^4.18.0runtime
js-yaml
Environment
{
  "local_name": "js-yaml",
  "alias": false,
  "peer_metadata": null
}
^4.1.0runtime
p-queue
Environment
{
  "local_name": "p-queue",
  "alias": false,
  "peer_metadata": null
}
^6.6.2runtime
chokidar
Environment
{
  "local_name": "chokidar",
  "alias": false,
  "peer_metadata": null
}
^3.5.0runtime
node-pty
Environment
{
  "local_name": "node-pty",
  "alias": false,
  "peer_metadata": null
}
^1.1.0runtime
lru-cache
Environment
{
  "local_name": "lru-cache",
  "alias": false,
  "peer_metadata": null
}
^10.0.0runtime
node-cron
Environment
{
  "local_name": "node-cron",
  "alias": false,
  "peer_metadata": null
}
^3.0.0runtime
smol-toml
Environment
{
  "local_name": "smol-toml",
  "alias": false,
  "peer_metadata": null
}
^1.8.0runtime
cron-parser
Environment
{
  "local_name": "cron-parser",
  "alias": false,
  "peer_metadata": null
}
^5.5.0runtime
js-tiktoken
Environment
{
  "local_name": "js-tiktoken",
  "alias": false,
  "peer_metadata": null
}
^1.0.21runtime
@line/bot-sdk
Environment
{
  "local_name": "@line/bot-sdk",
  "alias": false,
  "peer_metadata": null
}
^11.0.2runtime
@xterm/headless
Environment
{
  "local_name": "@xterm/headless",
  "alias": false,
  "peer_metadata": null
}
^6.0.0runtime
@whiskeysockets/baileys
Environment
{
  "local_name": "@whiskeysockets/baileys",
  "alias": false,
  "peer_metadata": null
}
^6.7.24runtime
@modelcontextprotocol/sdk
Environment
{
  "local_name": "@modelcontextprotocol/sdk",
  "alias": false,
  "peer_metadata": null
}
1.30.0runtime
tmp
Environment
{
  "local_name": "tmp",
  "alias": false,
  "peer_metadata": null
}
^0.2.0development
jest
Environment
{
  "local_name": "jest",
  "alias": false,
  "peer_metadata": null
}
^29.0.0development
ts-jest
Environment
{
  "local_name": "ts-jest",
  "alias": false,
  "peer_metadata": null
}
^29.0.0development
ts-node
Environment
{
  "local_name": "ts-node",
  "alias": false,
  "peer_metadata": null
}
^10.9.2development
@types/ws
Environment
{
  "local_name": "@types/ws",
  "alias": false,
  "peer_metadata": null
}
^8.18.1development
supertest
Environment
{
  "local_name": "supertest",
  "alias": false,
  "peer_metadata": null
}
^7.2.2development
@types/tmp
Environment
{
  "local_name": "@types/tmp",
  "alias": false,
  "peer_metadata": null
}
^0.2.0development
typescript
Environment
{
  "local_name": "typescript",
  "alias": false,
  "peer_metadata": null
}
^5.0.0development
@types/jest
Environment
{
  "local_name": "@types/jest",
  "alias": false,
  "peer_metadata": null
}
^29.0.0development
@types/node
Environment
{
  "local_name": "@types/node",
  "alias": false,
  "peer_metadata": null
}
^22.19.18development
@types/qrcode
Environment
{
  "local_name": "@types/qrcode",
  "alias": false,
  "peer_metadata": null
}
^1.5.6development
@types/express
Environment
{
  "local_name": "@types/express",
  "alias": false,
  "peer_metadata": null
}
^4.17.0development
@types/js-yaml
Environment
{
  "local_name": "@types/js-yaml",
  "alias": false,
  "peer_metadata": null
}
^4.0.0development
@types/node-cron
Environment
{
  "local_name": "@types/node-cron",
  "alias": false,
  "peer_metadata": null
}
^3.0.0development
@types/supertest
Environment
{
  "local_name": "@types/supertest",
  "alias": false,
  "peer_metadata": null
}
^7.2.0development

Distribution files

1 collected
Distribution 1

Source distribution

Source file
Checksums from source
{
  "shasum": "82a24779921dd163bf2a359e1280e5ddf321d6c4",
  "tarball": "https://registry.npmjs.org/@0xmaxma/claude-gateway/-/claude-gateway-2.1.0.tgz",
  "fileCount": 1982,
  "integrity": "sha512-Ytppo3ST6L2j2HkbhDxlAYYGyueqEgRZPHQjnvKO/Td7PmezpMTVf6uOkqG1BpaLd4rabm8cdjmO5KJs9H0Gqg==",
  "signatures": [
    {
      "sig": "MEQCIGqGjpf+AFrVJE5BhxukUGlncAt7qlHhogU2Ft2pW+5eAiAmpnzOijTAZI7JlcJZ5myUJsDmS7sjLcoMYvjJsMMUFA==",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    },
    {
      "sig": "MEUCIQDrxfDJSPTyZPXOQ2aMkJav9XaVhkzHsE57CdxsZ/+SXQIgJGhk5ZBN/LB4FG3hbT2//PRbMqPRw9LQyJNV7aYyd90=",
      "keyid": "SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"
    }
  ],
  "attestations": {
    "url": "https://registry.npmjs.org/-/npm/v1/attestations/@0xmaxma%2fclaude-gateway@2.1.0",
    "provenance": {
      "predicateType": "https://slsa.dev/provenance/v1"
    }
  },
  "unpackedSize": 14127725
}

Repository

PENDING
0xmaxma/claude-gateway

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 09:07 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:ff58dd7b0a1f4e5dd355f35e2cbb4e216061216975aaa17fcea73da75d381ea0

Other collected versions

2.1.721 Oct2.1.621 Oct2.1.520 Oct2.1.419 Oct2.1.318 Oct2.1.217 OctView all collected versions →