Skip to main content

ModelRegistry

Struct ModelRegistry 

Source
pub struct ModelRegistry { /* private fields */ }
Expand description

Model registry manager

Implementations§

Source§

impl ModelRegistry

Source

pub fn new(storage: Arc<ModelStorage>) -> Result<Self>

Source

pub async fn refresh_openrouter_catalog_from_api( &mut self, api_key: &str, ) -> Result<()>

Refresh the OpenRouter model catalog from the live OpenRouter API. This replaces any existing OpenRouter entries with the up-to-date list of models visible to the provided API key.

Source

pub async fn refresh_huggingface_catalog_from_api( &mut self, limit: usize, ) -> Result<()>

Refresh the Hugging Face GGUF/GGML model catalog from the HF Hub API. Fetches top models by downloads and extracts available quantized files.

Source

pub fn update_compatibility_scores( &mut self, recommender: &ModelRecommender, hardware: &HardwareProfile, )

Recompute compatibility scores for all known local models based on the current hardware profile and user preferences. This is used by the model manager to support “Best Match” sorting in the UI.

Source

pub async fn scan_storage(&mut self) -> Result<()>

Scan local storage for existing models and populate registry

Source

pub async fn update_model_status_from_storage( &mut self, model_id: &str, ) -> Result<()>

Update model status based on file existence

Source

pub async fn update_all_model_statuses_from_storage(&mut self) -> Result<()>

Update all model statuses based on file existence in storage

Source

pub fn get_installed_model_path(&self, model_id: &str) -> Option<PathBuf>

Get the path of an installed model by ID

Source

pub async fn get_model_metadata(&self, model_id: &str) -> Option<ModelMetadata>

Get the complete model metadata including runtime binaries information

Source

pub fn add_model(&mut self, model_info: ModelInfo)

Add a model to the registry

Source

pub fn get_model(&self, model_id: &str) -> Option<&ModelInfo>

Get model information by ID

Source

pub fn get_model_mut(&mut self, model_id: &str) -> Option<&mut ModelInfo>

Get mutable reference to model information

Source

pub fn list_models(&self) -> Vec<&ModelInfo>

List all models in registry

Source

pub fn list_models_by_status(&self, status: ModelStatus) -> Vec<&ModelInfo>

List models by status

Source

pub fn search_models(&self, query: &str) -> Vec<&ModelInfo>

Search models by name or tags

Get models sorted by compatibility score for current hardware

Source

pub fn update_model_status(&mut self, model_id: &str, status: ModelStatus)

Update model status

Source

pub fn remove_model(&mut self, model_id: &str) -> bool

Remove a model from registry

Source

pub fn get_statistics(&self) -> RegistryStats

Get registry statistics

Source

pub fn get_models_by_category(&self, category: &str) -> Vec<&ModelInfo>

Get models by category/tags

Get trending models (recently added or popular tags)

Source

pub fn get_models_by_task(&self, task: &str) -> Vec<&ModelInfo>

Get models by task type (e.g., “chat”, “coding”, “text-generation”)

Source

pub async fn save_registry(&self) -> Result<()>

Save registry to persistent storage

Source

pub fn populate_default_catalog(&mut self)

Populate the registry with well-known models from all sources. Only adds models that are not already in the registry. Also removes stale models that are no longer available.

Source

pub async fn populate_default_openrouter_models(&mut self)

Populate registry with OpenRouter models fetched from the public API. This is called when no API key is available to show users what models are available.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Chain<T> for T

Source§

fn len(&self) -> usize

The number of items that this chain link consists of.
Source§

fn append_to(self, v: &mut Vec<T>)

Append the elements in this link to the chain.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more