A Kotlin microservices toolkit for building server applications (web apps, APIs, serverless) with a modular, pluggable architecture.
Hexagon is a microservices toolkit written in Kotlin that simplifies building server applications like web apps, APIs, and serverless handlers for cloud platforms. It provides modular libraries (Ports) for HTTP serving, HTTP client, serialization, and template processing, with pluggable adapter implementations. The toolkit follows Hexagonal Architecture principles to decouple business logic from infrastructure.
Kotlin developers building microservices, web APIs, or serverless applications who value modularity, clean architecture, and the ability to swap underlying technologies without rewriting code.
Developers choose Hexagon for its modular, adapter-based design that avoids framework lock-in, its production-ready feature set, and its commitment to developer control without hidden magic. It’s particularly appealing for teams adopting Hexagonal Architecture or needing GraalVM native image support.
Hexagon is a microservices toolkit written in Kotlin. Its purpose is to ease the building of services (Web applications or APIs) that run inside a cloud platform.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Hexagon's features are isolated in separate modules called Ports and Adapters, allowing developers to include only what they need, reducing dependency bloat and keeping the codebase lean.
Each Port can have multiple Adapter implementations, enabling technology swaps—like changing HTTP servers from Jetty to Netty—without altering application logic, as demonstrated in the code examples.
Most libraries include metadata for building native images with GraalVM, and CI tests ensure compatibility, making it suitable for cloud-native and serverless deployments.
Provides comprehensive HTTP server/client capabilities, serialization, and template processing, all tested with high coverage and benchmarked in TechEmpower for performance validation.
Requires manual setup for each module with no auto-configuration or annotation processing, which can increase initial development time and complexity compared to frameworks.
Focuses on low-level control, so lacks built-in abstractions for common needs like authentication, ORM, or advanced middleware, requiring additional custom implementation.
As a smaller project, it has fewer third-party integrations and community resources compared to Ktor or Spring Boot, which might slow down development and troubleshooting.