Ready-made example plugins for the HALDiSh Kotlin Multiplatform HAL client. Each is an independent module, published to Maven Central.
| Module | Pattern | Artifact |
|---|---|---|
api-key |
KMP (commonMain) | com.helpchoice.nahal-plugins:haldish-plugin-api-key |
bearer-token |
Per-platform | com.helpchoice.nahal-plugins:haldish-plugin-bearer-token |
base-url-rewriter |
Per-platform | com.helpchoice.nahal-plugins:haldish-plugin-base-url-rewriter |
chain |
KMP (combinator) | com.helpchoice.nahal-plugins:haldish-plugin-chain |
curie |
KMP (preLink) |
com.helpchoice.nahal-plugins:haldish-plugin-curie |
logger |
KMP + expect/actual file I/O | com.helpchoice.nahal-plugins:haldish-plugin-logger |
Each module's own README.md documents its configuration and hooks.
JVM, JS (IR), WasmJS, Linux (x64/arm64), macOS (x64/arm64), iOS (x64/arm64/simulator-arm64), Windows (mingwX64) — the same target set as the library.
Two independent mechanisms, and every module here ships for both:
- HALDiSh platform discovery — JVM
ServiceLoader(META-INF/services/com.helpchoice.nahal.haldish.plugin.HaldishPlugin) orHALDISH_PLUGIN_PATHpointing at a jar; on native,dlopenoflibhaldish_plugin.*resolving thehaldish_plugin_*C symbols. - NaHAL declarative config —
HALDISH_CONFIG(JSON/YAML) orwindow.__nahalConfig, keyed by the plugin's fully-qualified class name. This bypasses mechanism 1 entirely.
See ../nahal/PLUGIN_CONTRACT.md for the authoritative contract.
./gradlew build # all modules, all host-buildable targets
./gradlew :curie:jvmTest # one module's JVM tests
./gradlew stagePluginArtifacts # JVM jars + native shared libs into build/release (no upload)Publishing: ./gradlew publishToMavenCentral (signing required).
haldish comes from HALDiSh_KMP; nahal-ui / nahal-core
come from NaHAL and are used only by the demo runners
(jvmRun, and chain's macOS app binary) — never by the published plugin klibs. Until those
projects publish 2.0.0 to Central, settings.gradle.kts resolves them from mavenLocal(); see
CLAUDE.md for the cold-start order.
Apache-2.0 — see LICENSE.