Smach is an open-source Scala library designed to support creation of functional, composable, streamable and recoverable state machines. Smach state machines can be composed together to form larger state machines or connected together to form a processing pipeline plan that can be run to produce a final value. Smach state machines also support a generic error recovery system (by way of the Halted state) that may be used to report errors encountered during processing by any composed or connected smach state machine. Additionally, when an error is encountered, smach state machines may provide an optional recovery method for fixing or ignoring broken input. While running a composed or connected smach state machine, the client is provided with the error message and empowered with the decision of whether to proceed with processing despite any errors.