@@ -358,6 +358,9 @@ int rcli_init(RCLIHandle handle, const char* models_dir, int gpu_layers) {
358358 std::string engine_pref = engine->config_engine_override .empty ()
359359 ? rcli::read_engine_preference ()
360360 : engine->config_engine_override ;
361+ if (engine_pref == " auto" || engine_pref.empty ()) {
362+ engine_pref = rastack::MetalRTLoader::gpu_supported () ? " metalrt" : " llamacpp" ;
363+ }
361364 if (engine_pref == " metalrt" && !rastack::MetalRTLoader::gpu_supported ()) {
362365 LOG_WARN (" RCLI" , " MetalRT requires Apple M3+ (Metal 3.1). Falling back to llama.cpp." );
363366 fprintf (stderr, " MetalRT requires Apple M3 or later. Falling back to llama.cpp.\n " );
@@ -577,43 +580,6 @@ int rcli_init(RCLIHandle handle, const char* models_dir, int gpu_layers) {
577580 }
578581 config.llm_backend = rastack::LlmBackend::LLAMACPP;
579582 }
580- } else if (engine_pref == " auto" || engine_pref.empty ()) {
581- config.llm_backend = rastack::LlmBackend::AUTO;
582-
583- // For AUTO mode, populate MetalRT paths so the orchestrator can
584- // use MetalRT when it decides to (without paths it would hard-fail).
585- if (rastack::MetalRTLoader::gpu_supported ()) {
586- auto & mrt_loader = rastack::MetalRTLoader::instance ();
587- if (mrt_loader.is_available ()) {
588- auto models = rcli::all_models ();
589- for (auto & m : models) {
590- if (m.metalrt_supported && rcli::is_metalrt_model_installed (m)) {
591- config.metalrt .model_dir = rcli::metalrt_models_dir () + " /" + m.metalrt_dir_name ;
592- break ;
593- }
594- }
595- if (!config.metalrt .model_dir .empty ()) {
596- auto comps = rcli::metalrt_component_models ();
597- std::string stt_pref = rcli::read_selected_metalrt_stt_id ();
598- for (auto & cm : comps) {
599- if (!rcli::is_metalrt_component_installed (cm)) continue ;
600- std::string comp_dir = rcli::metalrt_models_dir () + " /" + cm.dir_name ;
601- if (cm.component == " stt" && config.metalrt_stt .model_dir .empty ()) {
602- if (!stt_pref.empty () && cm.id != stt_pref) continue ;
603- config.metalrt_stt .model_dir = comp_dir;
604- engine->stt_model_name = cm.name ;
605- } else if (cm.component == " tts" && config.metalrt_tts .model_dir .empty ()) {
606- config.metalrt_tts .model_dir = comp_dir;
607- auto * pinfo = rastack::find_personality (engine->personality_key );
608- config.metalrt_tts .voice = (pinfo && pinfo->voice [0 ] != ' \0 ' )
609- ? pinfo->voice : " af_heart" ;
610- engine->tts_model_name = cm.name ;
611- config.audio .playback_rate = 24000 ;
612- }
613- }
614- }
615- }
616- }
617583 }
618584 }
619585
0 commit comments