You can make a bigger state and modify each computation to take a lens into a larger composite state for the system.
p1 :: (MonadState s m, Num a) => Lens' s a -> ProcessT m a a
p1 l = repeatedly $ do
a <- await
l += a
yield a
You then just need to supply the larger composite state and appropriate lenses to drive the whole thing.