Each tclhttpd process is configured by a configuration file, usually designated with the -config command line option. The virtual host patch creates another configurable option to appear in that file: Config virtual [list $hostNameList1 $configFile1 \ $hostNameList2 $configFile2 ...] A slave interp will be created for each $hostNameList, and in that slave another complete copy of the tclhttpd packages will be loaded according to the configuration specified in the corresponding $configFile. All the host names in the $hostNameList will be associated with that slave interp; a request for any host in the $hostNameList will be handled by the corresponding slave interp. An example configuration line might be: Config virtual { dev.example.com dev.rc {example.com www.example.com} users.rc } Here example.com and www.example.com are multiple names for "the same" site, and that sameness includes sharing the Tcl interp that handles requests. This can be important depending on how the site makes use of the interp. From the perspective of the creator of the virtual site, nothing changes, they still create a $configFile to set up their site and interface it with whatever components they are using to build their site. Their interface code is still running in a Tcl interp; the fact that it's a slave interp makes no difference. The actual mechanism is that the master interp accepts all socket connections. When the Host: header on the request is received, the connection gets passed to the appropriate slave interp for further handling. If there is no Host: header (really ancient clients?) or if the Host: value is not one of those specified in the [Config virtual] argument, then the master interp handles the request according to whatever additional configuration details are found in the master configuration file. In a sense, every IP address served by tclhttpd has a "default" site determined by the master config file. The configuration values used in the slave interp are first inherited from the master. In the $configFile, you only need to specify those values that distinguish the virtual site from the default site. In my experience that usually includes the following [Config] options: docRoot, main, webmaster, and LogFile.