Documentation DeepTask Sandbox

Un sandbox sécurisé et local-first qui connecte votre assistant IA à votre environnement.
10 min read
Updated

DeepTask Sandbox est une application de bureau multiplateforme pour exécuter des outils d'automatisation dans des environnements sécurisés et isolés. Construite avec Electron et intégrée à un serveur MCP (Model Context Protocol) basé sur Go, elle offre à votre assistant IA un environnement sûr et outillé sur votre machine. Par une conversation naturelle (via MCP), votre assistant peut exécuter des outils, accéder aux capacités locales autorisées et orchestrer des flux de travail de manière fiable — avec une exécution optionnelle via navigateur (Puppeteer) lorsque une tâche nécessite une vraie page.

Note : DeepTask Sandbox est gratuit pour un usage personnel et éducatif. L'usage commercial nécessite une licence payante avec tarification par abonnement mensuel selon le nombre d'utilisateurs.

Principes fondamentaux

  • Confidentialité d'abord : Toute l'automatisation s'exécute localement. Vos données ne quittent jamais votre machine.
  • Prêt pour les assistants : Conçu nativement pour le Model Context Protocol (MCP). Fonctionne avec Claude, Cursor et plus.
  • Sandbox outillable : Exécutez des outils Node pour l'automatisation backend et des outils Puppeteer pour l'automatisation navigateur et le web scraping — chacun dans des processus isolés.
  • Garde-fous intégrés : Planification (cron), historique des tâches, limites de ressources (mémoire 64–2048 Mo, seuils CPU), listes blanches de domaines, et paramètres/identifiants chiffrés.

01. Démarrage rapide

La mise en route prend moins de cinq minutes.

Étape 1 : Installer l'application de bureau

Téléchargez et exécutez l'installateur pour votre système d'exploitation.

Télécharger DeepTask Sandbox

Étape 2 : Connecter votre assistant

DeepTask utilise le Model Context Protocol (MCP) pour communiquer avec votre IA. Suivez les instructions pour votre environnement :

OSType d'installationChemin de commande
WindowsSystem (Default)C:\Program Files\deeptask-sandbox\resources\mcp\deeptask-mcp.exe
WindowsUserC:\Users\<user>\AppData\Local\Programs\deeptask-sandbox\resources\mcp\deeptask-mcp.exe
macOSStandard/Applications/DeepTask Sandbox.app/Contents/Resources/mcp/deeptask-mcp
LinuxStandard/opt/deeptask-sandbox/resources/mcp/deeptask-mcp

Exemple de bloc de configuration (Claude Desktop) :

{
  "mcpServers": {
    "deeptask": {
      "command": "PASTE_THE_COMMAND_PATH_HERE"
    }
  }
}

Étape 3 : Votre premier outil

Une fois connecté, demandez simplement à votre assistant de créer et exécuter un petit outil dans le sandbox.

Essayez cette invite :

"En utilisant DeepTask, écris un petit outil node qui récupère le titre de https://example.com et le retourne en sortie structurée."


02. Guide des outils

Les outils DeepTask sont puissants, type-safe et faciles à créer. Votre IA peut les générer pour vous, ou vous pouvez les écrire vous-même.

Anatomie d'un outil

Chaque outil se compose de deux parties : les Metadata (la configuration) et la fonction principale (la logique). Les noms d'outils doivent utiliser snake_case (minuscules, chiffres, tirets bas uniquement ; ex. web_scraper). Les outils doivent être des modules ESM (.mjs) ; Node.js 24+ est pris en charge.

import { browser } from "@deeptask/sandbox";

export const metadata = {
    name: "web_scraper",
    type: "puppeteer", // "node" for pure logic, "puppeteer" when you need a real browser
    description: "Extracts basic info from a webpage",
    networkEnabled: true,
    domainsAllowed: ["example.com"],
    inputSchema: {
        type: "object",
        properties: {
            url: {type: "string", format: "uri"}
        },
        required: ["url"]
    }
};

export async function main({url}) {
    const page = browser.getPage();
    await page.goto(url, {waitUntil: "networkidle0"});

    const title = await page.title();
    return {
        content: [{type: "text", text: `Scraped: ${title}`}],
        structuredContent: {title},
        isError: false
    };
}

Fonctions avancées

Téléversement de fichiers

Vous pouvez définir des entrées acceptant des fichiers (PDF, images, etc.) via JSON Schema : contentEncoding: "base64", contentMediaType (ex. application/pdf) et maxLength pour les limites de taille (base64 est ~33 % plus grand ; ex. ~5 Mo → maxLength: 6990506).

inputSchema: {
    properties: {
        document: {
            type: "string",
            contentEncoding: "base64",
            contentMediaType: "application/pdf",
            maxLength: 6990506,  // ~5MB file
            description: "Upload a PDF for analysis"
        }
    }
}

Dans votre outil, décodez avec atob(input.document) (ou new Uint8Array(atob(input.document).split('').map(c=>c.charCodeAt(0))) pour le binaire) et traitez selon besoin. Pour les limites de taille : maxLength = Math.ceil(bytes/3)*4 (ex. 1 Mo → 1398101, 5 Mo → 6990506).

Paramètres chiffrés

Stockez la configuration sensible en toute sécurité. Les utilisateurs sont invités à saisir ces valeurs dans l'interface, et elles sont chiffrées au repos. Utilisez format: "password" pour les champs de mot de passe.

settingsSchema: {
    properties: {
        apiKey: {
            type: "string",
            format: "password",
            title: "API Key"
        }
    }
}

03. Sécurité et isolation

Tous les plans incluent ces protections. DeepTask est conçu pour la fiabilité et la sécurité :

  • Listes blanches de domaines : Les outils ne peuvent pas accéder au réseau sauf si vous définissez networkEnabled: true et spécifiez domainsAllowed (utilisez ["*"] pour autoriser tous les hôtes). Quand une URL est bloquée, fetch() lance avant toute requête — enveloppez fetch() dans try/catch.
  • Limites de ressources : Mémoire configurable (64–2048 Mo ; par défaut 256 Mo pour Node, 512 Mo pour Puppeteer) et seuil CPU (50–100 %, défaut 95 %). Les outils dépassant les limites sont automatiquement terminés.
  • Protection par timeout : Configurable par outil via defaultTimeout (par défaut 5 minutes).
  • Système de fichiers : Accès lecture/écriture optionnel à un système de fichiers virtuel (racine /) avec les dossiers /Temp, /Documents, /Images, /Videos, /Audios, /Downloads. Pas d'accès au système de fichiers hôte ; les chemins ne peuvent pas s'échapper de la racine. Utilisez fsEnabled et fsWriteEnabled. Utilisez fs/promises — les méthodes sync comme readFileSync sont bloquées. Les fichiers persistent entre les invocations ; /Temp est nettoyé au démarrage de l'app et toutes les 24 h (âge max 48 h).

04. Fonctions Pro

Planification intelligente

Automatisez vos flux de travail avec le support Cron intégré.

  • Rapports quotidiens : 0 9 * * * (Chaque matin à 9 h)
  • Nettoyage hebdomadaire : 0 0 * * 0 (Chaque dimanche à minuit)

05. API et référence des outils

Sandbox API

Importez depuis @deeptask/sandbox :

APIDescription
browser(Puppeteer only) browser.getPage() → primary Page; browser.getPages() → all pages. Use import { browser } from "@deeptask/sandbox";
tooltool.self.settings (encrypted at rest), tool.call(name, params, sandboxId?), tool.chain([{name, params, sandboxId?}, ...]). Use import { tool } from "@deeptask/sandbox";
document, image, audio, video, model, archiveAPIs intégrées (voir sections ci-dessous). Toutes renvoient { files, data, isError, message }.
language, timeZoneLocale et fuseau horaire du sandbox.
fs / fs/promises(quand fsEnabled) FS virtuel sous / avec /Temp, /Documents, /Images, etc. Utilisez fs/promises — les méthodes sync sont bloquées.

Puppeteer : page.goto() n'accepte que http/https. Enveloppez dans try/catch. Utilisez response.buffer() (pas body()) pour les octets de réponse.

document

import { document } from "@deeptask/sandbox"

Conversion de documents, manipulation PDF et recherche plein texte. Toutes les méthodes renvoient { files, data, isError, message }. Toujours vérifier isError avant d'utiliser files ou data.

MethodDescription
convertDocumentConvertir entre formats. Paires : md↔html, pdf↔html, docx/pptx/epub↔html, html→docx/pdf/pptx/epub, csv↔xlsx. Les options varient selon la paire (ex. html→pdf : format, printBackground ; pdf→html : startPage, endPage).
mergePdfFusionner plusieurs PDF en un.
splitPdfDécouper un PDF en pages. Omettre pages pour un fichier par page. Sorties dans /Temp/.
compressPdfCompresser un PDF. Options : quality (screen, ebook, printer, prepress).
fillPdfFormRemplir les champs de formulaire PDF. Les clés sont les noms bruts des champs PDF (sensibles à la casse).
getPdfInfoObtenir nombre de pages, titre, auteur, etc.
getPdfFormLister les champs de formulaire d'un PDF.
extractArticleExtraire le texte principal de l'article (Readability). Supporte md, pdf, docx, pptx, epub, html. Renvoie data.text ; vérifier la chaîne vide.
extractPagesExtraire une plage de pages d'un PDF (1-based inclus).
searchFilesRecherche plein texte dans les fichiers indexés. Seul /Documents est indexé. Renvoie data.hits, data.total. Utilisez limit (défaut 20).
searchInFileRechercher dans un fichier. Supporte texte et types office. offset/limit paginent les résultats.

Note : protectPdf n'est pas implémenté — ne pas utiliser.

image

import { image } from "@deeptask/sandbox"

Traitement d'images avec Sharp/libvips. Toutes les méthodes renvoient { files, data, isError, message }.

MethodDescription
resizeImageRedimensionner. Options : fit (cover, contain, fill, inside, outside), withoutEnlargement.
compressImageRé-encoder pour réduire la taille ; préserve les métadonnées.
minifyImageRetirer les métadonnées uniquement.
cropImageRecadrer par left, top, width, height.
rotateImageRotation par angle.
flipImage / flopImageMiroir horizontal ou vertical.
convertImageConvertir le format. Supporte png, jpeg, gif, tiff, webp, ico, icns ; SVG comme source.
removeBackgroundCorrespondance de couleur simple (pas d'IA). Sortie PNG. threshold 0–255 (défaut 10).
compositeImageSuperposer des images en left, top, opacity optionnelle.
mergeImagesCombiner des images. Options : layout (horizontal, vertical, grid), gap, columns, maxWidth, maxHeight.
getImageInfoRenvoie data: { width, height, format, channels, hasAlpha, space }.
blurImage, sharpenImageFlou ou netteté ; sigma contrôle l'intensité.
grayscaleImage, trimImage, normalizeImage, extendImage, modulateImage, negateImage, tintImageOpérations couleur et mise en page.

audio

import { audio } from "@deeptask/sandbox"

Conversion et traitement audio. Toutes les méthodes renvoient { files, data, isError, message }.

MethodDescription
convertAudioConvertir le format. Supporte mp3, wav, aac, ogg, flac, m4a, wma, opus.
trimAudioDécouper par start, end ou duration (secondes).
concatAudioConcaténer des fichiers audio.
setAudioVolumeDéfinir le volume (nombre).
setAudioTempoTempo 0,5–2,0 (limite FFmpeg).
fadeAudioFondu entrée/sortie. Options : type, start, duration.
normalizeAudioNormaliser le volume. target LUFS (défaut -16).
removeAudioSilenceRetirer le silence. threshold dB (défaut -50), duration secondes (défaut 0,5).
mixAudioMélanger plusieurs fichiers audio. volumes optionnel.
getAudioInfoRenvoie data: { duration, sampleRate, channels, bitrate, format, codec }.
textToSpeechSynthèse vocale. macOS/Windows uniquement. format : mp3, wav, ogg.

Note : voiceToText n'est pas implémenté — ne pas utiliser.

video

import { video } from "@deeptask/sandbox"

Conversion, découpage et effets vidéo. Toutes les méthodes renvoient { files, data, isError, message }.

MethodDescription
convertVideoConvertir le format. Supporte mp4, webm, avi, mov, mkv, m4v, flv, wmv.
compressVideoCompresser. Options : crf (18–28, défaut 23), maxWidth, maxHeight, videoBitrate, audioBitrate.
trimVideoDécouper par start, end ou duration.
concatVideosConcaténer des fichiers vidéo.
extractAudioTrackExtraire l'audio en mp3, wav, aac, m4a, ogg, flac.
extractFrameExtraire une frame unique à timestamp.
screenshotVideoExtraire des frames à plusieurs timestamps. Renvoie une image par timestamp dans l'ordre.
videoToGifConvertir une vidéo en GIF. Options : start, duration, fps, width, height.
generateGifCréer un GIF à partir d'une séquence d'images. Options : fps, width, height, loop.
burnSubtitlesGraver un fichier de sous-titres dans la vidéo.
extractSubtitlesExtraire les sous-titres en srt ou vtt.
cropVideo, rotateVideoRecadrer ou pivoter (90, 180, 270).
setVideoSpeed, setVideoVolume, fadeVideoEffets de vitesse, volume et fondu.
getVideoInfoRenvoie data: { duration, width, height, fps, videoBitrate, audioBitrate, format, ... }.

model

import { model } from "@deeptask/sandbox"

Génération de texte LLM, d'images et de vidéos. Nécessite networkEnabled et des clés API. Stockez apiKey dans settingsSchema avec format: "password" ; accès via tool.self.settings.apiKey. Ne jamais hardcoder les clés.

MethodDescription
generateTextComplétion de chat. messages, system optionnel, options: { provider, apiKey, baseURL }. Fournisseurs : openai, anthropic, google, cohere, mistral, openrouter, grok, deepseek, groq. Défaut : openai (gpt-4o-mini).
generateImageGénération d'images. prompt, image optionnel (image-to-image). Fournisseurs : openai, stability, replicate, fal, together, nano-banana, ideogram. Image-to-image uniquement avec fal, nano-banana.
generateVideoGénération de vidéo. prompt, image optionnel. Fournisseurs : runway, replicate, luma, kling, minimax, seedance, veo3. La résolution est spécifique au fournisseur (ex. ratio, resolution).

archive

import { archive } from "@deeptask/sandbox"

Zipper et dézipper des fichiers. Toutes les méthodes renvoient { files, data, isError, message }.

MethodDescription
zipFilesZipper des fichiers en une archive. Sortie : archive-{timestamp}.zip dans /Temp/. Fichiers à la racine du zip (structure de dossiers non préservée).
unzipFileDézipper. filter : sous-chaînes de noms de fichiers à inclure. files[] contient les chemins virtuels des fichiers extraits ; structure de dossiers préservée.

Outils MCP pour les assistants

Votre assistant IA interagit avec DeepTask via ces outils MCP :

  • install_tool — Installer un outil pour réutilisation. Exécuter avec call_tool ensuite.
  • uninstall_tool — Supprimer un outil installé.
  • call_tool — Exécuter un outil installé. Sync/async selon defaultTimeout de l'outil (>60 s = async).
  • get_call_tool_result — Interroger le résultat de call_tool async (par taskId).
  • eval_tool_script — Exécuter un outil une fois sans installation (ponctuel). Paramètres : type, content, sandboxId optionnel.
  • batch_call_tools — Appeler plusieurs outils en une requête.
  • list_more_tools — Lister les outils installés. Utilisez get_tool_script_syntax pour la syntaxe des outils (sections : document, image, audio, video, model, archive).

Support et ressources

  • Site web : deeptask.ai
  • E-mail : [email protected]
  • Incidents : Signaler des bugs ou demander des fonctionnalités via le menu de feedback de l'app.