Twisted is an event-based framework for Internet applications. It includes a Web server, an SMTP/POP3 server, a telnet server, an SSH server, an IRC server, a DNS server, a generic client/server pair for remote object access (Perspective Broker), and APIs for creating new protocols. It supports integration with GTK+, GTK+ 2, Qt, Tkinter, wxPython, Mac OS X (PyObjC) and Win32 event loops. It also supports TCP, SSL and TLS, UDP, Unix sockets, multicast, and serial ports. Supported protocols include HTTP, FTP, SMTP, POP3, IMAP, TOC, OSCAR (AIM and ICQ), SSH, DNS, IRC, NNTP, Jabber, SOCKSv4, Telnet, SIP (for VoIP), and XML-RPC and SOAP using external packages. Most protocols are supported as both servers and clients.