PET je multithreadový proxy server, který umí pracovat s protokoly HTTP, SSL a FTP. Každý klientský požadavek je obsloužen samostatným threadem. Vývojovou platformou PETu byl zvolen Linux a z toho důvodu se pro thready využívá linuxová knihovna Pthreads. Každý thread si tedy drží sám stavové informace o tom daném požadavku, popř. je-li třeba, využívá globálních datových struktur PETu.
Autoři rozlišují dvě skupiny threadů. Jedna skupina threadů, nazvaná pracovní , zpracovává jednotlivé požadavky. Druhá skupina threadů se stará a řídí jednotlivé činnosti programu. Tato skupina se nazývá řídící .
Klientský požadavek je zpracováván samostatným (pracovním) threadem, který volá příslušné moduly. Modulem je nazvána část programu, která je schopná vyřídit požadavek. Pracovní thread postupně volá jednotlivé moduly v určeném pořadí. V případě, že modul vyřídil požadavek sám je pracovní thread ukončen a další moduly se již nevolají. V opačném případě se zavolá další modul. V době psaní této dokumentace bylo již implementováno 5 modulů jako Storage, ICP, Cache Digest, FTP, SSL.
PET se může v průběhu své činnosti nacházet ve třech různých stavech. Tyto stavy jsou od sebe odlišeny nastavením patřičných globálních struktur, tak aby se o tom dozvěděly všechny thready, je-li třeba. Tyto stavy jsou:
(Popis jednotlivých stavů je v kapitole Stavy PETu.)