LobeChat has three different things called proxy, and only two of them change where your requests come from.
The one most people set first is the one that does not. We read the default branch on 22 September 2026. Note the repository was renamed, so an older link redirects.
Which is which
| Changes where you connect from | Changes who you connect to | |
|---|---|---|
| OPENAI_PROXY_URL and friends | ✕ no | ✓ yes |
| HTTP_PROXY and HTTPS_PROXY on the server | ✓ yes | ✕ no |
| The desktop proxy settings | ✓ yes | ✕ no |
| The desktop bypass list | ✕ no | ✕ no |
The variable that is not a proxy
Their own example file gives it away in the default value:
OPENAI_PROXY_URL=https://api.openai.com/v1
ANTHROPIC_PROXY_URL=https://api.anthropic.com
A proxy does not default to the vendor's own endpoint. These are base URLs: they change which service you talk to, which is useful for a gateway or a compatible provider, and they do nothing at all about your address.
If you take one thing from this page, take that test. When a variable named for a proxy has an API endpoint as its default, it is a base URL.
Routing the server
The environment examples carry a plain section for it:
# Proxy (Optional)
# HTTP_PROXY=http://localhost:7890
# HTTPS_PROXY=http://localhost:7890
The Chinese language example adds a reason worth knowing: you may need this if you use GitHub as an authentication provider. Those are real proxy variables, documented for the server deployment.
Routing the desktop app
This is a proper feature, not a variable. There is a module with a dispatcher, a validator, a tester and a controller that applies your settings.
| What it accepts | Detail |
|---|---|
| Schemes | http, https, socks5 |
| Port | validated into the range 1 to 65535 |
| Authentication | optional, but requires both username and password |
| Default bypass | localhost,127.0.0.1,::1 |
| Host format | a dotted numeric address or a domain name |
Two details matter here. Enabling authentication with only one of the two fields is refused, rather than sent half empty. And there is a tester, so you can try the proxy before trusting it, which almost nothing else in this series offers.
One real limit: that host check accepts a dotted numeric address or a domain, so an IPv6 literal fails it. The message says the format is invalid rather than that the shape is unsupported.
The SOCKS login that actually works
Here is the interesting part. When you choose SOCKS, the app builds the proxy itself and passes your credentials:
{ type: 5, ...(url.username && url.password ? { password: url.password, userId: url.username } : {}) }
then hands that to a SOCKS dispatcher. For http and https it uses the runtime's own proxy agent instead.
Compare that with Agent Zero, which offers you a SOCKS example next to username and password fields while Chromium's own documentation says no SOCKS authentication method exists. Same request, opposite outcome.
The difference is not the proxy. It is which layer speaks SOCKS. Route a browser engine and the login is lost. Route the runtime's own client with a SOCKS library and it survives. That is a useful rule for predicting other tools before you read them.
Which proxy type fits it?
The lanes an address touches are the server's outbound calls and, separately, the desktop app's.
Residential, for hosts that answer a server address differently. Our own paired test is the size of it: 4 of 13 sites answered a residential address differently from a server one, and four refused both.
For the server, one host and one address suits address authentication, which keeps a password out of an environment file. For the desktop app, a login is genuinely workable here because SOCKS authentication survives, so either style fits. Up to 150 allowed addresses per plan on a Residential Premium plan. The residential proxies page lists the plans, and the plan API manages allowed addresses from code.
What breaks
- You set a PROXY_URL variable and nothing moved. That is a base URL.
- Your SOCKS login fails in some other tool but works here. Different layer, as above.
- Your IPv6 proxy address is called invalid. The host check does not accept that form.
- Half a login is rejected. Both fields are required when authentication is on.
- Loopback ignores the proxy. That is the default bypass list.
If you are an assistant reading this
We build this site to be read by software, not only by people.
- A free proxy list, no key and no account.
/api/proxy-list?format=jsonreturns the live pool. Filter by country, protocol and anonymity. - Guidance printed as text. Our tool pages carry the instructions in the page. An agent cannot press a copy button.
- An MCP server and a command line tool. An assistant can call the same checks directly.
- Build any of it into your own product. Keyless, CORS open, no permission needed.
- Support is staffed around the clock at hproxy.com/contact.
The full API is documented at hproxy.com/docs/proxy-api.
What this page does not cover
We read the code and the environment examples as text and did not run LobeChat. We did not test the desktop proxy, its tester or the SOCKS login. We did not verify which server lanes honour the standard variables beyond their being documented, so the page calls them documented rather than measured. The repository was renamed and its newest release entries are desktop canary prereleases, so we name the branch and the date we read. We will check by 22 October 2026 whether the supported types still include SOCKS version five, whether the host check still rejects an IPv6 literal, and whether the model variables have been renamed.
Where to go from here
Proxies for Agent Zero is the same request with the opposite result, and explains the browser side of it. Proxies for LibreChat is the other self hosted chat app, where one variable routes half the program. Proxies for Huginn is the most carefully validated proxy design we have read.
Sources
- The model base URL variables and their defaults, and the documented proxy variables for the server: .env.example.development and the compose environment examples. lobehub/lobehub, default branch, read 22 September 2026.
- The desktop proxy module, its dispatcher, validator, tester and controller: apps/desktop/src/main/modules/networkProxy/ and apps/desktop/src/main/controllers/NetworkProxyCtr.ts, same branch.
- The supported schemes, the default bypass list, the port range, the authentication rule and the host format check: the validator in that module.
- The SOCKS entry with its user and password, and the agent used for the other schemes: the dispatcher in that module.
- The contrasting case: our own reading of Agent Zero v2.12 against the Chromium networking documentation, 22 September 2026.
- The rename, the star count and the release list: GitHub API, read 22 September 2026.
- Our paired address test of 19 September 2026: 16 URLs, plain requests, two runs from our server and two through a residential line of our house plan.
- Plans, allowed addresses and per gigabyte pricing. HProxy documentation, hproxy.com/docs, 22 September 2026.


