Projects / plumb


plumb is a shell with focus on pipes: instead of pipelines, it can build large graphs of processes (nodes) and pipes (edges). Pipes are simple unidirectional streams without side effects. Traffic can be controlled by virtual processes (which are nodes just like real processes, but are implemented in plumb for minimal overhead). Virtual processes can split, merge, regex filter/alter, and shape the streams. Timers and starting/stopping processes or even rewiring the script on the fly are also supported. It is portable (using libporty) and behaves exactly the same way on Linux, Windows, Mac OS X, many BSD variants, and older UNIX systems.

Operating Systems

Recent releases

  •  14 Apr 2013 06:08

    Release Notes: This minor release is about bugfixing (more than 16 fds per process should work), cleanup, and documentation.

    •  05 Apr 2013 05:08

      Release Notes: This minor release is about bugfixing. The shutdown procedure won't lose data in buffers now, virtual processes won't panic on blocking output, and [regex] works as documented for $ and $$.

      •  26 Mar 2013 16:09

        Release Notes: This is the first release of the third rewrite of plumb. It features starting/stopping processes, piping, a rich set of virtual processes for text and binary streams, a virtual process for executing plumb script commands' runtime, and a utility for drawing internal states from dumps. Plumb has been tested on multiple operating systems using the supplied regression tests.


        Project Spotlight


        A Fluent OpenStack client API for Java.


        Project Spotlight

        TurnKey TWiki Appliance

        A TWiki appliance that is easy to use and lightweight.