AnyEvent based non-blocking PSGI web server (like Thin)
Clone or download
miyagawa Merge pull request #47 from meAmidos/master
Slightly enhance the SEE ALSO section in POD
Latest commit 18588ef May 31, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
eg/chat-websocket make it a top level namespace. See =head1 NAMING for details Feb 11, 2010
lib Slightly enhance the SEE ALSO section in POD May 31, 2015
script Slightly enhance the SEE ALSO section in POD May 31, 2015
t Add test checking for a stream being broken Apr 29, 2014
.gitignore update Jun 12, 2013
.travis.yml enable travis Jan 3, 2015
Changes 0.1025 Jan 3, 2015
LICENSE add Jan 3, 2015
META.json 0.1025 Jan 3, 2015
Makefile.PL 0.1025 Jan 3, 2015
cpanfile Skip test rather than requiring it in tests. Jun 12, 2013


Twiggy - AnyEvent HTTP server for PSGI (like Thin)


twiggy --listen :8080

See twiggy -h for more details.

use Twiggy::Server;

my $server = Twiggy::Server->new(
    host => $host,
    port => $port,



Twiggy is a lightweight and fast HTTP server with unique features such as:

  • PSGI

    Can run any PSGI applications. Fully supports psgi.nonblocking and psgi.streaming interfaces.

  • AnyEvent

    This server uses AnyEvent and runs in a non-blocking event loop, so it's best to run event-driven web applications that runs I/O bound jobs or delayed responses such as long-poll, WebSocket or streaming content (server push).

    This software used to be called Plack::Server::AnyEvent but was renamed to Twiggy. See "NAMING" for details.

  • Fast header parser

    Uses XS/C based HTTP header parser for the best performance. (optional, install the HTTP::Parser::XS module to enable it; see also Plack::HTTPParser for more information).

  • Lightweight and Fast

    The memory required to run twiggy is 6MB and it can serve more than 4500 req/s with a single process on Perl 5.10 with MacBook Pro 13" late 2009.

  • Superdaemon aware

    Supports Server::Starter for hot deploy and graceful restarts.

    To use it, instead of the usual:

      plackup --server Twiggy --port 8111 app.psgi

    install Server::Starter and use:

      start_server --port 8111 plackup --server Twiggy app.psgi


The following environment variables are supported.


    Set to true to enable debug messages from Twiggy.



Because it is like Thin, Ruby's Rack web server using EventMachine. You know, Twiggy is thin :)

Why the cute name instead of more descriptive namespace? Are you on drugs?

I'm sick of naming Perl software like HTTP::Server::PSGI::How::Its::Written::With::What::Module and people call it HSPHIWWWM on IRC. It's hard to say on speeches and newbies would ask questions what they stand for every day. That's crazy.

This module actually includes the longer alias and an empty subclass AnyEvent::Server::PSGI for those who like to type more ::'s. It would actually help you find this software by searching for PSGI Server AnyEvent on CPAN, which i believe is a good thing.

Yes, maybe I'm on drugs. We'll see.


This module is licensed under the same terms as Perl itself.


Tatsuhiko Miyagawa

Tokuhiro Matsuno

Yuval Kogman

Hideki Yamamura

Daisuke Maki


Plack AnyEvent Tatsumaki