Serveur d'inférence IA local léger, un seul binaire de seulement 5 Mo, offrant une interface compatible avec l'API OpenAI, prenant en charge les modèles GGUF et les adaptateurs LoRA.

MITRustshimmyMichael-A-Kuykendall 2.8k Last Updated: October 04, 2025

Shimmy - Serveur d'inférence IA local ultra-léger

Aperçu du projet

Shimmy est un serveur d'inférence local à binaire unique de 5,1 Mo qui fournit des points de terminaison compatibles avec l'API OpenAI pour les modèles GGUF. Il est conçu comme une "infrastructure invisible" pour rendre le développement d'IA locale sans friction.

Fonctionnalités clés

🚀 Extrêmement léger

  • Taille du binaire: Seulement 5,1 Mo (contre 680 Mo pour Ollama)
  • Temps de démarrage: <100 ms (contre 5-10 secondes pour Ollama)
  • Empreinte mémoire: <50 Mo (contre 200 Mo+ pour Ollama)

🔧 Fonctionnement sans configuration

  • Allocation automatique de port: Évite les conflits de port
  • Découverte automatique de modèles: Prend en charge plusieurs sources de modèles
    • Cache Hugging Face: ~/.cache/huggingface/hub/
    • Modèles Ollama: ~/.ollama/models/
    • Répertoire local: ./models/
    • Variable d'environnement: SHIMMY_BASE_GGUF=path/to/model.gguf

🎯 Compatibilité parfaite

  • 100% compatible avec l'API OpenAI: Remplace directement les outils existants
  • Prêt à l'emploi: Outils comme VSCode, Cursor, Continue.dev ne nécessitent aucune modification
  • Support multiplateforme: Linux, macOS, Windows

Architecture technique

Pile technologique principale

  • Langage: Rust + Tokio (sécurité mémoire, performances asynchrones)
  • Moteur d'inférence: Backend llama.cpp (inférence GGUF standard de l'industrie)
  • Conception de l'API: Compatible OpenAI (remplacement plug-and-play)

Formats de modèles pris en charge

  • Modèles GGUF: Format de support principal
  • SafeTensors: Support natif, vitesse de chargement multipliée par 2
  • Adaptateurs LoRA: Support de premier ordre, du modèle entraîné à l'API de production en seulement 30 secondes

Installation et utilisation

Installation rapide

Méthode 1: Via Cargo

cargo install shimmy

Méthode 2: Télécharger le binaire pré-construit (Windows)

curl -L https://github.com/Michael-A-Kuykendall/shimmy/releases/latest/download/shimmy.exe

Méthode 3: Installation macOS

# Installer les dépendances
brew install cmake rust
# Installer shimmy
cargo install shimmy

Utilisation de base

1. Télécharger un modèle

# Télécharger des modèles compatibles
huggingface-cli download microsoft/Phi-3-mini-4k-instruct-gguf --local-dir ./models/
huggingface-cli download bartowski/Llama-3.2-1B-Instruct-GGUF --local-dir ./models/

2. Démarrer le serveur

# Allocation automatique de port
shimmy serve

# Spécifier le port manuellement
shimmy serve --bind 127.0.0.1:11435

3. Configurer les outils IA

Configuration VSCode:

{
  "github.copilot.advanced": {
    "serverUrl": "http://localhost:11435"
  }
}

Configuration Continue.dev:

{
  "models": [{
    "title": "Local Shimmy",
    "provider": "openai", 
    "model": "your-model-name",
    "apiBase": "http://localhost:11435/v1"
  }]
}

Outils en ligne de commande

Commandes de base

shimmy serve                        # Démarrer le serveur (allocation automatique de port)
shimmy serve --bind 127.0.0.1:8080 # Liaison de port manuelle
shimmy list                         # Afficher les modèles disponibles
shimmy discover                     # Actualiser la découverte de modèles
shimmy generate --name X --prompt "Hi" # Tester la génération
shimmy probe model-name             # Vérifier le chargement du modèle

Points de terminaison de l'API

Points de terminaison principaux

  • GET /health - Vérification de l'état de santé
  • POST /v1/chat/completions - Chat compatible OpenAI
  • GET /v1/models - Lister les modèles disponibles
  • POST /api/generate - API native Shimmy
  • GET /ws/generate - Streaming WebSocket

Exemple d'utilisation

# Tester l'API
curl -X POST http://localhost:11435/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Comparaison des performances

Métrique Shimmy Ollama llama.cpp
Taille du binaire 5,1 Mo 🏆 680 Mo 89 Mo
Temps de démarrage <100 ms 🏆 5-10 s 1-2 s
Utilisation de la mémoire 50 Mo 🏆 200 Mo+ 100 Mo
API OpenAI 100% 🏆 Support partiel Aucun

Avantages clés

🔒 Priorité à la confidentialité

  • Le code reste sur la machine locale
  • Aucun risque de fuite de données
  • Fonctionnement entièrement hors ligne

💰 Rentabilité

  • Pas de facturation par jeton
  • Nombre illimité de requêtes
  • Une seule installation, utilisation permanente

⚡ Performances excellentes

  • Inférence locale, réponse en moins d'une seconde
  • Faible consommation de mémoire
  • Démarrage rapide

🔄 Déploiement flexible

  • Fichier binaire unique
  • Aucune dépendance externe
  • Compatible multiplateforme

Fonctionnalités étendues

Support des adaptateurs LoRA

Shimmy offre un support de premier ordre pour les adaptateurs LoRA, permettant un déploiement rapide des modèles entraînés vers une API de production :

# Charger un adaptateur LoRA
shimmy serve --lora-adapter path/to/adapter

Changement de modèle à chaud

Prend en charge le changement dynamique de modèle pendant l'exécution, sans redémarrer le serveur.

Accélération GPU

  • macOS: Accélération GPU Metal automatique
  • Multiplateforme: Prend en charge divers backends GPU

Communauté et support

Ressources communautaires

Résumé

Shimmy est une solution révolutionnaire d'inférence IA locale qui prouve que parfois "moins, c'est plus". Grâce à sa conception ultra-légère et à son concept de zéro configuration, Shimmy offre aux développeurs une infrastructure IA locale véritablement "prête à l'emploi", tout en maintenant des performances et une compatibilité de niveau entreprise. Que vous soyez un développeur d'applications IA, un chercheur ou un utilisateur soucieux de sa vie privée, Shimmy est un excellent choix à considérer.

Star History Chart