Looks cool. Does it generate human-readable documentation about the schema? How does it relate to JSON Schema (if at all)? We had to create an ad hoc schema definition DSL for validation and doc gen, and I wish there had been more tools like this at the time.
Since the models are "Just JSON" you can do a lot with them. We wrote a doc generator internally; I never thought about adding it to the lib but I will now :)
I don't understand why it returns a promise. Are some of the validators asynchronous (ex: call an outside resource and validate against the response)? All of the example appear to define validations that could be run synchronously.
Two reasons:
1. It allows for asynchronous validation, see: http://technologyadvice.github.io/better-email-validation-wi...
2. It more cleanly supports the nature and flow of data i/o - in our use of Obey we are (almost) always following validation up with another async operation, i.e. obey.validate({}).then(...something else with the data...)