VlocalhostAI
Recording 12:04
Pause
Notes
Live sessions
Standup
12:04 Local
Nexon call
38:11 Rec
Drop a recording
wav · m4a · mp3

Transcription and summarisation run entirely on your own hardware. No API keys, no telemetry, no cloud round-trip.

Watch it prove it →
0 bytes uploaded, since install.

Your meetings never leave
this machine.

What should it write up?
Action items
Decisions only
Full transcript
Email the team
Download
Windows macOS LinuxSOON 
Microphone 16 kHz
VAD gate
Sound devices
−∞ dB
Level
Current build
v1.3.1
released 16 Sep 2026
Runs on
Windows · macOS
one installer, nothing to set up first
Open core
AGPL-3.0
read what it does with your audio
Costs
$0
no account, no card, no telemetry
Every release
hashed & attested
SHA-256 plus build provenance
This page
0 requests
no fonts, no CDN, no analytics

No logo wall here yet. When companies we can name are using it they will go in this row — until then it carries things you can check instead.

Why Vlocalhost

Nobody has to let it in.
It was never in the meeting.

Tired of an AI notetaker barging into the call — or waiting for the organiser to admit it? Vlocalhost never joins. It runs on your machine, wakes when someone speaks, and hands you the notes when you stop.

No bot in the room

Nothing to approve and nobody to admit. The other people on the call never see a third participant, because there isn’t one.

No waiting room

It starts when you start. No host to let it in, no queue, no meeting link to paste anywhere.

Nothing leaves the room

Audio, transcript and notes are written to your own disk and stay there. There is no server to send them to.

Every other notetaker
Notetaker Bot
requesting to join…
Denied
AI Meeting Companion
waiting for host…
Denied
Recording Assistant
“admit to the meeting?”
Denied
Vlocalhost, on your device

Already in. It never left your side.

Nexon — pricing 4 participants · nothing to admit
PK
MJ
SR
You
Recording locally
12:04 · not in the call

It sits in your tray, not in the participant list. No join request, no announcement — you just walk out with the notes.

Switch to Vlocalhost →

Watch it work.
Five stages, zero cloud.

Audio enters at the microphone and never leaves the device. This is the real pipeline, running end to end — capture, gate, transcribe, structure, deliver.

Capture
16 kHz mono in
Gate
silence dropped
Transcribe
so we ship friday, mike owns the migration, and design
faster-whisper, on CPU
Structure
DECISIONS
Ship Friday, not Wednesday
ACTIONS
Mike · migration
local llama3.2
Deliver
standup-2026-08-16.md
markdown + transcript

Take it apart.
Every layer is on your machine.

Six layers, one process, no network boundary between any of them. Scroll to pull them apart; hover a layer to isolate it.

Tray app
Notes writer
Ollama · llama3.2
faster-whisper
webrtcvad gate
Audio capture
your hardware
06
Tray app
Start, stop, browse past meetings.
your desktop
05
Notes writer
Markdown + transcript, named from the calendar event.
~/Notes
04
Ollama · llama3.2
Structures decisions and action items locally.
your CPU/GPU
03
faster-whisper
int8 inference, base.en by default, swappable.
your CPU
02
webrtcvad gate
30 ms frames in, speech only out.
in-process
01
Audio capture
16 kHz mono PCM off the default input.
OS audio stack
Nothing above this list. There is no seventh layer.

Bring your own
voice model.

Attach the model that fits your accent, your language and your hardware — swap it in a single line, or replace the engine entirely. Pick one to see the trade.

tiny.en 75 MB
Fastest, roughest
base.en 142 MB
The shipped default
large-v3 3.1 GB
Pin-sharp, GPU helps
Your own engine any
Anything with .transcribe()
Speed on CPU 82%
Accuracy 74%
Memory footprint 34%
# config.py
MODEL = "base.en"

What you get
when the call ends.

A timestamped transcript on the left, structured markdown on the right, both written to disk under the meeting's real name.

Engineering standup — 16 Aug on-device
Transcript
00:04
Priya
Migration's blocked on the staging box — I need someone with prod access.
00:19
Mike
I can do it after standup. Give me until three.
00:41
Priya
Then we ship Friday, not Wednesday.
01:02
Sam
Design sign-off lands Monday either way, so Friday is fine.
standup-2026-08-16.md written to ~/Notes
Engineering standup
16 August 2026 · 24 min · 4 speakers
Decisions
Ship Friday instead of Wednesday, blocked on the staging migration.
Design sign-off stays on Monday and does not gate the release.
Action items
Mike runs the staging migration by 15:00 today.
Priya re-cuts the release branch once staging is green.
Sam circulates the design sign-off checklist Monday morning.
Voice activity detection

Silence is ignored.

A 30 ms frame either contains speech or it doesn't. Only the yellow frames ever reach Whisper — coughs, keystrokes and dead air are dropped before they cost you a cycle.

1:43
Meeting elapsed
0:47
Actually transcribed
396
Frames dropped
Local by design

Nothing leaves your device.

Every packet the engine produces terminates inside the machine boundary. No API keys, no accounts, no telemetry. Calendar sync, if you switch it on, is the one outbound call the app can make — and it carries no audio, transcript or note.

machine boundary 45 attempts · 0 through
api.openai.comblocked · 0 B
backup.cloud-sync.ioblocked · 0 B
analytics.vendor.coblocked · 0 B
0 bytes of audio, transcript or notes uploaded — since install
Verify it yourself

Don’t take our word for it.

Every notetaker on the market says your data is safe. This is the part where you check ours — none of it asks you to trust the sentence above.

Pull the plug

Switch on airplane mode and run a whole meeting. Capture, transcription, summary and the file on disk all still work — there is nothing for the network to do.

Watch the wire
netstat -bn · Wireshark · Little Snitch

Point a packet monitor at the process while it records, and watch it stay quiet for the length of the meeting.

Read the path
audio_listener.py → transcriber.py → summarizer.py

The whole audio path is three files in the open core, in that order. It is a short read, and there is no upload in it.

Ask a machine
github.com/antigravitysoham-eng/vlocalhost-core

Point Claude or ChatGPT at the repository and ask it what the app sends. We would rather you asked something impartial than believed us.

Calendar-awarePro · not shipped yet

It knows your meetings

09:30
Engineering standup standup.md ✓
11:00
Nexon — pricing
→ nexon-pricing.md · named from the event
14:15
Design review starts automatically
Google Outlook token stays in your keystore
Portable

Windows, macOS and Linux

The same engine and the same privacy guarantees on each — one command to launch. Tray app or terminal, your call.

Windows
system tray app
macOS
menu bar app
Linux
desktop entry · soon

The numbers under the hood.

Defaults on first run. Every one of them is a line in config.py.

Capture
16 kHz
Mono, 16-bit PCM off your default input
Voice gate
30 ms
webrtcvad frames, aggressiveness 2
Silence timeout
800 ms
Trailing silence ends an utterance
Meeting-data egress
0 bytes
No audio, transcript or note ever leaves
Transcription
base.en
faster-whisper, int8 on CPU
Summarization
llama3.2
Ollama, running fully local
Output
.md + .txt
Notes plus a timestamped transcript
Platforms
2
Windows and macOS, same engine
Where your audio goes

Three ways to take a meeting note.

Every notetaker draws the first box the same way and stops there. This is the rest of the diagram — not who joins your call, but where your voice ends up once it has.

Most notetakers
A bot joins the call

Everyone in the meeting sees it arrive, and the recording starts its journey somewhere else.

your microphone
recording bot in the call
vendor cloud
transcription provider
LLM provider
subprocessors, backups, logs
Six places your voice exists. You control the first one.
The “bot-free” ones
No bot — same cloud

The participant list stays clean. The audio takes exactly the same trip as it did before.

your microphone
desktop app
vendor cloud
transcription provider
LLM provider
retention policy
Nothing joined your call. That is not the same as nothing leaving your machine.
Vlocalhost
It stops at your machine

The same pipeline, with the network taken out of it. There is no next hop to draw.

machine boundary
your microphone
voice-activity gate
faster-whisper
Ollama
~/Notes on your disk
One place your voice exists. You control it.

From silence to notes in one command.

Clone it, point it at a local model, and talk. The first run pulls the Whisper weights once, then everything is offline for good.

Download Vlocalhost →
~/vlocalhost — bash
# set up an isolated environment
$ python -m venv .venv
$ source .venv/bin/activate
$ pip install -r requirements.txt

# pull a local model for summaries
$ ollama pull llama3.2

# start ▌