# Local files and network traffic

Backtests run on your computer against local files, with no broker connection or cloud queue. The application still makes the network requests listed below.

## Platform status

Status on 2026-10-18, for version 0.2.4 of the desktop app on Windows.

- Windows: Windows 10 or 11 on x64; a per-user NSIS installer from your account, with no administrator prompt and no code signature yet ([install guide](https://stochastly.com/docs/install))
- macOS: Apple silicon Macs with macOS 13.1 or later; the .dmg in your account is two releases behind Windows; it carries a Developer ID signature and was notarised by Apple on 2026-10-16 ([install guide](https://stochastly.com/docs/install))
- Linux: no build and no roadmap direction

## Declared remote host

Each destination below is a host found by static analysis of 105 Python modules. The list is regenerated from the package, so a newly referenced host changes the published result.

- api.tiingo.com: Declared destination: eod_connector.py:45
- stochastly.com: Declared destination: api.py:1367, api.py:1369, license.py:41, license.py:42, research_sharing.py:43, research_sharing.py:44
- 127.0.0.1 (loopback): Stays on this machine: api.py:355, sidecar.py:523
- Built while running: 7 URL(s) cannot be resolved by static analysis: api.py:2468, app_update.py:103, eod_connector.py:161, license.py:545, license.py:715, license.py:802, research_sharing.py:350

No outbound request reads a result file or a bar file in order to send it, and a run emits no telemetry unless you tick one of the two optional data-sharing boxes on the sign-in screen; both start unticked, neither sends a bar file, and the privacy page lists their exact fields. What travels from a result is what the assistant quotes when you ask it to read one, described in the next section.

## The assistant sends your prompt to a relay

The assistant shipped with the app answers through a relay (https://stochastly.com/api/assistant): the text you type leaves the machine. When you ask it to read a run, what it quotes from that run — figures from your results, node names from your graph — travels in the next request of that same conversation. Your bar files and your result files are not uploaded; what the assistant reads out of them, in the turn where you ask, is.

There is one assistant, and it is hosted. The setting that governs it is a single checkbox — the assistant is shown or it is not — and the label beside it in the app states that the conversation leaves the machine. No screen in the interface selects a model that runs on your own hardware.

[Screenshot: The current app exposes the assistant connection and local data settings separately from the local research engine.](https://stochastly.com/screenshots-current/product-local--control-the-assistant-connection.png)

The current app exposes the assistant connection and local data settings separately from the local research engine.

## An external model server is refused unless it is on this machine

An assistant endpoint supplied by a caller is validated before the engine fetches it: the scheme has to be http(s) and the host has to be loopback (http://127.0.0.1:11434 by default). A host outside that set is refused by name unless you allow it yourself. A local binary that fetches any URL a caller hands it is a fetch service running under your account, which is the failure this check exists for.

## What this count does not cover

Static analysis reads hosts declared in the package. 7 call sites build their URL while running and are counted without a name; the last row of the list above gives each one by file and line. The licence client is among them, and its host is declared in the package and listed above.

No import reaches a host through a third-party library: no download library ships with the engine, so no destination is decided outside this code.

The desktop front reaches the engine over loopback, and is out of this count. Every destination listed above is an ordinary HTTPS request from a process running under your account: a network monitor records it, so the count above is checkable on your own machine.

## Measured engine performance

66,000 bar-configuration evaluations per second. Median first-run throughput on an Intel Core i9-12900K, 64 GB RAM, Windows 11, one worker.

EMA crossover on 52,565 hourly BTCUSDT bars across 12 configurations. Three fresh engine processes completed the workload in 14.28 s, 8.90 s and 9.52 s. The measured median is 66,238, rounded down for the headline.

Throughput = source bars × evaluated configurations ÷ elapsed time. Timing includes run orchestration and result retrieval, and excludes process startup. Cached repeats are excluded. Performance varies with strategy, data and hardware.

Measured on 21 September 2026 using the packaged engine, build 6d2870fd. [Method, timings & build fingerprint](https://stochastly.com/engine-benchmark.json).

## What the machine sends, and what stays

The engine is a binary on your disk. Your bars, your graphs and your run output are written there and read from there, and the outbound channels the source declares are the ones listed above.

[Privacy policy →](https://stochastly.com/privacy)

[Screenshot: A real local BTCUSDT data folder indexed in the current app. Files are read in place without an upload.](https://stochastly.com/screenshots-current/product-local--local-data-import.png)

A real local BTCUSDT data folder indexed in the current app. Files are read in place without an upload.

---
Source: https://stochastly.com/product/local
