Turning on Allow AI assistants to connect lets an AI client you already run, such as Claude Desktop, Claude Code, LM Studio, or Codex, read this portfolio and answer questions about it. The app is the server; the AI is always the client. It is off until you turn it on.
This is one of two doors, and they share everything below. The other is the app's own Assistant page, which needs no client and no connection: it talks to Claude or DeepSeek under an API key you provide, billed per token rather than riding a subscription, or to an OpenAI-compatible model server on your own machine or network (LM Studio, Ollama, and the like), billed to nobody. Both doors read the same data with the same tools and obey the same three permission rows. See Assistant for that one.
How the connection works
On macOS and Linux the app opens a socket file inside a directory that
only your operating-system account can enter. The directory is mode 0700
and the socket is mode 0600, so a different account on the computer
cannot open it. Those modes do not distinguish between programs running
under your account: another same-account process can try to connect. No
network port is opened by this route, and there is no password or token;
the operating-system account boundary is the authentication.
Your client reaches that socket by launching a small connector that ships inside the app and does nothing but pipe your client's input and output to it. The connector runs as the app's own program file, so there is nothing extra to install or update. The panel prints the exact configuration, including the one environment setting it needs, for each of the four clients above; copy it into your client's config file and restart the client.
Since 0.46.0, the Windows app does not start or advertise the named-pipe connector. The shipped runtime does not provide a proved creator-only pipe boundary, so the available Windows route for an external client is the web address below, protected by an access token. Allow AI assistants to connect and Also accept connections at a web address are both off until you turn them on; the separate network switch is off too.
On macOS/Linux, start RangefinderInvest before (or shortly after) your AI client. If the app isn't running when the connector starts, it waits a few seconds and then reports that plainly rather than hanging. A Windows client using the web address also needs the app running, but launches no connector.
If you point a model running on this machine at it, your portfolio never leaves the computer at all. (The app's own Assistant page can talk to one of those servers directly, without a client in between. See Assistant.)
Connecting at a web address instead
A few AI apps can't start a program for themselves and ask for a web address instead. For those there is a second switch, Also accept connections at a web address, off unless you turn it on. It opens a port on this computer, protected by an access token the app generates and shows you. A port has no file permissions to hide behind, so the token is what takes their place.
By itself that port is bound only to this computer's loopback address, so
another device cannot address it. Every local process, including one
running under a different operating-system account, can reach the port at
the TCP layer, but the app refuses every request that does not carry the
access token. It also refuses every request with a web-page Origin
header; this is not a browser endpoint. That is a real difference from the
macOS/Linux socket above and the reason to leave this switch off unless a
client needs it. Treat the token like a password, and use Regenerate if
you ever think it has been seen. Regenerating disconnects every client
using that address until you give each the new token.
Letting other devices reach it
Under that switch is a third one, Allow other devices on your network, also off until you turn it on. It is the only setting in this app that lets another machine reach your portfolio directly, and it is worth knowing exactly what it does before you use it:
- The port becomes reachable from every network this computer is attached to: home wifi, an office network, a café, and any VPN it is connected to at the time. It is not scoped to the one network you had in mind, and if this computer has an address that the internet can reach, the port can be reached from there too. The panel says so when that is the case.
- The connection is not encrypted. Anyone able to see traffic on those networks can read the portfolio content an assistant reads, including balances, holdings, and your plan. They can also read the access token as it goes past, which is all they need to connect themselves.
The app still only answers to its own addresses, still demands the token on every single request, and still refuses anything a web page sends; none of that protects the traffic itself, because plain HTTP has nothing to protect it with.
Once it goes off again, whether you switch it off, close the whole web address, or turn AI connections off altogether, the panel suggests replacing the token with Regenerate. Closing the port ends the exposure but not what it may have already given away: anyone who was watching that network has the token, and it keeps working until it is replaced. The suggestion is only that. The app never replaces it for you, because doing so disconnects every AI app you have set up with it.
The first time it starts this way, your operating system will probably ask about it. On macOS you may see the firewall's "Do you want the application to accept incoming network connections?" Answer Allow, or nothing outside this Mac will get through. On macOS 15 and later you may also get a Local Network permission prompt the first time; if you dismissed it, turn RangefinderInvest back on under System Settings → Privacy & Security → Local Network. On Windows, Defender Firewall may ask which networks to allow. Tick Private networks and leave Public networks unticked. On Linux, if you run a firewall, the port has to be opened there by hand.
When the switch is on, the panel lists the addresses another device can use. If this computer moves to a different network its address changes, and the panel shows the new one. An address you wrote down yesterday may simply stop working.
All three switches are stored with the portfolio, not with the computer, so restoring a backup taken while this one was on brings it back on, regardless of which machine you restore to. That is the one way it can come on without you clicking it, so the app asks whenever a portfolio arrives with this switch already on. This includes a restored backup, a sample, or a database opened from somewhere else. A card appears saying so, with Turn it off beside the choice to leave it as it came. Turning it off is the only thing that writes anything; leaving it changes nothing, because it is already set that way. The card appears for a switch that arrived on but with the two switches above it off, too: nothing is listening in that case, but the row is armed, and turning those back on would open the port with no further question. The badge at the top of the panel says On your network the whole time it is. The access token does not travel with a backup. It belongs to the computer, not to the portfolio, so a restore cannot carry an old token onto another machine.
The safer way in from another machine
If what you actually want is to reach this app from your own laptop
elsewhere, an SSH tunnel does the same job with none of the above. Turn
the network switch off, leave the web-address switch on, and from the
other machine run
ssh -L 42741:127.0.0.1:42741 you@your-computer.
Then point the AI client on that machine at
http://127.0.0.1:42741/mcp, with the same token. The traffic is
encrypted by SSH, the token never crosses the network in the clear, and
this app is still listening only on its own loopback address, so nothing
on the network can reach it even if the tunnel is up.
When the computer running RangefinderInvest is a Mac or Linux host, a client
that speaks stdio can skip the web address entirely and run the POSIX connector
over SSH instead. Use the same command the panel prints there, with
ssh you@your-computer in front of it. Windows does not print a connector
command; since 0.46.0, use the authenticated HTTP tunnel above.
What gets shared
Whatever the assistant reads, it sends to its own AI service in the same way anything else you type into that assistant does. That is the trade the switch makes, and it is why the panel says so on the switch rather than here.
The three rows under What assistants can do are the whole permission set for a connected client and the in-app pane alike. Each row names the exact tools it grants:
- Read portfolio: on whenever the feature is. Accounts, holdings, models, drift, planning assumptions.
- Run projections & previews: Monte Carlo runs, Roth-conversion frontier sweeps, rebalance previews, and historical model backtests. A projection runs your own saved plan. It uses the scenario the Projection page last opened, or one you name, with any changes the assistant is trying stacked on top for that one run; a frontier sweep re-runs that same plan across a grid of conversion ceilings. A backtest replays a model against the price history this app has already downloaded, the same engine the Model Backtest page runs; it fetches nothing, and its dollar figures are historical rather than today's dollars. Compute only: nothing is saved, and your saved scenarios and target models are exactly as you left them afterwards.
- Model proposals: an assistant can draft a target model. Nothing is saved until you approve it here, in the app. See below.
There is no tool that trades, moves money, deletes anything, or edits your holdings, and nothing an assistant does reaches your brokerage. The app has no connection to one. The worst an assistant can produce is a plan you disagree with.
Approving a proposed model
A draft arrives as a card in the app, whichever page you are on. It shows the funds, their target weights, the total, and a quotation of the assistant's own reason for suggesting it. You get two choices:
- Discard throws it away. Nothing is recorded.
- Save as model creates it on the Target Models page, with the assistant named in the model's notes. If it names a fund you don't own yet, saving adds that fund and downloads its details first, so the model's slices come out right.
There is no third option on purpose. A model is a target: saving one never buys, sells or moves anything. Everything else, including assigning it to an account or editing a slice, happens afterwards in the model editor, where you are working from the model rather than from the chat.
The card is the whole approval, and it lives here rather than in the assistant. That is the point: an assistant that had been talked into something by a web page it read still cannot reach this button.
Seeing what it did
Recent activity lists every call, newest first, including the ones your switches refused and the ones the in-app Assistant made (they show as Assistant (in-app)). It lives only in memory, never in your database or its backups, so it clears when the app quits. Above it, each attached client is listed with the door it came in by: through the connector or at the web address. Those are not the same access. On macOS and Linux the connector excludes other operating-system accounts, although another program running under your account can try it. The web address is reachable at the TCP layer by every local account and requires the token; the network switch can widen who is able to try. While a client is attached, a small AI · connected pill sits in the top bar; it turns gold and reads AI · proposal waiting while a draft is still yours to save or discard.
Whichever database is open is the one the tools read. If you are exploring a sample, the assistant is told so on every answer, so demo numbers can't pass for real ones.