Security and privacy

Your trades never become our data.

You provide an exchange key. This page documents every connection, permission and storage boundary before you install anything.

Binance / Bybitread endpointsYour serverJournalPostgresTelegramsign-in and alertsAnthropiconly when you asksigned GETserver install onlyoptional
No vendor backend
There is no NextScalp backend for the Journal. Nothing to send your trades to, nothing to breach.
Read-only exchange access
Trading, transfer and withdrawal permissions are never used, and the setup check warns you if your key has them.
One connection in laptop mode
On a laptop install there is one outbound connection in total: your exchange.

Every connection that leaves your server

This is the complete list. Nothing else is contacted at runtime. Fonts are compiled into the build rather than fetched from a CDN, the framework's own telemetry is switched off in the Dockerfile at both build and run time, and there is no error reporting service and no update ping.

DestinationWhenWhat it carriesLaptop install
fapi.binance.com or api.bybit.comContinuously, to import new fillsSigned read requests. No order or transfer calls.Yes
oauth.telegram.orgOnly while you sign inAn OpenID Connect code exchange. No trade data.Not used
api.telegram.orgOnly when a price alert you created firesYour Telegram id and the alert text: a symbol and a price.Not used
api.anthropic.comOnly when you click an AI actionThe trade or period you selected, sent with your own API key.Optional

The last three are avoidable. Set LOCAL_MODE and the journal runs on your laptop with a loopback sign-in and no Telegram at all - startup validation refuses to boot unless BIND_ADDR really is 127.0.0.1, so that mode cannot accidentally be reachable from the network. Leave ANTHROPIC_API_KEY empty and every AI feature is off, with no request ever made.

What the exchange key is allowed to do

The journal reads closed positions, fills, funding and public market data. That is the whole surface.

PermissionRequired
Read futures trades and fillsYes
Read funding and income historyYes
Place or modify ordersNo
Withdraw fundsNo
Transfer between accountsNo
Read your spot or margin balancesNo

Rather than take that on trust, here is the complete set of exchange endpoints the application can call. Every one of them is a read:

Binance /fapi/v1/userTrades closed fills /fapi/v1/income funding and fees /fapi/v1/exchangeInfo symbol metadata /fapi/v1/premiumIndex mark price /fapi/v1/ticker/* public prices Bybit /v5/execution/list closed fills /v5/position/closed-pnl closed positions /v5/market/* public prices, klines /v5/user/query-api your key's own permissions

That last endpoint exists for one reason: bun run doctor asks your exchange what your key is actually allowed to do and tells you off if the answer is more than reading. On Bybit it reads the key restrictions directly, on Binance it checks the API restriction flags. A key with withdrawal rights will boot and work, and the check will keep telling you it should not have them.

Where each thing lives

DataStored in
Fills, trades and market contextYour Postgres
Journal notes and psychology notesYour Postgres
Chart screenshots you paste inYour Postgres, as bytes in a table
Discipline rules and price alertsYour Postgres
AI analyses and coach reviewsYour Postgres
Exchange keys, database URL, secretsYour server environment, never the database
Your sessionA signed cookie in your browser. There is no session table.
Your licence keyYour installation, plus our purchase record on nextscalp.com

The licence is the one exception, and it is on this website rather than in the product: buying leaves a row with your licence key, e-mail and payment reference so downloads can be unlocked. That record knows nothing about your trading.

What reaches the browser

Sent to your browser

  • The figures rendered on the page you opened
  • Chart data for the symbols on screen
  • Your own notes and screenshots

Never sent to your browser

  • Exchange API key or secret
  • Database connection string
  • Session secret, cron secret, Telegram bot token
  • Anthropic API key

This is enforced, not just intended. The build runs a scan of the compiled client bundles for server secrets and fails if it finds one, and that scan is a step in the Docker build itself - so it runs on your machine when you build your own image, not only on ours.

What NextScalp can and cannot do

Can NextScalp see my trades?

No. There is no NextScalp server for them to reach. Your fills, trades, notes and AI reviews are written to the Postgres database on your own machine, and the application has no code path that sends them anywhere else.

Can NextScalp log into my journal?

No. Sign-in is Telegram OpenID Connect restricted to the Telegram ids you list in ALLOWED_TELEGRAM_IDS, and sessions are signed with a secret you generate. On a laptop install there is no remote sign-in at all.

Can NextScalp restore my database if I lose it?

No, and this is the real cost of self-hosting. There is no copy anywhere else. Backups are yours to take.

Can NextScalp use my exchange key?

No. The key lives in the environment of your own server and is never transmitted anywhere except to your exchange, over the signed read requests the application makes.

Can the journal place a trade or move funds?

No. It never calls an order, transfer or withdrawal endpoint. Every exchange call it makes is a GET against a read endpoint, and bun run doctor warns you if the key you configured carries more permission than that.

Does my trade data go to an AI provider?

Only if you set an Anthropic key and then explicitly ask for an analysis. Leave ANTHROPIC_API_KEY empty and every AI feature is off, with no request ever made. When you do invoke it, the selected trade or period goes from your server straight to Anthropic on your own key, never through NextScalp.

What self-hosting puts on you

Owning your data means owning the problems that come with it. This is the honest half of the trade.

Your responsibility

  • The security of the machine you run it on
  • Backups of your database
  • Keeping your environment file private
  • Creating an exchange key that is genuinely read-only
  • Applying updates when they ship

What we cannot do for you

  • Recover a database you did not back up
  • Reset a password (there are none) or unlock an install
  • See your data to debug it, unless you show it to us
  • Revoke an exchange key on your behalf

Check it for yourself

Before you buy

After you buy

  • Read the source: you get all of it
  • Run bun run doctor to have it audit your key
  • Run bun run verify:bundle to scan the client build
  • Run it in LOCAL_MODE, behind your own firewall
  • Watch its traffic and compare it with the table above

Still not sure?

The demo answers more than any page can. It is the same code, with a realistic few months of trades already in it, and it asks you for nothing.