Mount is a lightweight state management library for Clojure and ClojureScript that helps developers manage application components—like databases, servers, and caches—in a REPL-friendly way, allowing smooth reloadability of application state without losing productivity. If the whole app is one big application context (or system), cross dependencies with a solid dependency graph is an integral part of the system. But if a state is a simple top level being, these beings can coexist with each other and with other namespaces by being required instead. If a managing state library requires a whole app buy-in, where everything is a bean or a component, it is a framework, and dependency graph is usually quite large and complex, since it has everything (every piece of the application) in it.
Features
- Supports definition and management of stateful components via defstate
- Hot-reloadable lifecycle (mount/start, mount/stop, mount/reset)
- Preserves REPL-driven development experience and avoids restart cycles
- Minimal boilerplate—focuses on state, not framework imposition
- Clear separation of state configuration from execution logic
- Integrates with debugging and “mount-up” listener tools for logging lifecycle events