Skip to content

ai: add shimmy as alternative LLM backend - #5

Open
awdemos wants to merge 1 commit into
OrangeLab-space:mainfrom
awdemos:add-shimmy-support
Open

awdemos wants to merge 1 commit into
OrangeLab-space:mainfrom
awdemos:add-shimmy-support

Conversation

@awdemos

@awdemos awdemos commented Mar 9, 2026

Copy link
Copy Markdown
Contributor

Shimmy is a lightweight Rust-based OpenAI-compatible API server for GGUF models. It supports CPU and GPU inference (CUDA, Vulkan, OpenCL, MLX).

  • Add shimmy component alongside existing ollama
  • OpenWebUI and n8n can use either backend (ollama preferred, shimmy fallback)
  • CPU by default it auto-detects GPU when enabled
  • Health checks on /health endpoint

Users can choose between ollama or shimmy.

Shimmy is a lightweight Rust-based OpenAI-compatible API server for
GGUF models. It supports CPU and GPU inference (CUDA, Vulkan, OpenCL, MLX).

- Add shimmy component alongside existing ollama
- OpenWebUI and n8n can use either backend (ollama preferred, shimmy fallback)
- CPU-only by default, auto-detects GPU when enabled
- Health checks on /health endpoint

Users can choose between ollama (more features) or shimmy (lighter weight).
@AdamNowotny

Copy link
Copy Markdown
Collaborator

Thanks @awdemos ! So this can replace Ollama for both OpenWebUI and N8n?
Might be worth looking into putting ollamaUrl in the config soon so users can decide what they prefer even if both are installed...

Let's get this one merged first, can you just use image instead of imageTag? It's a recent change in preparation for being able to have a local image registry as well.

Also there is no need to add these AMD specific vars, it's handled in https://github.com/QC-Labs/orange-lab/blob/main/src/containers.ts#L175-L183

ports: [{ name: 'http', port: 11434 }],
volumeMounts: [{ mountPath: '/app/models' }],
commandArgs,
image: `ghcr.io/michael-a-kuykendall/shimmy:${imageTag}`,

@AdamNowotny AdamNowotny Mar 12, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not needed anymore, just needs <app>:image (shimmy:image=ghcr.io/michael-a-kuykendall/shimmy:latest) added to Pulumi.yaml

SHIMMY_HOST: '0.0.0.0',
SHIMMY_BASE_GGUF: '/app/models',
HSA_OVERRIDE_GFX_VERSION: amdGpu && gfxVersion ? gfxVersion : undefined,
HCC_AMDGPU_TARGETS: amdGpu && amdTargets ? amdTargets : undefined,

@AdamNowotny AdamNowotny Mar 12, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

standard AMD driver vars, handled in containers.ts whenever <app>:gpu=amd, can be removed

@AdamNowotny

Copy link
Copy Markdown
Collaborator

@awdemos did you get this working with ghcr.io/michael-a-kuykendall/shimmy:latest image? I had to add shimmy to command args to prevent the pod crashing on start but even then GPU support and llama backend is not included in that image:

$ shimmy gpu-info
🖥️  GPU Backend Information

❌ llama.cpp backend not available (compile with --features llama)
🍎 MLX Backend: Disabled (compile with --features mlx)

💡 To enable GPU acceleration:
   cargo install shimmy --features llama-cuda    # NVIDIA CUDA
   cargo install shimmy --features llama-vulkan  # Cross-platform Vulkan
   cargo install shimmy --features llama-opencl  # AMD/Intel OpenCL
   cargo install shimmy --features gpu           # All GPU backends

That causes all models fail to load, even with CPU.

@AdamNowotny

Copy link
Copy Markdown
Collaborator

New image has been published so this might be worth revisiting (Michael-A-Kuykendall/shimmy#146 (comment)). The files need to move to stacks/ai

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants