Enaml is a DSL for writing platform independent, declarative UIs. In a model-view-controller world, Enaml makes it very easy to develop the view and controller. Typically, the model is built with Traits, but it's model is framework agnostic and provides hooks for using custom model frameworks. The DSL is a strict superset of Python and provides a simple Pythonic syntax for declaring a UI that binds and reacts to changes in the models. Enaml is dynamically executed and it lets you bind to arbitrary Python expressions. It uses a constraint based layout system which makes it possible to have layouts that are not typically possible with traditional UI toolkits. Enaml also supports asynchronous UIs which allow one to have multiple UIs connecting to the same model running in the same process or out of process. This, in theory, opens up the possibility for a web-based UI to be used to control a model.