YCM is that it has a client-server architecture. Vim part of YCM is just a thin client that talks to ycmd server.
I think the ycmd server is ran in the local machine, not an external right? So no internet connection is needed for YCM to work properly in VIM, right?
Yes, ycmd
is a local server process. You can easily find it when you are using YCM. E.g. on Linux host:
$ ps ax | grep ycmd
19298 ? Ssl 0:00 /usr/bin/python2 /home/sysuser/.vim/bundle/YouCompleteMe/python/ycm/../../third_party/ycmd/ycmd --port=53805 --options_file=/tmp/tmpNUlVoT --log=info --idle_suicid
Then you can check all its connections:
$ netstat -p | grep 19298
tcp 0 0 localhost:53805 localhost:38069 ESTABLISHED 19298/python2
tcp 0 0 localhost:53805 localhost:37996 ESTABLISHED 19298/python2
Regardless that there are TCP connections - all of them use loopback route. I.e. ycmd
doesn't even try to connect to something outside of your machine.