Home › Blog › Forge tunneling: giving agents safe access to private APIs
Blog

Forge tunneling: giving agents safe access to private APIs

Jul 19, 20266 min readBy the Rysh team

The API your agent needs is bound to loopback on another machine. Forge tunnels the tool call there — default-deny, on camera.

Rysh Forge turns an OpenAPI spec into agent tools. Great — until you hit the version of the problem every real company has:

The API your agent needs isn't reachable from where the agent runs.

It's bound to 127.0.0.1 on a box in the office. It lives in a VPC. It's behind a bastion host. It's the internal admin service that — correctly! — has no public ingress at all. Your agent runs on your laptop; the API answers only to localhost on a machine three networks away.

The traditional menu of fixes is grim:

The rysh answer: the tool call travels, not the API

Forge tunneling takes a different shape. Two rysh sessions, connected through a rysh upstream server:

The API never gets exposed. No new ingress, no VPN sprawl, no credentials copied to the laptop. The only things that cross the network are the list of operations you shared and governed tool invocations between two sessions you own — and the upstream in the middle can be your own self-hosted rysh-server, on your infra.

From the agent's point of view, nothing special happened: it called a tool, it got a result. From your network's point of view, nothing changed at all: the private API is still private.

Default-deny, or it doesn't count

Reachability without control is just a hole with extra steps — so the tunnel is default-deny. Nothing is forwardable until you explicitly share the API. Set an allow list and only the operations it names will execute on the remote side; with no allow list, reads flow and writes are refused; a block list always wins. Everything else is refused at the seam, before it runs.

We filmed a real run of this — two live sessions, tunneling over a local rysh-server upstream — and the demo deliberately includes the failure case, because the failure case is the feature:

And the proof that no clever routing trick was involved: the target API in that run was bound to loopback, and the calling session had no spec and no integration for it — only proxy tools whose one path is a request over the upstream to session B. Both sessions ran on one machine in that recording; what makes it work is that the call executes inside session B, through the tunnel.

Governance comes along for the ride

Because the tunnel carries tool calls — not raw packets — governance travels with them:

This is the difference between "the agent has network access" and "the agent has the operations you shared, executed on the machine you chose."

What this unlocks

Honest scope


Got an internal API your agents should reach but must never expose? That's the design-partner conversation we most enjoy. Bring the gnarliest network diagram you have. → rysh.ai/design-partner

Companions: Rysh Forge: point it at an OpenAPI spec · Every tool call visible

Try Rysh

Every pane is a shell and an AI agent — install takes one command.

Get started free →