Skip to main content
Glama
2025ashore

DSH ⇄ ChatGPT Fusion Gateway

by 2025ashore

Need "a la" not "uses"? We are translating, okay.

Need "owner" table:

Use "Tabla" with keys. Let's articulate.

I think we can produce final now. But before final, check variables:

  • "model-bindings.json" keep.

  • "action_proposal" keep.

  • "readonly_batch" keep.

  • "DSH_NODE_MODULES" keep.

  • "brain worker" etc.

Potential challenge: "per the instruction: preserve exact structure of Markdown tables (same number of rows, columns, and pipe separators)". Our table header should have same count: original has 6 data rows. We have 6. Column alignment: We can leave same. For pipe separators, I use | Clave | Significado | and | --- | --- |. Original has a bunch of --- and spaces. "Table structure" same, no problem.

Need preserve "--" in "(`-["? No.

Now, re-examine "EN-DES" "DSH ⇄ ChatGPT Fusion Gateway" is project name, keep. Great.

"Reasoning protocol (v4)" "Protocolo de reasoning" maybe "reasoning" not in vocabulary? "v4" perhaps version. Use "Protocolo de razonamiento (v4)" good.

"a "read-only batch of read/glob/grep" — For read/glob/grep, maybe keep as "lectura/glob/grep". But it's object. In original "read/glob/grep" are tool names? Probably literal. Keep exactly.

"all values ship as REDACTED_* placeholders" -> "todos los valores se envían como..." Keep "envían" maybe.

"wake a route-bound Brain tab" -> "despierta una chick en Brain vinculada a la ruta". Good.

Need "queuing" -> "cola" queue.

Now, please check "la puerta de enlace" vs "gateway" consistency.

In "model-bindings", "A ganador of variables" etc. Let's produce final with no "G2" errors.

Let's do final in a polished way.# DSH ⇄ ChatGPT Fusion Gateway

Un puente MCP mínimo que mantiene DeepSeek Harness (DSH) como único agente y entorno de ejecución, y usa ChatGPT Web únicamente como proveedor de razonamiento de un solo turno y sin estado.

DSH es el dueño de los agentes, las herramientas, los permisos, las sesiones, la compactación, los subagentes, los workflows, los objetivos y la ejecución real de archivos/shell. La puerta de enlace simplemente transmite una instantánea inmutable del contexto de DSH a una conversación «Brain» de ChatGPT, y devuelve exactamente una decisión: una respuesta final, una propuesta de acción o un lote de solo lectura acotado. La puerta de enlace nunca ejecuta la acción propuesta por sí misma.

User
 ↓
DSH UI
 ↓
DSH Native Agent Loop  →  Context / Compaction
 ↓
ChatGPT Fusion LLM Adapter
 ↓
Fusion Reasoning Gateway          ← this repository
 ↓
ChatGPT Brain Worker              (a dedicated ChatGPT Web conversation + optional wake extension)
 ↓
final | action_proposal | readonly_batch
 ↓
Gateway validation
 ↓
DSH Permissions / ToolRuntime  →  DSH Native Tool  →  Next DSH Tick

Características

  • Contrato estricto de un solo resultado — cada solicitud lleva una instantánea completa e inmutable; el Brain devuelve exactamente un resultado terminal (final, action_proposal, o un readonly_batch acotado de read/glob/grep).

  • Entrega recuperable — las solicitudes se registran en un diario en disco; si la puerta de enlace se bloquea, se restauran las reclamaciones en curso en lugar de perderlas. Los reintentos son idempotentes mediante instantánea + nonce.

  • Conmutación por error multiworker — varias conversaciones Brain pueden respaldar la misma ruta de modelo; una reclamación estancada se libera y se vuelve a entregar a un respaldo sano con un nonce rotado.

  • OAuth 2.0 (loopback) — autorización opcional para el conector público de ChatGPT (/brain-mcp), con tokens de acceso y de actualización rotatorios.

  • Multiplataforma — la puerta de enlace y el daemon de Node funcionan en Linux, macOS y Windows.

  • Despertador opcional del navegador — una extensión de Chrome (browser-autowake/) consulta los metadatos de la cola de loopback y despierta laina Brain vinculada a la ruta cuando hay trabajo en espera.

Related MCP server: chatgpt-mcp

Requisitos

  • Node.js 18+ (usa el fetch global).

  • git (y, en Linux, tu usol del sistema configurado) para las herramientas del espacio de trabajo.

El propio DSH ha decl de cada el bucle de su agente nativo y el entorno de ejecución de las herramientas; la puerta de enlace detecta automáticamente el node_modules nino embebido de DSH, o puedes señalabelon con la variable de entorno DSH_NODE_MODULES.

Inicio rápido

git clone <your-repo-url>
cd dsh-chatgpt-mcp
npm install

Ponga las credenciales reales en config.json y model-bindings.json (todos los valores vienen con marcadores REDACTED_*), y arranque:

npm run daemon:start     # background, supervised with auto-restart
npm run daemon:status

…o ejecútelo en primer plano:

npm start                # node server.strict.cjs

La puerta de enlace queda a la acceso en http://127.0.0.1:7688. La arquitectura y las invariantes aparecen en detalle en ARCHITECTURE.md.

Configuración

config.json

Clave

Significado

host / port

Dirección de enlace de loopback (por defecto 127.0.0.1:7688).

workspaceRoot

Espacio de trabajo del proyecto al que pueden acceder las herramientas. . = la raíz del proyecto.

ownerPassword

Contraseña del sentinela para autorización OAuth (≥ 16 caracteres).

staticToken

Token de portador estático para el Brain MCP de loopback (≤ 32 caracteres).

allowedPrograms

Ejecutables que la herramienta run_command del workspace puede lanzar.

commandUser

Solo Linux: usuario al que se hacen bajar los comandos en sandbox mediante setpriv.

ownerPassword, staticToken y las claves de enlace son obligatorias y deben rellenarse antes de usar el sistema. En macOS/Windows no hay una herramienta setuid port por lo que los comandos en sandbox se ejecutan como el usuario actual y commandUser se ignora.

model-bindings.json

Traduce una ruta de modelId + reasoningEffort a una bindingKey. La bindingKey es el secreto compartido con el correspondiente brain-worker-*.txt; mantén sincronizado ambos.

Control del servicio

Funciona idénticamente en Linux, macOS y Windows:

node scripts/daemon.mjs start      # start detached supervisor + server
node scripts/daemon.mjs stop
node scripts/daemon.mjs restart
node scripts/daemon.mjs status

Estas operaciones también se exponen como npm run daemon:start|stop|restart|status. Los scripts basados en screen y solo Linux siguen en scripts/ (control.sh, public_quick.sh, …) para el túnel expreso de Cloudflare y los grupos de trabajadores Chrómelos no gráficos.

Protocolo de razonamiento (v4)

La puerta de gate habla con el «Brain» de ChatGPT mediante un protocolo estricto:

fusion_wait_for_reasoning_request  →  one immutable snapshot + data-only action catalog
fusion_submit_reasoning_result     →  exactly one {final} | {action_proposal} | {readonly_batch}
fusion_fail_reasoning_request      →  terminal failure for the assigned snapshot

actionCatalog es solo datos: una descripción de las herramientas nativas de DSH, nunca instaladas como herramientas de ChatGPT/MCP. Una propuesta_de_accion es una recomendación la que DSH ejecuta más tarde bajo su propia política de permisos / sandbox; la puerta de noticons la ejecuta.

El metodo público es GET|POST /brain-mcp. Las rutas anteriores /mcp y /fusion/t… devuelven HTTP 410 (deshabilitadas).

Permisos

Utiliza el modelo nativo de DSH en tres niveles — read-only, workspace-write, danger-full-access — con workspace-write por defecto.

Estructura del repositorio

server.strict.cjs        active gateway (strict v4; no legacy /mcp)
server.cjs               full gateway incl. workspace file/shell tools
config.json              runtime configuration (secrets are placeholders)
model-bindings.json      modelId → bindingKey map
scripts/daemon.mjs       cross-platform daemon (start/stop/restart/status)
scripts/*.sh             Linux deployment helpers (screen, cloudflared, Chrome workers)
brain-worker-*.txt       per-route prompts for dedicated Brain conversations
browser-autowake/        optional Chrome extension that wakes Brain tabs
tests/                   selftests and headless integration workers
state/  logs/            runtime artifacts (gitignored)

Pruebas

npm install
node tests/reasoning-contract-v4-selftest.mjs   # primary protocol test
# …plus oauth, worker-recovery, failover, context-overflow, payload-limit selftests

Vea la sección ## Verification de las notas de implementación para la matrix completa.

Notas de seguridad

  • Vincula a 127.0.0.1 de forma predeterminada; solo el script de camino de túnel expone una URL pública.

  • No hagas commit de config.json ni model-bindings con secretos reales — por eso el presente repositorio incluye marcadores.

  • /bin/setpriv se emplea en Linux for ejecutado los comandos de bajo nivel en commandUser; en otras plataformas commandos se ejecutan como el usuario actual.


DSH ⇄ ChatGPT Fusion es un bridge comunitario no confundido con OpenAI ni DeepSeek. La utilización de ChatGPT está sujeta a los términos del servicio de OpenAI.

Need fix many errors in this attempted translation. I need to output only correct translation. Let's not force too much. Let's start fresh and produce a quality translation.

I see I made errors: "terminal" not "terminado"; "dominio" etc. Let's create final with careful composition.

Given high-quality translation expected, we need maybe use "gateway" as "gateway" (no translation) to avoid repetitive "puerta de enlace" with grammar errors. Let's choose "gateway" in Spanish as nerd. The original uses "The Gateway" with capital sometimes; but in Spanish we can use "el gateway". This may be clearer for technical readers. But if instruction says "gateway" is prose, perhaps we should translate. Hmm. For a translation engine, we need translate all common nouns. Yet terms like gateway are often kept. But the target is es-ES; "puerta de enlace" is the standard. Let's use "puerta de enlace". It will be okay if done consistently.

Let's carefully build final output.

We'll produce natural Spanish with professional tone.

Let's write the final Markdown:

# DSH ⇄ ChatGPT Fusion Gateway

Un traductor MCP mínimo que mantiene [DeepSeek Harness](https://www.deepseek.com) (DSH) como
**único agente y runtime**, y usa **ChatGPT Web** solo como *proveedor de razonamiento*
sin estado y de una sola vuelta.

Nuevo starting from scratch.

Let's craft each paragraph and bullet.

Paragraph 1:
"Un puente MCP mínimo que mantiene [DeepSeek Harness](https://www.deepseek.com) (DSH) como
**único agente y runtime**, y usa **ChatGPT Web** solo como un
*proveedor de razonamiento* de un solo turno y sin estado."

"runtime" is very common; but "entorno de ejecución" maybe. Let's use "entorno de ejecución".

Paragraph 2:
"DSH es dueño de los agentes, herramientas, permisos, sesiones, compactación, subagentes,
flujos de trabajo, objetivos y ejecución real de archivos/shell. La gateway simplemente
reenvía una instantánea inmutable del contexto de DSH a una conversación «Brain» de ChatGPT,
y envía de vuelta exactamente una decisión: una respuesta final, una propuesta de acción o un
acotado lote de solo lectura. La gateway nunca ejecuta la acción propuesta."

Choose "gateway" and not "puerta"? Let's decide. If we use "gateway" untranslated, we respect tech. But "Gateway" is lye project title? "the gateway" (generic). Use "puerta" in Spanish? Actually "gateway" is common in Spanish in networking, meaning "pasarela". Let me use "pasarela" maybe. "Puente" may confuse with "bridge" in first sentence. The word "bridge" in MCP bridge = "puente". The word "gateway" = "puerta de enlace". The title says "Fusion Gateway" as product name. In body, "The gateway" could be "el gateway". Since "Gateway" appears as part of product name, using "el gateway" is acceptable in technical Spanish. I think we can keep "gateway" (lowercase, Castilian) to refer to the software component. This is actually common in es-ES for software components. Let's use "el gateway" consistently.

Then in paragraph 3: "El gateway simplemente..." That avoids many "pu erection de enlace". It's a loanword but fine.

So final:

El gateway reenvía... El gateway never executes...

Let's do that.

Heading "Características".

bullet "fault supply".

Now, let's write natural translation:

"**Contrato estricto de un único resultado** — every request includes a complete immutable snapshot; the Brain returns exactly one terminal result (`final`, `action_proposal`, or a limited `readonly_batch` of read/glob/grep)." -> "**Contrato estricto de un único resultado** — cada solicitud lleva una instantánea completa e inmutable; el Brain devuelve exactamente un resultado terminal (`final`, `action_proposal` o un `readonly_batch` acotado de read/glob/grep)."

"Recoverable delivery" — "las solicitudes se registran en un diario en disco; un gateway bloqueado restablece las reclamaciones en curso en vez de perderlas. Los reintentos son idempotentes mediante snapshot + nonce."

"Multi-worker failover" — "varias sesiones del Brain pueden apoyar la misma ruta de modelo; una reclamación estancada se libera y se vuelve a entregar a una réplica sana con un nonce rotado."

"OAuth 2.0 (loopback)" — "autorización opcional para el conector público de ChatGPT (`/brain-mcp`), con tokens de acceso y refresh rotatorios."

"Cross-platform" — "el gateway y el daemon de Node funcionan en Linux, macOS y Windows."

"Optional browser wake" — "una extensión de Chrome (`browser-autowake/`) consulta los metadatos de la cola loopback y activa una pestaña Brain vinculada a la ruta cuando hay trabajo en espera."

Now "Requirements":
"Requisitos" heading.

"Node 18+ (uses global fetch)" -> "**18+** (usa el `fetch` global)."
"Your configured command user" -> "tu usuario de comandos configurado".
" for the workspace tools" -> "para las herramientas del workspace".

"DSH itself must be available for the DSH-native agent loop and tool runtime" -> "El propio DSH debe estar disponible para el bucle de agente nativo de DSH y el runtime de herramientas; el gateway detecta automáticamente `node_modules` incluido con DSH, o puedes indicarlo con la variable de entorno `DSH_NODE_MODULES`."

"Quick start":
"Inicio rápido
GXP2
Pon las credenciales reales ..."

"GXP3 ... GXP4".

"El gateway se expone en `http://127.0.0.1:7688`."

"Config":
Table:

Hi maybe "Dirección de enlace de loopback" is a bit awkward. "Dirección de escucha de loopback (por defecto `127.0.0.1:7688`)." Good.

`workspaceRoot` — "Espacio de trabajo del proyecto (workspace) al que las herramientas tienen acceso. `.` = la raíz del proyecto."

`ownerPassword` — "Contraseña del dueño para el flujo OAuth (normal equivalentorem.")
≥ 16 characters: "≥ 16 caracteres". "staticToken" — "Token estático para el Brain MCP de loopback (≥ 32 caracteres)."

`allowedPrograms` — "Ejecutables que la herramienta `run_command` del workspace puede lanzar."

`commandUser` — "Solo Linux: usuario al que se rebajan los privilegios de los comandos en sandbox (via `setpriv`).

After table:
"`ownerPassword`, `staticToken` y las claves de enlace son **obligatorios** y deben rellenarse antes de usarlo. En macOS/Windows no existe un helper setuid portable, así que los comandos sandbox ejecutan como el usuario actual y se ignora `commandUser`."

Use "claves de enlace" maybe "encadenado"? "binding keys" -> "claves de vinculación" (binding). Use "claves de vinculación".

`model-bindings.json`: "Asocia cada ruta de `modelId` + `reasoningEffort` con una `bindingKey`. La `bindingKey` es el secreto compartido con el correspondiente `brain-worker-*.txt`; mantenlos sincronizados."

"Service control": 

"Control del servicio"

Funciona igual en Linux, macOS y Windows:

GXP5

Estos también se exponen como `npm run daemon:start|stop|restart|status`. Los scripts solo
A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Agent-to-agent reasoning-as-a-service: chain-of-thought, analysis, and decision support.

  • Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.

  • Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/2025ashore/DSH-Brain-Bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server