PSOPT is an open source optimal control software package written in C++ that uses direct collocation methods, including pseudospectral and local discretizations. Pseudospectral methods solve optimal control problems by approximating the time-dependent variables using global polynomials, such as Legendre or Chebyshev functions. Local discretization methods approximate the time dependent functions using local splines, and can be seen as implementations of implicit Runge-Kutta integrators. With both global and local methods, differential equations, continuous constraints and integrals associated with the problem are discretized over a grid of nodes. Sparse nonlinear programming is then used to find local optimal solutions. PSOPT is able to deal with problems with the following characteristics: Single or multiphase problems; Continuous time nonlinear dynamics; Nonlinear path constraints; General event constraints; Integral constraints; Interior point constraints; Bounds on controls and state variables; General cost function with Lagrange and Mayer terms. Linear or nonlinear linkages between phases; Fixed or free initial phase time; Fixed or free final phase time; Optimization of static parameters; Optimal parameter estimation given sampled observations.