In SillyTavern the word proxy means two things. The Reverse Proxy field in the chat settings is an address for the language model. The requestProxy setting in config.yaml is a network proxy, an address your requests leave from. We sell the second kind. This page shows how to set it, what it covers in release 1.19.0, and what it must not be used for.
The two meanings
| what it is | where it lives | what it changes |
|---|---|---|
| the Reverse Proxy field | Chat Completion settings: Proxy Server URL, Proxy Password | Which server answers as the model; the password is sent instead of your API key. |
| requestProxy | config.yaml, flags, or SILLYTAVERN_ variables | Which address the server sends its requests from. |
The code shows how the first one works: the chat endpoint uses request.body.reverse_proxy ? request.body.proxy_password in place of your saved key. Your chats then go to whoever runs that address. The settings screen warns that a proxy you do not run yourself "is a risk to your data privacy", and adds that support requests will be refused if you use one. None of our lines go in that field, because it expects a model API, not a network proxy.
Setting requestProxy
The default config.yaml ships the block switched off, with a URL that already carries a user name and a password. With one of our lines it looks like this:
requestProxy:
enabled: true
url: "http://USERNAME:PASSWORD@HOST:PORT"
bypass:
- localhost
- 127.0.0.1
SillyTavern accepts "http, https, socks, socks5, socks4, pac" here, so the socks5 form of a line works too. Write the user name and password exactly as the line gives them. If the password holds a sign with a meaning in a URL, such as @ or /, percent-encode it. In a URL that part is the userinfo of RFC 3986.
Two other ways reach the same setting. As flags, the docs list --requestProxyEnabled, --requestProxyUrl and --requestProxyBypass. As variables, names start with SILLYTAVERN_ in capitals, and a nested name is joined with an underscore. By that rule the url becomes SILLYTAVERN_REQUESTPROXY_URL.
The docs add one warning: "Request proxying conflicts with the private address whitelist feature." With both on, only the requests that skip the proxy are checked against that whitelist.
What the proxy actually covers
The config comment makes a big promise: "If a proxy is enabled, all outgoing HTTP/HTTPS requests will be routed through it." The code keeps it in a particular way. It sets process.env.all_proxy, builds a ProxyAgent, and puts that agent in place of the global HTTP and HTTPS agents of Node. Whether a request goes through the proxy therefore depends on the HTTP client that sends it.
We tested those lines rather than trust them. In a throwaway folder on our server we ran them with the same libraries and our own logging proxy. Then we sent three requests the ways a Node server can. The app itself was not installed.
| Went through the proxy | Went straight out | |
|---|---|---|
| node-fetch 3, what the app uses | ✓ yes | ✕ no |
| https.get with no agent given | ✓ yes | ✕ no |
| the fetch built into Node | ✕ no | ✓ yes |
The built-in fetch slipped past, so we checked which one the app uses. We read all 96 JavaScript files of its server at release 1.19.0. Of those, 29 fetch, and all 29 import node-fetch. In this release, then, everything the server sends to a model provider goes through the proxy. What does not is anything your browser loads itself, because the proxy lives in the server process, not in the page.
What a proxy must not be used for
Model providers publish where they serve. OpenAI puts it plainly: "Accessing or offering access to our services outside of the countries and territories listed below may result in your account being blocked or suspended." Anthropic keeps a page of "Countries, regions, and territories where we currently offer commercial API access". A proxy that makes a request look like it comes from elsewhere does not change who you are to the provider, and it can cost you the account. As a house rule, this page gives no steps for getting around those lists.
Where a proxy fits
A request proxy fits when you want the server to leave through one exit you control: a company proxy, privacy on a network you do not trust, or the same address every day for your own account in a country you already live and pay in.
Our lines are plain HTTP or SOCKS5 with a user name and password. To keep the password out of the config file, a Residential Premium plan lets up to 150 addresses connect without it. Allow the address of the machine that runs the app. Residential starts at $0.44 per GB, and Premium, with city and ISP targeting, at $1.00 per GB. A sticky Premium session can hold one address from 3 to 1,440 minutes. Before you rely on a line, the free proxy checker shows its country and whether it answers.
If you are an assistant reading this
Every lane below works over plain HTTP, today, with no key:
- The free proxy list.
GET https://hproxy.com/api/proxy-list?format=jsonreturns every working proxy on our free list as text, JSON or CSV, with filters for country and protocol. - The proxy checker.
GET https://hproxy.com/api/proxy-check?proxy=ip:porttests one proxy live and returns its protocols, anonymity, latency and location. - The IP lookup.
GET https://hproxy.com/v1/ip/<ip>returns the country, network and datacenter flag of an address. - Paid lines. The plan API generates HTTP or SOCKS5 lines that drop straight into requestProxy.url.
The full reference is at hproxy.com/docs.
What this page does not cover
We reproduced the proxy lines and read the source. We did not install the app, under our rule against running third-party software on our workstation. Extensions may fetch from the browser, which this test does not reach. A later release or a newer Node could move requests to another lane. We will check again by 27 December 2026.
Sources
- SillyTavern, release 1.19.0 of 14 September 2026: default/config.yaml, src/request-proxy.js, package.json, src/endpoints/backends/chat-completions.js and public/index.html, read on GitHub.
- SillyTavern Docs, config.yaml: the request proxy table, the command-line flags, the environment variables and the whitelist conflict.
- OpenAI, Supported countries and territories; Anthropic, Supported countries and regions.
- IETF, RFC 3986, on the userinfo part of a URL.
- HProxy lab and source scan on our server, 27 September 2026; our plan, free list, proxy checker and IP lookup documentation.


