Skip to content

[API] add string-id model catalog, multimodal composer, and QNN bring-up#35

Closed
dlwlzzero wants to merge 1 commit into
nntrainer:mainfrom
dlwlzzero:chore/public-scrub-v0.4.0
Closed

[API] add string-id model catalog, multimodal composer, and QNN bring-up#35
dlwlzzero wants to merge 1 commit into
nntrainer:mainfrom
dlwlzzero:chore/public-scrub-v0.4.0

Conversation

@dlwlzzero

Copy link
Copy Markdown

Summary

Brings the Quick.AI public API up to the v0.4.0 surface in a single commit. Models are now identified by a string model id (not a C enum): each model self-registers its descriptor at load time and the catalog is exposed via getModelCatalogJson() (C API) and ModelCatalog (Android AAR). The build discovers model directories generically, so additional models can be dropped in without editing build files or the public API.

The tree and history contain no proprietary model sources or references; git grep -i gauss matches only the Qualcomm SDK GAUSSIAN constant.

Change

  • API: string-id descriptor registry + catalog JSON; per-model self-registration via constructors; a lazy (Meyers-singleton) registry so cross-library registration survives static-init order.
  • API: generic multimodal composer and a vision-encoder capability, decoupled from any specific model.
  • QNN: set the HTP backend-ext-config before multi-model sub-model loads; gemma4-e2b-qnn (NATIVE/NPU) bring-up.
  • AAR: ModelCatalog.selectableFamilies() to hide embedding-only models in the Run/OpenAI and Chat family pickers.
  • Build: model build hooks (meson + ndk-build) auto-discover model directories instead of naming them, so proprietary models plug in cleanly.
  • Guards: allow-list .gitignore and a pre-push hook that block any non-allow-listed model source directory from reaching the public remote (allow-list = src/models/qnn/gemma4-e2b-qnn).

Verified on device (S26 Ultra): the Chat and OpenAI tabs run qwen3-0.6b, gemma4-e2b-qnn (NPU), and function_gemma; the catalog lists no proprietary families.

## Summary

Brings the Quick.AI public API up to the v0.4.0 surface in a single commit.
Models are now identified by a string model id (not a C enum): each model
self-registers its descriptor at load time and the catalog is exposed via
`getModelCatalogJson()` (C API) and `ModelCatalog` (Android AAR). The build
discovers model directories generically, so additional models can be dropped
in without editing build files or the public API.

The tree and history contain no proprietary model sources or references;
`git grep -i gauss` matches only the Qualcomm SDK `GAUSSIAN` constant.

## Change

- API: string-id descriptor registry + catalog JSON; per-model self-registration
  via constructors; a lazy (Meyers-singleton) registry so cross-library
  registration survives static-init order.
- API: generic multimodal composer and a vision-encoder capability, decoupled
  from any specific model.
- QNN: set the HTP backend-ext-config before multi-model sub-model loads;
  gemma4-e2b-qnn (NATIVE/NPU) bring-up.
- AAR: `ModelCatalog.selectableFamilies()` to hide embedding-only models in the
  Run/OpenAI and Chat family pickers.
- Build: model build hooks (meson + ndk-build) auto-discover model directories
  instead of naming them, so proprietary models plug in cleanly.
- Guards: allow-list `.gitignore` and a `pre-push` hook that block any
  non-allow-listed model source directory from reaching the public remote
  (allow-list = `src/models/qnn/gemma4-e2b-qnn`).

Verified on device (S26 Ultra): the Chat and OpenAI tabs run qwen3-0.6b,
gemma4-e2b-qnn (NPU), and function_gemma; the catalog lists no proprietary
families.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@dlwlzzero dlwlzzero closed this Jun 4, 2026
@dlwlzzero dlwlzzero deleted the chore/public-scrub-v0.4.0 branch June 4, 2026 04:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant