ibettinger edited this page Jun 20, 2011 · 9 revisions


Pogo is an agent-based system for running interruptive commands safely on thousands of machines in parallel.

Users request that a command (or recipe, or script) be executed on a group of target nodes by issuing new pogo jobs via the pogo(1) command-line utility. If the job is successfully created on the dispatcher, the user will receive a job id and a URL in response.

The pogo dispatcher then divides the job up into tasks, one task per target host. The dispatcher computes a task run order and distributes tasks to worker processes. Workers ssh to the target nodes and run the commands specified by the user, reporting progress and status back to the dispatcher.

Pogo jobs usually run under user-specified constraints. For example, you can instruct pogo to restart hosts in a particular order, or to make sure that no more than 25% of your web front end servers are down at any one time.

User Guide

  1. Installation and Setup
  2. Concepts


  • Constraint-based execution; fine-grained control over task ordering and parallelism
  • Pre & Post-command hooks - automatically sanity-check that the commands that you're running aren't interrupting service
  • Recipes & Cookbooks - peer-review and re-use of commands, no more fat-fingering incidents
  • Retrying failed tasks
  • Redundant operation - no SPOFs
  • Snazzy UI
  • Plugins - allow for simple customization of Pogo, according to your installation's needs