++ed by:

28 PAUSE users
30 non-PAUSE users.

Author image Jeffrey Ryan Thalhammer
and 9 contributors


pintod - the pinto web server


version 0.079_01


  pintod --root=/path/to/repository [--daemon] [--port=N]


Before running pintod you must first create a Pinto repository. See pinto for instructions on that.

pintod provides a web API to a Pinto repository. Clients (like pinto) can use this API to manage and inspect the repository. In addition, pintod serves up the distributions within repository, so you can use it as the backend for cpan or cpanm.



The path to the root directory of the Pinto repository you wish to serve.



Sets an option for the authentication scheme (default is no authentication). Each time this is used, a key=value pair must follow; one of them must be 'backend', which should correspond to a class in the Authen::Simple namespace, e.g. backend=Kerberos would indicate that Kerberos authentication will be used, with the Authen::Simple::Kerberos backend.

Options that follow will be passed as-is to the authentication backend.

For example, this would be a valid configuration for Kerberos:

  --auth backend=Kerberos --auth realm=REALM.COMPANY.COM

and this is how the authentication backend will be constructed:

  my $auth = Authen::Simple::Kerberos->new(
    realm => 'REALM.COMPANY.COM'
other options

All other options supported by plackup are supported too, such as --server, --port, --daemonize, etc. These will be passed to Plack::Runner.

Note that --daemonize only works if the backend server supports it, such as Starman. The default server that ships with Plack does not support daemonization. Use the --server option to select the type of backend server, or use the PLACK_SERVER environment variable.


pintod is PSGI compatible, running under Plack::Runner by default. It will use whatever backend you specify on the command line or have configured in your environment.

If you wish to add your own middleware and/or customize the backend in other ways, you can use Pinto::Server in a custom .psgi script like this:

    # my-pintod.psgi

    my %opts   = (...);
    my $server = Pinto::Server->new(%opts);
    my $app    = $server->to_app();

    # wrap $app with middlewares here and/or
    # insert code customized for your backend
    # which operates on the $app

Then you may directly launch my-pintod.psgi using plackup.


  • Cory G Watson <gphat@onemogin.com>

  • Jakob Voss <jakob@nichtich.de>

  • Jeff <jeff@callahan.local>

  • Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>

  • Jeffrey Thalhammer <jeff@imaginative-software.com>

  • Karen Etheridge <ether@cpan.org>

  • Michael G. Schwern <schwern@pobox.com>

  • Steffen Schwigon <ss5@renormalist.net>

  • Wolfgang Kinkeldei <wolfgang@kinkeldei.de>

  • Yanick Champoux <yanick@babyl.dyndns.org>


Jeffrey Ryan Thalhammer <jeff@stratopan.com>


This software is copyright (c) 2013 by Jeffrey Ryan Thalhammer.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.