# weavejester/integrant

Micro-framework for data-driven architecture

Repository: https://github.com/weavejester/integrant
Canonical: https://ross.abutalabs.com/products/integrant
Language: Clojure
License: MIT
License Family: permissive
Topics: micro-framework, clojure, data-driven
Last push: 2026-01-07T12:08:00+00:00

## Health v2 (maintenance only)
Score: 60/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 61, release rhythm 35, longevity 100
- inputs: {"age_days": 3559, "days_push": 238, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1361, forks 63 (observed 2026-08-28T04:04:30.105245+00:00)

## What it is
Integrant is a Clojure and ClojureScript micro-framework for building applications with data-driven architecture, where systems are defined as configuration maps (typically EDN) and initialized into running components. It serves as an alternative to Component or Mount, resolving dependencies between arbitrary configuration keys before initialization.

## Use cases
- manage application lifecycle and dependency wiring in a Clojure web app
- define system architecture as data instead of code
- replace Component or Mount for stateful service management
- initialize and halt services like HTTP servers and database connections from an EDN config
- build modular Clojure applications with declarative configuration

## When to choose
- you're writing a Clojure or ClojureScript application and want data-driven system composition
- you find Component's record-based approach too rigid and want anything to be a dependency
- you prefer configuration in EDN files over programmatic system construction
- you use the Duct framework or want a lightweight lifecycle manager

## When to avoid
- you're not working in Clojure or ClojureScript
- you need a full-featured web framework rather than a system lifecycle micro-framework
- your project already standardizes on Component or Mount and migration isn't worthwhile
- you need runtime service discovery across distributed services rather than in-process wiring

## Facets
- artifact type: framework
- maturity: stable
- function: configuration-management, middleware, developer-tools
- domain: backend, web-development, developer-tools, programming-languages
- platform: jvm, cross-platform
- tags: clojure, clojurescript, dependency-injection, micro-framework, edn, system-configuration, component-alternative

## Member repositories
- weavejester/integrant (main) score 60

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:04:30.105245+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T04:41:36.875663+00:00, confidence not recorded.
  - readme: https://github.com/weavejester/integrant (fetched 2026-08-28T04:04:30.105245+00:00, sha eabe094a1906)
- Data as of 2026-08-30T08:39:29.467469+00:00.
