Rentile is a headless Kotlin Multiplatform basemap tile rasterizer. It accepts a supported map style and north-up XYZ tile identities, performs bounded local CPU rendering, and returns encoded PNG bytes without a UI view or platform render loop.
Rentile is published to the public repository at https://maven.rohittp.com. Every push to main that changes anything outside documentation publishes a new release, taking the highest version already public and advancing its patch component. Set VERSION_NAME in the root gradle.properties above every published version to cut a deliberate minor or major release instead. Releases cannot overwrite an existing coordinate.
- Android:
arm64-v8aandx86_64 - JVM:
jvm - Apple:
iosArm64,iosSimulatorArm64, andmacosArm64 - Linux:
linuxX64andlinuxArm64
Apple support is Apple Silicon only; Rentile does not publish iosX64 or macosX64. See ADR 0022.
Rentile publishes one consumer coordinate:
commonMain.dependencies {
implementation("com.rohittp.rentile:kmp:<version>")
}Add the shared public repository before the standard repositories. No repository credentials are required. Rentile is an ordinary KMP dependency, so it resolves through dependencyResolutionManagement; this project does not publish a Gradle plugin. Skiko's platform artifacts still come from JetBrains' public Compose repository.
dependencyResolutionManagement {
repositories {
maven("https://maven.rohittp.com")
mavenCentral()
google()
maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") {
content { includeGroup("org.jetbrains.skiko") }
}
}
}python3 tools/check_coverage_manifest.py compatibility/rentile-v1-coverage.json
./gradlew :kmp:checkKotlinAbi
./gradlew :kmp:testAndroidHostTest :kmp:jvmTest :kmp:macosArm64Test
./gradlew :kmp:compileKotlinIosArm64 :kmp:compileKotlinIosSimulatorArm64
./gradlew :kmp:compileKotlinLinuxX64 :kmp:compileKotlinLinuxArm64
./gradlew :kmp:publishAllPublicationsToLocalTestRepository
./gradlew -p consumer-smoke compileAndroidMain compileKotlinJvm compileKotlinIosArm64 compileKotlinIosSimulatorArm64 compileKotlinMacosArm64 compileKotlinLinuxX64 compileKotlinLinuxArm64
Merging to main publishes once the release gates pass. To run a release manually, or to watch the one a push started:
gh workflow run publish.yml --repo rohittp0/rentile --ref main
gh run list --repo rohittp0/rentile --workflow publish.yml --limit 1
gh run watch RUN_ID --repo rohittp0/rentile --exit-status
Architecture decisions and the evolving contract are in docs/. Public documentation is prepared for https://rohittp.com/rentile/.
The rolling corpus is discovered from the public paginated map catalog and checked against a credential-free Coverage Manifest. See compatibility/README.md for local and workflow usage.
Release versions must not be hardcoded in HTML. Every displayed Rentile release uses
data-maven-version="kmp", and every applicable page loads the shared docs/versions.js script.
The browser reads <versioning><release> directly from
https://maven.rohittp.com/com/rohittp/rentile/kmp/maven-metadata.xml; it keeps the readable
latest fallback if metadata cannot be loaded. The R2 CORS origin is https://rohittp.com.
Publishing a new release requires no documentation commit or version-sync automation.
Rentile raises typed RentileException subclasses with stable error codes, pipeline stages, redacted diagnostics, and affected tile identities. It does not retry, fall back, or return a partial output batch. CancellationException is propagated unchanged so callers retain control of cancellation and priority. Raw-resource cache entries completed for other tiles are not rolled back when a later tile fails.
Messages and causes from injected transport/store adapters are not forwarded because they may contain signed URLs or secret-bearing paths. Record adapter-specific failures in redacted form inside the adapter, and use Rentile's typed status, retry delay, resource class, stage, and affected tiles for recovery decisions.
Rentile is licensed under Apache-2.0. See THIRD_PARTY_NOTICES.md for dependency and adapted-code notices.