remotehost

Docs

Start a tunnel in three steps, run it with your own frpc, or drive everything from the API or an AI assistant.

Install · rh commands · Plain frpc · Names · Access rules · Warning page · Limits · API · MCP

Install

Linux and macOS:

curl -fsSL https://remotehost.bitgeek.in/install.sh | sh

The script puts rh in ~/.local/bin (or /usr/local/bin as root). Windows and manual downloads:

Checksums: SHA256SUMS. On first run rh downloads the official frp client frpc 0.71.1 from GitHub into ~/.remotehost/ and checks it against SHA-256 sums built into rh.

rh commands

rh login <token>          # token from the dashboard; saved in ~/.remotehost/config.json
rh http 3000               # tunnel to http://127.0.0.1:3000 on a random name
rh http 192.168.1.20:8123  # any host:port your machine can reach
rh http 3000 --name myapp  # a name you reserved (paid plans)
rh status                  # account, plan and usage
rh version

rh http keeps running and reconnects by itself. Stop it with Ctrl-C. A random name stays yours for 10 minutes after the tunnel stops, so a restart keeps the same URL.

Plain frpc

remotehost is a standard frp server. If you already run frpc (0.52 or newer), get a name with the API (POST /api/v1/names) or from rh http, then use this config:

serverAddr = "connect.t.onio.in"
serverPort = 443
auth.token = "remotehost"
user = "<your account id>"
metadatas.token = "<your rh_ token>"
transport.protocol = "wss"
transport.heartbeatInterval = 30
transport.heartbeatTimeout = 90
loginFailExit = false

[[proxies]]
name = "web"
type = "http"
localIP = "127.0.0.1"
localPort = 3000
subdomain = "<your name>"

auth.token is the same for everyone; your rh_ token is what signs you in. Only type = "http" works for now. The dashboard shows your account id; GET /api/v1/client-config?name=<name>&local=3000 returns this file filled in.

Names

Every tunnel is https://<name>.t.onio.in.

Access rules

Paid plans can protect a name with basic auth (user + password) and an IP allowlist (IPs or CIDR ranges). Set them in the dashboard or with PUT /api/v1/names/<name>/rules. remotehost checks them before a request reaches your machine.

Warning page (Free)

On Free, the first time a browser opens your tunnel it sees a short page saying the site runs through remotehost, with a Continue button (remembered for 7 days). This keeps phishing off t.onio.in. It never shows for:

Limits

FreeProTeam
Tunnels online at once1525
Reserved names0320
Bandwidth per period1 GB100 GB500 GB
Session length2 hoursUnlimitedUnlimited
Warning page for first-time visitorsYesNoNo
Basic auth and IP allowlistsNoYesYes
Custom domains015
Seats1110

Bandwidth counts bytes in and out. When it runs out, new tunnels are refused and visitors see a notice until the period resets. Free periods are calendar months (UTC).

API

Base URL https://remotehost.bitgeek.in/api/v1. Send Authorization: Bearer rh_…. Errors are {"detail": "…"} with a 4xx status.

CallWhat it does
GET /meAccount, plan limits, usage, and the frp settings for your client.
GET /namesYour names with their access rules.
POST /names {"name"?}Get a name to start a tunnel on: one of yours, else a new random one.
POST /names/reserve {"name"}Reserve a name (paid).
PUT /names/<name>/rules{"basic_user", "basic_password", "allow_cidrs": []}; null turns one off.
DELETE /names/<name>Release a name.
GET /tunnelsOnline tunnels and those of the last 24 hours, with traffic.
GET /client-config?name=&local=A filled-in frpc.toml.
GET /tokens, POST /tokens, DELETE /tokens/<id>API tokens. A new token is shown once.
curl -s -H "Authorization: Bearer $RH_TOKEN" -X POST https://remotehost.bitgeek.in/api/v1/names

MCP

MCP server (Streamable HTTP, JSON responses) at https://remotehost.bitgeek.in/mcp with Authorization: Bearer rh_…. Tools: account_status, list_names, get_name, reserve_name, release_name, set_access_rules, list_tunnels, client_config, list_tokens, create_token, revoke_token. Claude Code:

claude mcp add --transport http remotehost https://remotehost.bitgeek.in/mcp --header "Authorization: Bearer $RH_TOKEN"

About

remotehost runs the frp server and uses the unmodified frp client, both under the Apache License 2.0. The frp project does not endorse remotehost. Report abuse at /report.