Overview
The runtime package provides dependency injection capabilities and service registration for Cosmos SDK applications using the App Wiring pattern. It enables declarative application construction through configuration.Core Types
App Structure
AppBuilder
BaseAppOption
runtime/module.go:58-61
Dependency Injection Providers
ProvideApp
runtime/module.go:86-127
Returns:
- Protobuf codec
- Legacy Amino codec
- App builder
- Message service router
- gRPC query router
- Runtime app module
- Proto resolvers
ProvideInterfaceRegistry
runtime/module.go:166-188
Store Key Providers
Service Providers
runtime/module.go:64-81
These providers inject core services into modules via dependency injection.
App Wiring
SetupAppBuilder
runtime/module.go:129-164
Usage Examples
App Configuration File (app.yaml)
Building an App with Runtime
Custom Module with Dependency Injection
Providing Custom Services
Core Services
Store Services
Modules receive store services injected by runtime:Event Service
Header Service
Migration from Legacy Apps
To migrate from constructor-based apps to runtime:- Create app.yaml configuration
- Convert keepers to use DI
- Register module providers
- Use AppBuilder instead of manual wiring
Related APIs
- BaseApp - Core ABCI application
- Module Manager - Module lifecycle
- Store - Storage interfaces
- Depinject Documentation