Online in about a second
From rh http 3000 to a working public address took 1.0 s in our tests, certificate included.
One command gives the app on your laptop, Raspberry Pi or office server a public HTTPS address. Test webhooks, share a preview, reach your home lab. It works behind NAT, CGNAT and company firewalls.
Live right now: demo.t.onio.in runs on one of our machines, through a tunnel.
$ rh http 3000 remotehost: https://demo.t.onio.in → http://127.0.0.1:3000 online in 1.0 s · encrypted · press Ctrl+C to stop
Why it exists
rh dials out on port 443, which almost every network allowshttps://<name>.t.onio.in with a valid certificateYour machine dials out once.
The internet comes in through that tunnel,
and nothing at home is left open.
What you get
From rh http 3000 to a working public address took 1.0 s in our tests, certificate included.
Basic auth and IP allowlists are checked on our side, before a request ever reaches your laptop.
rh service install 3000 starts at boot and came back 5 s after we killed it.
No key yet? You get a 24 hour tunnel and a claim link. Sign in and it moves into your account, still running.
Bandwidth for the period and every tunnel online, in the dashboard, the API and over MCP.
Libraries for Go, Node.js and Python start a tunnel, keep it up and hand you the URL. Handy for tests that need a public webhook address.
tun, err := remotehost.Forward(ctx, "3000", remotehost.Options{}) if err != nil { log.Fatal(err) } defer tun.Close() fmt.Println(tun.URL) // https://k7m2xq9p.t.onio.in
import { forward } from "@bitgeek/remotehost"; const tunnel = await forward(3000); console.log(tunnel.url); // https://k7m2xq9p.t.onio.in
import remotehost with remotehost.forward(8000) as tunnel: print(tunnel.url) # https://k7m2xq9p.t.onio.in
How it works
No password. Create an API key in the dashboard, or skip this and try without an account.
rh http 3000 starts the official, unmodified frp client and points it at your port.
A valid certificate, WebSockets and streaming included. Stop the command and it goes offline.
rh opens an encrypted tunnel to remotehost, outbound on port 443. Nothing at home is opened.https://myapp.t.onio.in.rh.rh hands it to your app on localhost:3000.Proof, not promises
forward(3000) to a public URL, Node.js libraryrh: Linux, macOS, Windows, FreeBSD, ARM includedSee one running. demo.t.onio.in is a static page with sample data, served from a folder on one of our
machines. Its web server listens only on 127.0.0.1; a background rh service keeps it online.
Pricing
Prices exclude GST. In India you pay in rupees by UPI. Start on Free and upgrade from the dashboard when you need more.
For trying ideas and quick previews
For one developer who shares work every day
For a team that runs shared staging links
Paying opens soon: until then, paid plans show their price and you can start on Free. Free tunnels show visitors a short notice on their first visit (API calls skip it) and sessions reconnect every 2 hours.
Questions
rh http 3000 or call a library without a key and you get an anonymous tunnel for 24 hours, with a claim link. Sign in through that link and the tunnel moves into your account while it keeps running.rh makes one outbound connection on port 443, the same as a browser. Nothing on your side has to accept incoming connections, so NAT, CGNAT and most firewalls do not matter.myshop.t.onio.in.rh service install 3000 sets it up with systemd on Linux, launchd on macOS or Task Scheduler on Windows. It starts at boot and comes back on its own after a crash.rh runs on Linux, macOS, Windows and FreeBSD, on Intel and ARM, Raspberry Pi included. There are libraries for Go, Node.js and Python. People who already use frp can point their own frpc at us.Free plan, no card. Your first public address takes one command.
rh http 3000 now and claim it later.