/ Annuaire / Playground / CodeRunner
● Communauté instavm ⚡ Instantané

CodeRunner

par instavm · instavm/coderunner

Exécution de code isolée en VM pour les agents — Python, Playwright, kernel Jupyter persistant, le tout sandboxé hors de votre machine hôte.

CodeRunner donne à Claude (et aux autres agents) un sandbox sécurisé et persistant : exécuter Python avec un kernel Jupyter longue durée, scraper avec Playwright, manipuler PDFs et images. L'isolation au niveau VM signifie que vous pouvez laisser un agent exécuter du code non fiable sans endommager votre machine. S'expose lui-même comme serveur MCP pour fonctionner dans n'importe quel client.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

prêt

Installer

Choisissez votre client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "coderunner-skill": {
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ],
      "_inferred": true
    }
  }
}

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "coderunner-skill",
      "command": "git",
      "args": [
        "clone",
        "https://github.com/instavm/coderunner",
        "~/.claude/skills/coderunner"
      ]
    }
  ]
}

Continue utilise un tableau d'objets serveur plutôt qu'une map.

~/.config/zed/settings.json
{
  "context_servers": {
    "coderunner-skill": {
      "command": {
        "path": "git",
        "args": [
          "clone",
          "https://github.com/instavm/coderunner",
          "~/.claude/skills/coderunner"
        ]
      }
    }
  }
}

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

claude mcp add coderunner-skill -- git clone https://github.com/instavm/coderunner ~/.claude/skills/coderunner

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : CodeRunner

Laisser Claude exécuter du code non fiable sans mettre votre ordinateur en danger

👤 Développeurs expérimentant avec du code auto-généré ⏱ ~15 min intermediate

Quand l'utiliser : Vous voulez que Claude écrive + exécute un script que vous n'avez pas entièrement relu.

Prérequis
  • macOS Apple Silicon + Python 3.10+ — Limitation actuelle ; le support Linux varie
  • Skill installé — git clone + ./install.sh selon le README du projet
Déroulement
  1. Lui confier la tâche
    Use coderunner. Write a Python script that downloads my Strava activities CSV from <url>, parses, and computes weekly mileage. Run it in the sandbox.✓ Copié
    → Script exécuté ; sortie affichée ; rien n'a touché mon système de fichiers
  2. Itérer
    Add a chart of weekly mileage. Re-run.✓ Copié
    → Graphique rendu ; état du kernel préservé (pas de ré-import)
  3. Exporter les résultats
    Save CSV + chart to ./out/ on host (this only).✓ Copié
    → Seul ce chemin est écrit ; le sandbox reste hermétique

Résultat : Expériences rapides sans «oups, ça a supprimé /Users».

Pièges
  • Accès réseau toujours autorisé dans le sandbox — Désactiver le réseau si vous exécutez du code vraiment non fiable ; sinon il peut exfiltrer des données
Combiner avec : filesystem

Analyse de données persistante avec Claude

👤 Analystes utilisant Claude comme copilote Jupyter ⏱ ~30 min beginner

Quand l'utiliser : Vous voulez une session d'exploration de données de 30 minutes sans perdre l'état du kernel.

Déroulement
  1. Charger les données une fois
    Use coderunner. Load /data/sales.csv into df. Show schema + 5 sample rows.✓ Copié
    → df dans le kernel ; persiste pour la session
  2. Requêtes ad hoc
    Pivot by region × month, show top 5 anomalies.✓ Copié
    → Pivot + lignes signalées
  3. Exporter
    Save the anomalies subset to /out/anomalies.csv on host.✓ Copié
    → CSV dans /out/

Résultat : Analyse de qualité notebook via le chat, avec du code qui s'exécute vraiment.

Pièges
  • L'état du kernel dérive sur de longues sessions ; résultats basés sur des variables périmées — Redémarrer le kernel entre les tâches sans rapport ; Claude peut émettre %reset
Combiner avec : filesystem

Scraper un site JS intensif en toute sécurité

👤 Développeurs ayant besoin de données ponctuelles depuis des SPAs ⏱ ~20 min intermediate

Quand l'utiliser : Le site nécessite un vrai navigateur ; vous ne voulez pas un processus Chrome sur votre hôte.

Déroulement
  1. Ouvrir une session
    Use coderunner Playwright. Open <url>, wait for the table, extract rows as JSON.✓ Copié
    → JSON retourné ; navigateur resté dans le sandbox
  2. Itérer les sélecteurs
    Selector missed the price column; adjust to find it.✓ Copié
    → Sélecteur mis à jour ; données complètes

Résultat : Données extraites ; aucune empreinte navigateur sur l'hôte.

Pièges
  • Le site détecte le mode headless et bloque — Passer aux options chromium avec --headed=false-but-stealth que le skill expose

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

coderunner-skill + filesystem

Déplacer les données dans/hors du sandbox uniquement via des chemins montés

Mount only /Users/me/data and /Users/me/out; everything else is read-only.✓ Copié
coderunner-skill + duckduckgo-mcp

Pipeline rechercher → récupérer → analyser

Search via duckduckgo, scrape via coderunner Playwright, analyze in Python.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
run_python code: str Toute exécution de code 0
browser_navigate url, wait_for? Session Playwright pour le scraping SPA 0
browser_extract selector, format Extraire des données après navigation 0
pdf_ops input_path, op, args Fusion / division / extraction PDF 0
image_ops input_path, op, args Redimensionnement, conversion de format, OCR 0
kernel_reset Entre des sessions sans rapport 0

Coût et limites

Coût d'exécution

Quota d'API
Aucun — local
Tokens par appel
Juste les tokens de code/sortie
Monétaire
Gratuit
Astuce
Le kernel persistant économise des tokens vs re-import ; réinitialiser uniquement quand l'état est erroné

Sécurité

Permissions, secrets, portée

Portées minimales : Uniquement les chemins filesystem montés Réseau activé/désactivé via config
Stockage des identifiants : Ne pas mettre de secrets dans le sandbox sauf si vous acceptez que l'agent les voie
Sortie de données : Si le réseau est activé, le sandbox peut atteindre n'importe quelle URL — désactiver pour les exécutions sensibles
Ne jamais accorder : Montage de $HOME ou / — le sandbox perd tout son intérêt

Dépannage

Erreurs courantes et correctifs

install.sh échoue sous Linux

Le projet est macOS Apple Silicon en premier lieu ; le support Linux varie. Vérifier les issues pour les notes spécifiques à la distro

État Playwright périmé

Exécuter kernel_reset ; l'ancien contexte navigateur peut persister entre les appels

Le sandbox ne peut pas accéder à internet

Réseau désactivé dans la config ; activer si nécessaire. Inversement, isoler quand inutile

Dépendances manquantes pour le skill PDF/image

L'image container intègre les communes ; reconstruire l'image pour ajouter des dépendances personnalisées

Alternatives

CodeRunner vs autres

AlternativeQuand l'utiliserCompromis
Anthropic code execution betaVous voulez l'exécution côté serveur sans sandbox localCôté cloud ; les données quittent votre machine
Docker à la mainVous voulez le contrôle total de l'image containerConfiguration manuelle ; pas de serveur MCP clé en main

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills