Обертка вокруг com.stuartsierra.component, где зависимости между компонентами определяются в коде определения компонента, а система строится динамически, исходя из запрашиваемых компонентов. Для больших систем таким образом убивается большое количество мусорного кода, одновременно уменьшая количество багов (мы не можем забыть объявить зависимость или опечататься в ее названии). Добавляются некоторые соглашения: так каждому конструктору компонента может скармливаться объект, загруженный из конфиг-файла.
(defcomponent db []
[config]
(start [this] {:connection :im-connection!})
(stop [this]))
(defcomponent app [db]
[config]
(start [this])
(stop [this]))
См. коментарии за подробностями.