stdio-bridge

A development guide for fold-stdio, a bridge that exposes a command-line MCP server over streamable HTTP. MCP is a standard for connecting agents to tools, while HTTP lets other services reach the bridge.

In plain words
What is it for?
It is for changing the bridge, its internal message forwarding, Docker image, compose profile, or related documentation.
Why use it?
It allows a server that only communicates through standard input and output to be used by a gateway that expects an HTTP service.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/fold-run/fold/stdio-bridge
Any agent
npx skills add fold-run/fold --skill stdio-bridge
Clone the repo
git clone --depth 1 https://github.com/fold-run/fold

Made for: Claude Code, Codex.

Per session 68 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 962 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00068 $0.00962
Opus 5 $0.00034 $0.00481
Sonnet 5 $0.00014 $0.00192
Haiku 4.5 $0.00007 $0.00096

Measured 2d ago against content hash ce972ba1107a, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

stdio-bridge scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/stdio-bridge/SKILL.md · 85 lines

How it starts

The opening of the file, as written. The whole thing — 85 lines — stays where its author put it; the contents beside it link to each section on GitHub.

The stdio shim

fold-stdio runs one stdio MCP server and serves it over streamable HTTP, so the gateway can federate a server that has no network endpoint. It ships as its own binary (cmd/fold-stdio), its own image (deploy/docker/stdio.Dockerfile), and a compose profile.

fold-stdio --port 8091 -- npx -y @modelcontextprotocol/server-filesystem /data

The gateway then treats it as an ordinary HTTP upstream. That is the whole point: a shimmed server should be indistinguishable from a native one.

The invariant: the bridge is protocol-blind

internal/stdiobridge pumps JSON-RPC messages between an HTTP session and a child process verbatim. No method table, no typed parameters, no rewriting. Framing stays in the SDK on both sides — mcp.CommandTransport owns stdio, mcp.StreamableServerTransport owns HTTP — and the bridge owns only session bookkeeping and the pump.

This is what lets methods the SDK has not learned yet, and server-initiated traffic like sampling and elicitation, cross without the bridge understanding either. Any change that teaches the bridge what a message means is a regression, even when it makes something work. If a fix seems to need message inspection, the fix is in the wrong layer.

It is the same rule as the gateway's invisibility rule, one level down.

The security invariant: the command comes from argv

The command is fixed at startup from argv and is never taken from a request, a config document, or discovery. docs/design-stdio.md records why. A shim that could be told what to execute is a remote-code-execution endpoint wearing an MCP costume — and discovery-sourced upstreams make that reachable by anyone who can create a Service.

Nothing in a change should widen this. If a feature seems to want per-request command selection, it wants a second shim process instead.

The surrounding defaults follow the same posture, and each is a deliberate narrow default rather than an oversight:

  • --host binds loopback; 0.0.0.0 is "a deliberate act" in its own flag help.
  • --env-passthrough defaults to none — the child inherits nothing.
  • --bearer-env names an env var whose value callers must present. In compose this is SHIM_TOKEN, and both sides must agree on it: the Makefile writes it to .env once rather than generating per invocation, because a fresh value on every up leaves the running shim rejecting the gateway until both restart.
  • --max-sessions bounds concurrency, and each session is one child process — this is a process-count bound, not just a memory one.
  • --dir sets the child's working directory.
  • --probe starts the server once to check it runs, then exits. Use it in a container healthcheck or to debug "the upstream is down".

Read the full file on GitHub · 85 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 85 lines · 68 tokens per session scan A ce972ba1107a

Subscribe to this mod's changes

stdio-bridge is a skill published in the GitHub repository fold-run/fold (1 stars, last pushed 3d ago), licensed Apache-2.0. It adds 68 tokens to every session and 962 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

hotplex-release

通过判断 SemVer 影响、整理 CHANGELOG、对账版本面和验证发布输入来准备或发布 HotPlex 版本。不要用于主机二进制更新、运行时诊断或文档巡逻。.

hrygo/hotplex · 52 tokens

hotplex-docs-patrol

维护 HotPlex 当前文档,将代码、配置、API 或发布变更映射到 BFS 可达文档,只修复已验证的文档漂移。不要用于普通润色、运行时诊断或版本发布。.

hrygo/hotplex · 57 tokens

hotplex-stt-tts

初始化或修复 HotPlex 本地 STT 和 MOSS TTS 运行时,包括 Python 依赖、官方模型、配置和验收。仅在明确授权主机变更时使用;只读检查请使用 hotplex-cli 或 hotplex-diagnostics。.

hrygo/hotplex · 65 tokens

hotplex-diagnostics

深入诊断 HotPlex Gateway、Worker、Session、日志或反馈链异常。普通 status/doctor/security/config 只读检查属于 hotplex-cli;安装、更新、重启、配置写入和 Admin 变更属于 hotplex-operator。.

hrygo/hotplex · 59 tokens

hotplex-cli

使用 HotPlex CLI 处理 Cron、明确请求的 Slack 操作、普通用户聊天命令指引,以及只读 status、doctor、security、config 诊断。不要用于飞书写操作、发布、服务安装、二进制更新或 Admin 变更。.

hrygo/hotplex · 63 tokens

hotplex-operator

运维或初始化 HotPlex 主机,覆盖首次 onboard、服务安装/启动、二进制更新、主机配置、审计检查和 Admin 变更。仅在明确授权的 operator 上下文中使用。.

hrygo/hotplex · 54 tokens