Repository navigation
VisionDemo: live object detection from a SKaiNET cartridge - #52
Merged
Merged
Conversation
Live camera YOLOv8n detection on Android, consumed entirely through the published cartridge artifacts (sk.ainet.cartridge:detection-yolov8-iree:0.2.2, yolo/v1 contract transitively) — the example owns no model code and no weights. - composeApp: Compose Multiplatform library; all UI in commonMain against the yolo/v1 API (glass HUD, FPS sparkline, backend pills, capture gallery, detections viewer, image-picker path). Five expect seams (camera, packs, engine, picker, font); Android actuals wired (CameraX + IREE module runner). - androidApp: code-free APK shell; bundlePacks copies locally materialized packs (-PpacksDir=, default: sibling blueprints checkout). No packs is a first-class state: fresh clone builds, installs and shows the materialize steps instead of the feed — the AGPL-3.0 weights never ship (README). - PoweredBySKaiNET from skainet-ui, versions generated from the catalog. - Per-example CI (assembleDebug on a bare checkout), root README gallery entry. Verified on a Pixel 8a: vulkan-arm64 pack live at ~186 ms/frame, detections rendered 1:1; pack-less APK verified with -PpacksDir=/nonexistent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The bolt gives way to the lens mark: dark gradient ground, silver lens barrel, red glowing trigger, red detection brackets (skainet-lens-icons v6, master 512). - Adaptive icon: per-density ic_launcher_foreground.png with the art at 72/108dp and the art's own vertical gradient extended to the full canvas, so round and squircle masks keep all four brackets inside the safe zone (verified against simulated masks); background color = mid-gradient #222325. - Legacy + round launchers at all five densities (round ones alpha-masked). - Themed-icon (monochrome) layer redrawn as a vector of the same mark: brackets + lens ring + trigger dot. - docs/icons/: the 512 Play Store listing master and an iOS AppIcon.appiconset (single-size 1024, Contents.json) ready for a future iosApp target. - Old bolt vectors removed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This was referenced Oct 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The first vision example, and the first consumer of the published cartridge artifacts.
What it is
Live camera object detection (YOLOv8n, COCO, IREE/Vulkan) in the lovable-prototype design: glass HUD with FPS readout and sparkline, CPU/VULKAN/VK·320 backend pills, capture gallery, detections viewer, image-picker path. All UI is
commonMainagainst theyolo/v1contract; Android (CameraX + the IREE module runner) is the first wired platform — desktop/iOS need only their own actuals.How it follows the house rules
includeBuild("../skainet-ui"), banner isPoweredBySKaiNETwith versions generated from the catalog (generateBuildInfo).composeApp(KMP library) +androidApp(code-free shell — AGP 9 forbids a KMP application module). Nosharedmodule: there is exactly one consumer, and the non-UI surface is the published cartridge library itself.sk.ainet.cartridge:detection-yolov8-iree:0.2.2(brings theyolo/v1profile, the IREE runner 0.63.1 and engine 0.62.1 transitively). Kotlin 2.4.21 / CMP 1.12.2 / compileSdk 37 to match; AGP pinned 9.3.1 to match skainet-ui (one AGP per build).bundlePackscopies locally materialized packs into the APK (-PpacksDir=, default: sibling blueprints checkout); a fresh clone builds and runs pack-less and shows the materialization steps in-app. README spells out the AGPL-3.0 stance; Orbitron ships with its OFL-1.1 text.visiondemo-ci.yml, path-filtered,assembleDebugon a bare checkout (proves Central resolution + JNI packaging, no weights involved).Verified
vulkan-arm64at ~186 ms/frame, boxes 1:1 on the analyzed frames; the 320 speed-variant pack runs ~57 ms (≈17 fps).-PpacksDir=/nonexistentbuild: APK assembles, app shows the pack-less screen.Gallery screenshot to follow (the one taken today caught a non-publishable scene and was discarded).
🤖 Generated with Claude Code