binse

SECURITY · Binse · V2026.9.16.3

What leaves your machine, and what does not.

Binse is one process on your own computer. This page maps every network path into it and out of it, prints the licence calls it makes and the fields each one carries, and then lists the things we are not in a position to claim.

Everything below was read from the shipped source, or measured on a live install, and each part says which. The licensing sections were read from the source of version 2026.9.16.3 and run on 13 September 2026. The rest was measured against version 2026.9.10 on 11 September 2026. Each claim names the file it came from, so your own people can check it against the copy on your own disk once it is installed.

01 · THE NETWORK MAP

One process, on the loopback address.

Data Flow, Dashboards, Diagrams and scheduled runs are pages in a browser, and so is Explore in Binse Enterprise. They talk to one Python process on the same machine, and that process binds the loopback address 127.0.0.1:8767.

The network map of a Binse installation A boundary labelled YOUR MACHINE contains Data Flow, Dashboards, Diagrams and Scheduled runs, and Explore, which is part of Binse Enterprise. All of them are pages in a browser, and all of them talk to one local process on 127.0.0.1 port 8767, and that process reads and writes your files in your Documents folder. Three dashed lines cross the boundary. The first is the licence check: it goes to api.lemonsqueezy.com when a Lemon Squeezy licence key is entered and about once a week after that, or to activate.binse.app for a key from the key bank. The second goes to your own warehouse or database, when you press Run. The third exists only in Binse Enterprise and only once somebody turns it on: a collaboration relay your own organisation runs, for sharing a diagram live, and an AI service reached with a key that person entered, for the assistant in Diagrams. Nothing else leaves the boundary. YOUR MACHINE Data Flow Dashboards Diagrams Scheduled runs Explore ENTERPRISE PAGES IN YOUR BROWSER ONE LOCAL PROCESS 127.0.0.1:8767 YOUR FILES Documents folder api.lemonsqueezy.com or activate.binse.app LICENCE KEY: ON ENTRY, THEN WEEKLY your warehouse or database WHEN YOU PRESS RUN a relay your own people run or an AI service, your key DIAGRAMS, ENTERPRISE, IF TURNED ON SOLID LINES STAY ON THIS MACHINE. DASHED LINES LEAVE IT.

That is the whole map. The pages are served by the local process, the local process reads and writes files in your Documents folder, and three dashed lines cross the boundary. One of them is the licence check, and it carries a key and a computer code. One is yours and goes wherever you pointed it. The third is off in Binse, and in Binse Enterprise it is off until somebody turns it on: the two Diagrams features that need a network, live collaboration and the AI assistant, are section seven.

  • No third-party analytics, telemetry or crash-reporting SDK anywhere in the shipped code.
  • Two internet hosts in the licence code, api.lemonsqueezy.com for a Lemon Squeezy licence key and activate.binse.app for a key from the key bank, and no other host of its own.
  • Diagrams is a local canvas like the other two. A diagram is a file in your Documents folder, its shape libraries, icon packs and templates are in the program folder, and drawing, importing, exporting and printing one reach no network at all.
  • A licence file is checked offline against a public key the app carries. The app cannot issue one.
  • A password typed into a connection is held in memory for that run and is not written to disk.
  • A per-user install: no administrator rights, no Windows service, nothing machine-wide.
  • And the one that would otherwise be your first question: point Binse at a warehouse and your SQL goes to that warehouse.

THE OBVIOUS THING, SAID FIRST

Binse adds no cloud of its own, and it does not remove yours. A database connector runs your query against your server. The Download tool on the Data Flow canvas fetches the address you typed into it. In Binse Enterprise, Explore compiles a statement and sends it to the connection you chose. Those requests go where you pointed them, under your own credentials, and nothing of ours sits in the middle of them.

02 · TELEMETRY

Nothing counts you.

Thirty named analytics, product-analytics and crash-reporting vendors, plus the words telemetry, crash report and phone home, were searched for across every shipped Python package and the React source of Data Flow, Dashboards and Explore.

That is 595 files, swept on 13 September 2026. One line came back, and it is the list of search keywords on a funnel chart, so that somebody hunting for a conversion funnel can find it by typing the name of a product they already use.

Diagrams joined the product after that sweep and has not been through it, so this page does not claim the sweep covers it. What its two networked features send, and the fact that both are Binse Enterprise and both are off until somebody turns them on, is section seven, read from the product's own source and engineering notes rather than from a sweep. Running the sweep again over all of it is on the list before the first sale.

There is no beacon to a vendor, no crash uploader and no usage counter. There is a licence check that goes online, and section three prints all of it: a licence key is confirmed with the service that issued it about once a week, in the background, carrying the key and a computer code and nothing about your work.

Two local behaviours are worth naming, because any sweep of this kind finds them and it is better to hear them from us. Each of the app's pages calls navigator.sendBeacon on /api/bye when the window closes, which tells the local process that its window has gone so that it can exit; that request goes to 127.0.0.1:8767 and no further. And two of the product's own pages still fetch a web font from an outside font host, which is a real defect and is limit 04 below.

03 · THE LICENCE CALLS

A key and a computer code, and nothing about your work.

One box on the licence screen takes a licence key and works out which kind it is. Each kind talks to one host. The requests are built in the app, on your machine, and this is the whole of them.

binse-data-analysis/binseda/licence.py, version 2026.9.16.3

LS_API          https://api.lemonsqueezy.com/v1/licenses
ACTIVATION_URL  https://activate.binse.app/v1

a Lemon Squeezy licence key
  activate     license_key, instance_name     when the key is entered
  validate     license_key, instance_id       in the background, once the last
                                              confirmation is 7 days old
  deactivate   license_key, instance_id       Release this computer

a key from the key bank, BINSE-XXXX-XXXX-XXXX
  activate     order_key, machine, product,   when the key is entered, then again
               app_version                    once the licence is 7 days old
  deactivate   order_key, machine             Release this computer

every request  Accept, User-Agent: Binse/<version>

Read from the shipped source, and run with the network call recorded rather than sent, on 13 September 2026. The copy in Dashboards is byte-identical.

A Lemon Squeezy licence key is the key Lemon Squeezy makes at checkout and sends with the receipt. The app activates it with Lemon Squeezy directly, with no server of ours in the path. It sends the key and an instance name, which is the computer code, and keeps a small record of the activation on your disk, sealed with Windows DPAPI to your Windows account on that computer so that it cannot be copied elsewhere or edited.

After that the app confirms the key in the background once the last confirmation is more than 7 days old, at most one attempt an hour, and only while the app is in use. The unattended runner behind scheduled runs never starts one. A network failure changes nothing. Offline, the app keeps working for 30 days after the last confirmation and then asks for a connection. A clear answer from Lemon Squeezy that the key has expired or been disabled locks the app at that check.

A key from the key bank is for a shop that hands out keys from a list rather than making its own. It is exchanged with our activation service at activate.binse.app for a signed licence that lasts 35 days and is renewed silently once it is a week old. That request carries four fields: the key, the computer code, the product name and the app version.

The computer code is a one-way hash of the Windows machine identifier, cut to twelve characters and written as BIN-XXXX-XXXX-XXXX. It cannot be turned back into the identifier, and renaming the PC or signing in under a different Windows account does not change it. No name, no email address, no file name, no workspace and no row count is in any of these requests. The other end sees the internet address a request came from, as any server does. How many computers a key covers is on the price page.

A licence file issued by hand, the third route, needs no network at all. It is checked against the public key on your own disk.

WHAT THIS SECTION IS NOT

This is read from the shipped source and run with a recorder in place of the network. No request from this product has reached Lemon Squeezy's licence service, because the store is not open, and the service at activate.binse.app is not deployed.

04 · THE LICENCE

The app can check a licence. It cannot make one.

The app carries a thirty-two byte public key and a signature verifier written in plain Python, so it needs no cryptography package at all.

The signature scheme is Ed25519. The app can verify that a licence document was signed by the issuer's private key, and that is the whole of what it can do. Change one word in a licence file and the check fails. Ask the app to produce a licence and it cannot, because the function that makes one takes a secret key as its first argument, and there is none in the shipped code, none in the installed payload and none in the repository.

What that buys you is narrow, and worth stating narrowly. A copy of the app in anybody's hands cannot issue licences to other people. It does not make the app tamper proof, and limit 06 below says so.

05 · CREDENTIALS

A password is held for the run, then it is gone.

A saved connection stores a connection string and nothing else. If that string carries a plain password, the store refuses it and says so on screen.

The refusal covers ODBC strings as well as URLs, because skipping those is how a password reaches a disk. The password itself is typed when you connect, held in a dictionary in the running process, and shared across the app so that a connection opened in Dashboards is usable from a flow without retyping it. Stop the engine and it is gone. Messages from a failed connection are redacted before they are shown, because a failed connection string is the most likely thing to be carrying one.

Read from binsecore/sources.py and binsecore/api.py on 11 September 2026.

The alternative the product offers is a placeholder in the connection string, filled from an environment variable at query time. That is a real improvement on a password in a file, and it is not magic: an environment variable you set is stored by Windows for your account and can be read by anything running as you. Binse creates no credential store of its own, and so has none to lose.

For a warehouse the same rule holds in a different shape. With no credentials in the connection string, Binse asks the driver for the machine's default credentials, which means the query runs as the person already signed in, and the warehouse's own access control decides what may be read. Binse writes no key.

06 · WHAT THE INSTALLER TOUCHES

Per-user install. Nothing machine-wide.

The installer asks Windows for the lowest privileges it offers and installs into your own AppData folder.

Its entire registry section is under HKEY_CURRENT_USER: four values registering the link an open page uses to restart the engine without opening a second window, and a short block that associates the two diagram file types with Diagrams, so that double-clicking one opens it. Both are per-user, both are removed by the uninstaller, and an association you set yourself is left where you set it. On a live install, with the engine running, there is no key under HKEY_LOCAL_MACHINE belonging to Binse, no Windows service, no startup entry and no scheduled task.

For the people who have to approve it: there is no administrator prompt to grant, no service account to create, no stored password, no group policy object, and nothing added to the machine for other users of it. Removing the product is the ordinary per-user uninstall, and your own work stays where it is, in Documents. The install page walks through all of that, including the SmartScreen warning on first run.

Scheduled runs use the Task Scheduler that Windows already ships, under your own account, which is why they run only while you are signed in. That limit, and what it costs, is set out on the scheduled runs page.

07 · YOUR DATA, AND WHERE IT GOES

Your SQL goes to your warehouse.

In Binse Enterprise, Explore shows you the compiled statement and the connection it will use before anything is sent, and then sends it to that connection, under your identity rather than a service account of ours.

The claim is that Binse never creates or stores a key of its own, and that its default is your own identity. We are not claiming a service account is impossible: somebody can name a key file in a connection string, and the driver will then use it. Nor has a live warehouse project answered a query for that receipt, which is why the caveat is attached to it.

Files behave the same way. A workflow reads the files you point it at and writes the files you tell it to write, in your Documents folder. Nothing is uploaded for processing, because there is nowhere to upload it to.

An exported dashboard is one HTML file that opens on a machine with nothing installed. It contacts no third party and no host except the one the file was opened from. It is not silent, though, and the receipt exists to say so: the viewer still carries the application's engine poller, so it asks its own origin for two endpoints that answer nothing on an ordinary web server, and the dashboard renders in full regardless. That poller is dead code in the viewer and is on the list to come out.

Diagrams is local, and two things in it are not

A diagram is a file in your Documents folder. The shape libraries, the icon packs, the templates and the fonts it draws from are installed with the product, so drawing, importing, exporting and printing reach no network at all, and a diagram bound to data reads that data the way a workflow does, from the source you pointed it at. Two features are the exception. Both are Binse Enterprise, both are off until somebody turns them on, and neither exists in Binse: live collaboration, and the AI assistant.

Live collaboration goes to a relay your organisation runs

Sharing a diagram live works through a relay server, and there is none of ours to sign up to. It ships as a zip of its own beside the Enterprise installer, and a machine in your organisation runs it, with your certificate, your identity provider deciding who may join a room, and your backups. Until an address is configured and somebody opens a shared room, Diagrams connects to no relay. Inside a room, what goes to it is the diagram's changes, who is present, the comments and the version history, and it goes to that server of yours rather than to us. A room can be end-to-end encrypted, and then the relay forwards ciphertext and cannot read the diagram.

The assistant talks to an AI service only when somebody gives it a key

In Binse there is no assistant: no panel, no command and no route that answers. In Binse Enterprise it stays silent until a person enters a key of their own for an AI service in its settings. After that, each instruction sends that service the outline of the page you are on, which is the text, the kinds and the connections of its shapes, the names of the pages, what you have selected, and what you type or paste in. While it works it can read more of the same diagram. It is never sent the files on your computer, your other diagrams, the pictures inside the diagram, or anything outside the document, and the settings panel prints that list.

The key is entered once, kept on that computer for your Windows account, and never handed back to the browser or written to a log. No key or address in the environment is used, only one a person saved, and only against the service's own address. An organisation that would rather not hand keys out can point the assistant at a gateway it runs itself, with a token its administrator issues, and see the usage on its own side. Usage is also counted on the machine, and a monthly spend cap stops the requests when it is reached.

Neither of those two has been measured for this site. The paragraphs above were read from the product's source and its engineering notes, and no request from an installed copy to a live relay or a live AI service has been captured for a receipt.

What we hold about you when you buy, and what our payment provider holds, is a separate matter, and it is set out in the privacy notice.

08 · WHAT WE DO NOT CLAIM

What we do not claim.

Set in the same typeface, at the same size, in the same page as the rest of it. If one of these is a dealbreaker for your organisation, better now than after a purchase order.

01

There has been no audit and no certification.

No third party has reviewed this code. There is no ISO 27001, no SOC 2 and no Cyber Essentials certificate, and no assessment of any kind has been carried out by anybody other than the person who wrote the product. What is offered instead is the commands, the files and the raw output, so that your own people can check the claims rather than take them.

02

There has been no penetration test.

Nobody has attacked the local engine, the exported viewer or the activation service on purpose. The design decisions on this page are written down so that they can be judged on their merits. They have not been tested by an adversary.

03

The installer is not code signed.

Windows SmartScreen warns the first time it runs, and the publisher shows as unknown. The install page publishes a checksum for the file we build, and until there is a certificate that checksum is the check that exists. A code-signing certificate is a cost rather than a technical obstacle, and saying so is more use to you than a promise about a date.

04

Two of the product's own pages fetch a web font from an outside host.

The home page pulls a stylesheet, and the Data Flow canvas pulls a stylesheet and then a font file, on first paint, before anybody has done anything. No data of yours is involved and it is not telemetry, but a request to a third party is a request to a third party, and this is a product sold on staying put. The fix is to self-host both faces, which is what this website does.

05

The local engine has nothing in front of it.

It binds the loopback address and answers whatever asks it, and there is no token or password between a local caller and the app. On a single-user desktop that is a deliberate trade for a product with no accounts in it. On a machine several people sign in to, or one where you do not trust what else is running as you, it is worth knowing before you install.

06

A public key inside a shipped application is not tamper proofing.

Anybody with the installed files can edit the check out of them, and that is true of every offline licence in every desktop product. The design accepts it. The private half of the pair is at present a file the issuer holds rather than a key inside a managed vault, and moving it into one is on the list before the first sale.

07

The licence calls have not been made against a live service.

The store is not open, so no Lemon Squeezy licence key has been activated from this product, and the service at activate.binse.app is not deployed. What section three prints is read source run against a recorder rather than a captured request, and the purchase path has not been rehearsed from end to end. The store and product a key is checked against are not yet set in the app, and have to be before the first sale. When the path has been rehearsed, this page will say so and will keep its date.

08

All of this was measured on one machine, on one day.

Windows 11 Pro, one laptop, on 11 September 2026 against version 2026.9.10 and on 13 September 2026 against version 2026.9.16.3. Nothing here is a statement about other Windows versions, other hardware, other networks or a locked-down corporate build, because none of those were tested. The commands are published so that a machine of yours can answer the same questions for itself.

09 · SPECIFICATION

The claim, the figure, the method.

The engine's address
127.0.0.1:8767, loopback
read from paths.py, then netstat on a live install
Third-party analytics, telemetry or crash SDKs
none
a regex sweep for thirty vendors across the shipped source
Internet hosts in the licence code
two, api.lemonsqueezy.com and activate.binse.app
the same sweep, plus the constants in licence.py
Fields sent for a Lemon Squeezy licence key
the key, and the computer code as instance name
licence.py run with its network call recorded, printed in section three
How often a key is confirmed
weekly, and 30 days offline allowed
REVALIDATE_AFTER_DAYS and OFFLINE_GRACE_DAYS in licence.py
Fields sent for a key from the key bank
the key, computer code, product, app version
the same run, printed in section three
How a licence file is checked
Ed25519 signature, public key only
the shipped verifier, run against a real licence and an altered one
Passwords written to disk
none
read from binsecore/sources.py and binsecore/api.py
Machine-wide registry keys, services, administrator prompts
none
the installer script, and a live install inspected
Identity a warehouse query runs under
yours, by default
the connection path, and the tests that pin it
An exported dashboard
no third party, no host but its own origin
served with the engine unreachable, and the browser's own resource timing read back
What Diagrams sends on its own
nothing past the local process
read from the Diagrams engine and its editor, not from the telemetry sweep, which predates it
Live collaboration in Diagrams
a relay your organisation runs, Enterprise only
no connection until an address is configured and a room is opened; an encrypted room sends the relay ciphertext
The AI assistant in Diagrams
an AI service, Enterprise only, with a key somebody entered
the outline of the page, the page names, the selection, and what you type; no other file and nothing outside the diagram
Audit, certification, penetration test
none
there is nothing to show, and nothing is implied
Accounts, seats, sign-ins, row-level security
none in the product
access is your warehouse's, or Windows file permissions; a shared diagram room in Binse Enterprise signs people in against your own identity provider, on your own relay