Security
There is no backend.So there is nothing to breach.
Most security pages list the controls a company puts around your data once it has it. Vlocalhost never takes it — so this page is mostly a list of things that do not exist, and instructions for checking that we are telling the truth.
The only address the app knows.
Every network call the application makes at runtime goes to a language model running on your own machine. There is one URL in the configuration, and it points at localhost:
config.py — OLLAMA_URL = "http://localhost:11434"
There is no licence server to check in with, no analytics endpoint, no crash reporter, and nothing that contacts us on a schedule. Search the core for outbound requests and you will find that address — and exactly one other, described below.
The one call, and who starts it.
A product that never tells you a security fix exists is not protecting you. So there is one outbound request in the application, and it is built so that only you can start it.
What it does
Pressing Check for updates asks GitHub’s public API for the version number of the latest release. The comparison against what you have installed happens on your machine.
What it sends
A version number is not sent. No install ID, no machine name, no operating system, no telemetry, no meeting data. The request carries nothing that identifies you or your copy.
When it runs
Only when clicked. There is no timer, no background thread and no check at startup. An install whose button is never pressed never contacts anything — which is why the app still works, completely, in airplane mode.
The reminder
Every few days the app may note that a check is due. That reminder reads your system clock and a date in a local file. It sends nothing. Set it to 0 days to switch it off, and that choice is kept.
You do not have to take our word for any of this. It is one file — core/updates.py — containing a single urlopen, and the source is public. Run the app behind a network monitor and press the button: one request, to api.github.com, and nothing else for as long as you leave it alone.
What we do not collect.
No account
There is no sign-up, no login and no identity for us to attach anything to. The app runs the moment it finishes installing.
No telemetry
No usage analytics, no feature pings, no error beacons. The diagnostic report is a file you read and choose to send.
No cloud storage
Audio, transcripts and notes are written to your disk as Markdown and plain text. They are files, not rows in our database.
No model training
We could not train on your meetings if we wanted to. They never arrive anywhere we could train from.
No third-party requests
This website makes zero subresource requests — no fonts, no CDN scripts, no analytics. Check the network tab.
No vendor lock
The core is open source. If we disappeared tomorrow the thing on your disk keeps working, and you can read why.
Check us, rather than trust us.
None of these ask you to take our word for anything.
Check it yourself
Pull the plug
Switch on airplane mode and run a whole meeting. Capture, transcription, summary and the file on disk all still work, because none of them needed the network in the first place.
Watch the wire
Point a packet monitor at the process while it records, and watch it stay quiet for the length of the meeting.
netstat -bn · Wireshark · Little Snitch
Read the path
The entire audio path is three files in the open core, in that order. It is a short read, and there is no upload in it.
audio_listener.py → transcriber.py → summarizer.py
Ask a machine
Point Claude or ChatGPT at the repository and ask what the app sends. We would rather you asked something impartial than believed us.
github.com/antigravitysoham-eng/vlocalhost-core
The supply chain.
The hash you get is the hash we published
Every release is hashed
Each asset ships with its own .sha256, and a combined SHA256SUMS covers the set. Compare before you run anything.
Get-FileHash .localhost-setup.exe -Algorithm SHA256
Every release is attested
Each download carries a signed, publicly verifiable statement of which commit and which workflow run produced it. That is what an unsigned binary can offer in place of a certificate.
gh attestation verify <file> --repo antigravitysoham-eng/vlocalhost-core
An SBOM per platform, per release
A CycloneDX bill of materials is generated on the machine that built the bundle, not assembled afterwards from whatever was lying around. It ships beside the installer.
The build is public
The workflow that produces the downloads is in the repository, so you can read what went into the binary you are about to run.
.github/workflows/release.yml
What we are not.
Stated plainly, because you would find out anyway and it is better heard from us.
- × We hold no SOC 2, ISO 27001 or HIPAA attestation. Those audit how an organisation handles data it has been given. Ask us for one by all means — we are not going to imply we already have it.
- ×The installers are not code-signed. A certificate costs money and going without was a deliberate call. Windows SmartScreen will warn you, and the warning is accurate: it means the binary is unsigned, not that it is safe. Verify the hash and the attestation above instead.
- ×Nothing here is a statement about your obligations. Recording-consent law varies by jurisdiction, and running the app locally does not change what you owe the other people in the room.
Anything we have not answered
A security review, the SBOM for a specific release, or an air-gapped deployment — ask, and a person will answer.
Email us