Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions crates/openshell-providers/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ impl ProviderRegistry {
registry.register(providers::nvidia::NvidiaProvider);
registry.register(providers::gitlab::GitlabProvider);
registry.register(providers::github::GithubProvider);
registry.register(providers::model_runner::ModelRunnerProvider);
registry.register(providers::outlook::OutlookProvider);
registry
}
Expand Down Expand Up @@ -153,6 +154,7 @@ pub fn normalize_provider_type(input: &str) -> Option<&'static str> {
"nvidia" => Some("nvidia"),
"gitlab" | "glab" => Some("gitlab"),
"github" | "gh" => Some("github"),
"model-runner" | "model_runner" => Some("model-runner"),
"outlook" => Some("outlook"),
_ => None,
}
Expand Down
1 change: 1 addition & 0 deletions crates/openshell-providers/src/profiles.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const BUILT_IN_PROFILE_YAMLS: &[&str] = &[
include_str!("../../../providers/copilot.yaml"),
include_str!("../../../providers/github.yaml"),
include_str!("../../../providers/gitlab.yaml"),
include_str!("../../../providers/model-runner.yaml"),
include_str!("../../../providers/nvidia.yaml"),
include_str!("../../../providers/openai.yaml"),
include_str!("../../../providers/opencode.yaml"),
Expand Down
1 change: 1 addition & 0 deletions crates/openshell-providers/src/providers/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ pub mod copilot;
pub mod generic;
pub mod github;
pub mod gitlab;
pub mod model_runner;
pub mod nvidia;
pub mod openai;
pub mod opencode;
Expand Down
35 changes: 35 additions & 0 deletions crates/openshell-providers/src/providers/model_runner.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

use crate::{DiscoveredProvider, ProviderError, ProviderPlugin};

pub struct ModelRunnerProvider;

impl ProviderPlugin for ModelRunnerProvider {
fn id(&self) -> &'static str {
"model-runner"
}

fn discover_existing(&self) -> Result<Option<DiscoveredProvider>, ProviderError> {
Ok(Some(DiscoveredProvider::default()))
}
}

#[cfg(test)]
mod tests {
use super::ModelRunnerProvider;
use crate::ProviderPlugin;

#[test]
fn model_runner_provider_id_is_correct() {
assert_eq!(ModelRunnerProvider.id(), "model-runner");
}

#[test]
fn model_runner_discover_returns_default_provider() {
let result = ModelRunnerProvider
.discover_existing()
.expect("discovery should succeed");
assert!(result.is_some());
}
}
15 changes: 15 additions & 0 deletions providers/model-runner.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

id: model-runner
display_name: Docker Model Runner
description: Local AI inference via Docker Model Runner
category: inference
inference_capable: true
endpoints:
- host: model-runner.docker.internal
port: 80
protocol: rest
access: read-write
enforcement: enforce
binaries: [/usr/local/bin/docker]
Loading