Add reusable native model package manager - #230
Conversation
|
@mirek190 I don’t think we should remove the Python model_manager_v2.py or rewrite the docs around the assumption that the native UI/server is the only model-download path. The native manager is a good addition, but the Python manager is still a useful alternative, especially for CLI, Docker, remote, and scripted/headless workflows. It feels odd to require users to start the UI or call server management endpoints just to download a model. I’d prefer to keep model_manager_v2.py for now and present the native manager as an additional path used by the built-in UI. Long term, I think the C++ package management logic should live in a dedicated reusable library instead of being owned by the server. The server can expose it for the native UI, but CLI, Docker, remote, and scripted/headless users should not need to start audiocpp_server just to download models. Once there is a native standalone manager with similar list / info / install / clean coverage, then removing the Python v2 manager would make much more sense. |
|
So download manager should exist as a library available for server, cli and docker? |
For the C++-based manager, I mean making the core functionality a framework library so both the server and CLI can use it, while exposing an interface for model downloads (e.g., |
ca0f282 to
a98b9cb
Compare
|
Updated this PR in response to the architecture feedback. The Python v2 manager has been restored and remains supported. The native implementation is now additive and split into a reusable framework component rather than being owned by the server:
The dependency direction is therefore: Validation completed locally:
The updated commit is |
|
Too late - already done. :) As I had a fully working model manager I needed only few changes so that could works for server, cli, doker. |
|
Fixed the Nix failures in The failure was caused by the new native package-manager target calling I also corrected the install phase discovered while tracing this failure: it copied the native
Fresh CPU and Vulkan Nix checks are running now. |
|
I can’t keep up 😂! |
Are you working on MiniMax audio ? I'm asking because I already have working importation and will be testing tomorrow. |
|
@mirek190 Yes! End to end done and do some finetuning of code now |
What changed
audiocpp_package_manager.audiocpp_model_managerexecutable for CLI, Docker, and headless workflows.audiocpp_serverto call the same library directly while retaining its asynchronous HTTP job API for the native WebUI.tools/model_manager_v2.pyavailable and supported during the migration.Architecture
model_specs/*.jsonremains the editable source of truth. CMake embeds the active package catalog into the reusable library, while an explicitly supplied external catalog can still override it.The standalone executable exposes:
list [--remote]info PACKAGE [--remote]install PACKAGE [--overwrite]clean PACKAGEremove PACKAGElistandinfoproduce machine-readable JSON. The native executable is intentionally lightweight and does not link the inference runtime.Validation
check_loader_catalog_sync.py --self-testpassed.list, single-packageinfo, unknown-package failure, and portable execution without external specs passed.audiocpp_model_manager.exeandaudiocpp_server.exe.git diff --checkpassed.