Type-safe DI
Dependency injection without runtime magic.
A tiny, type-safe dependency injection container for TypeScript
End-to-end inference
Tokens carry types through providers and resolution without casts.
Learn about tokens →Explicit composition
No global container, metadata reflection, or runtime type guessing.
Why di-craft →Predictable lifecycles
Singleton, scoped, and transient services with deterministic disposal.
Explore scopes →