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

Forge tunneling: giving agents safe access to private APIs

Jul 19, 20265 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 thing that crosses the network is a governed tool invocation 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 it's explicitly allowed. You enumerate which endpoints the remote side will execute; everything else is refused at the seam.

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 on the remote machine. There was no path to it from the calling machine — not over the LAN, not over anything. The only way a response could exist is that the call executed remotely, inside session B, through the tunnel. That's the whole claim, demonstrated the only way it can be: by construction.

Governance comes along for the ride

Because the tunnel carries tool calls — not raw packets — everything rysh already does for tools applies to remote ones:

This is the difference between "the agent has network access" and "the agent has this verb, on this endpoint, via this machine, and everyone can watch."

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 →