Exeris as the host runtime for Spring applications.
exeris-spring-runtime allows Spring-based applications to run on top of the Exeris execution model without making the Exeris kernel depend on Spring.
This repository provides the integration layer between:
- the Spring application model — dependency injection, configuration, bean lifecycle, developer ergonomics,
- and the Exeris runtime model — zero-copy transport, off-heap memory, Loom-first execution, deterministic lifecycle, and provider-driven runtime composition.
This is not just a thin Spring Boot starter.
While it includes Boot autoconfiguration, its broader goal is to let Exeris own the runtime path for Spring applications, including:
- transport ingress,
- request execution,
- backpressure and runtime lifecycle,
- selected transaction/resource boundaries,
- operational diagnostics.
This repository exists outside exeris-kernel by design.
It preserves the core Exeris invariants:
- no Spring dependencies in
exeris-kernel-spi, - no Spring-aware
exeris-kernel-core, - no replacement of canonical provider discovery,
- no hidden fallback to servlet/reactive ownership while claiming Exeris-hosted execution.
exeris-spring-boot-autoconfigure— Boot configuration and lifecycle integrationexeris-spring-runtime-web— web/runtime bridge and request handlingexeris-spring-runtime-tx— transaction and resource-boundary integrationexeris-spring-runtime-data— optional persistence/data-access compatibilityexeris-spring-runtime-actuator— health, metrics, diagnostics, and graceful shutdown
The repository is expected to support two explicit modes:
- Pure Mode — Exeris-native request path, minimal compatibility surface, performance-first
- Compatibility Mode — selected Spring programming-model conveniences with explicitly documented trade-offs
Early architecture and bootstrap stage.
When documents differ, use this source-of-truth order:
- Strategic architecture truth
docs/adr/*docs/architecture/module-boundaries.mddocs/architecture/kernel-integration-seams.md
- Delivery truth
docs/phases/phase-*.md
- Repo-wide review behavior
.github/copilot-instructions.md
Conflict handling:
- ADRs win on architecture intent.
- module boundaries + integration seams win on structural contracts.
- phase docs win on current delivery scope unless explicitly superseded by ADR.
- Phase 0 proves bootstrap coexistence and Wall integrity.
- Phase 1 proves host-runtime legitimacy (Exeris-owned ingress path).
- Phase 2 adds explicitly scoped, opt-in Spring compatibility.
- Phase 3 expands into high-risk tx/context/persistence concerns.
Until artifacts are published to Maven Central, snapshot usage (for example in benchmark projects) should resolve from GitHub Packages.
This repository also ships a workflow-friendly template at .github/maven-settings.xml.
Add server credentials to your Maven settings.xml:
<servers>
<server>
<id>github-exeris-kernel</id>
<username>exeris-systems</username>
<password>${env.GITHUB_TOKEN}</password>
</server>
<server>
<id>github-exeris-runtime-releases</id>
<username>exeris-systems</username>
<password>${env.GITHUB_TOKEN}</password>
</server>
<server>
<id>github-exeris-runtime-snapshots</id>
<username>exeris-systems</username>
<password>${env.GITHUB_TOKEN}</password>
</server>
<server>
<id>github-exeris-spring-runtime</id>
<username>exeris-systems</username>
<password>${env.GITHUB_TOKEN}</password>
</server>
</servers>Deploy example:
mvn -s .github/maven-settings.xml clean deployConsumers should either include the required GitHub Packages repository URLs in their project configuration or import this parent POM where repositories are already defined.
Please use CONTRIBUTING.md for contribution rules, architecture guardrails, testing scope, and docs/ADR update requirements.