Now available for Windows and macOS

Safe Local Sandbox for AI Agents

Run Node.js & Puppeteer scripts as MCP tools locally — no cloud, complete privacy. Works with Claude Desktop, ChatWise & more.
DeepTask screenshot
WORKS WITH YOUR FAVORITE AI AGENTS
Claude Desktop
Claude Desktop
Cursor IDE
Cursor IDE
VS Code
VS Code
Windsurf
Windsurf
Zed
Zed

Create custom tools

Effortlessly build and scale robust Javascript and Puppeteer automations.
duckduckgo-search.mjs
Puppeteer
/**
 * DuckDuckGo Search Script
 * Searches DuckDuckGo (HTML version) and extracts the abstract, organic results with title, link, and snippet
 */

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

export const metadata = {
    name: "duckduckgo-search",
    version: "1.0.0",
    description:
        "Search DuckDuckGo and extract abstract, organic results with title, link, and snippet",
    inputSchema: {
        type: "object",
        properties: {
            query: {
                type: "string",
                description: "The search query/keyword",
                default: "chatgpt"
            },
            language: {
                type: "string",
                description: "Language code for search results (e.g., en-us, ja, zh-cn)",
                default: "en-us"
            },
            page: {
                type: "number",
                description: "Page index (0 for first page, 1 for second, etc.)",
                default: 0,
                minimum: 0
            }
        },
        required: ["query"]
    },
    type: "puppeteer",
    defaultTimeout: 30000,
    fsEnabled: false,
    networkEnabled: true,
    domainsAllowed: ["duckduckgo.com", "html.duckduckgo.com"],
};

export async function main(input) {
    try {
        const page = browser.getPage();
        const keyword = input?.query || "chatgpt";
        const language = input?.language || "en-us";
        const pageIndex = (input?.page !== undefined && input?.page !== null) ? input.page : 0;
        const start = pageIndex * 25;
        const url = `https://html.duckduckgo.com/html/?q=${encodeURIComponent(keyword)}&kl=${language}&s=${start}`;

        await page.goto(url, { waitUntil: "networkidle2" });
        await page.waitForSelector("#links .result, .result", { timeout: 15000 });

        const data = await page.evaluate(() => {
            const out = { abstract: null, results: [] };
            const abstractEl = document.querySelector(".result--more .result__body, .zci__body, .abstract");
            if (abstractEl) out.abstract = abstractEl.innerText.trim();

            const results = document.querySelectorAll(".result:not(.result--more)");
            results.forEach((el) => {
                const titleLink = el.querySelector("a.result__a");
                const snippetEl = el.querySelector(".result__snippet");
                if (!titleLink || !titleLink.href) return;
                const title = titleLink.innerText.trim();
                if (!title) return;
                let link = titleLink.href;
                if (link.includes("uddg=")) {
                    try {
                        const m = link.match(/uddg=([^&]+)/);
                        if (m) link = decodeURIComponent(m[1]);
                    } catch (_) {}
                }
                const snippet = snippetEl ? snippetEl.innerText.trim() : "";
                out.results.push({ title, link, snippet });
            });
            return out;
        });

        return {
            result: {
                content: [{ type: "text", text: JSON.stringify(data, null, 2) }]
            }
        };
    } catch (error) {
        return {
            error: { message: error.message || "Unknown error occurred" }
        };
    }
}
Metrics & Performance

Safe, Private & Powerful

DeepTask Sandbox by the numbers
Private

100% Local

Zero data sent to cloud
Secure

Sandboxed Execution

Isolated environment protection
MCP

Model Context Protocol

Standard-based integration
Controlled

Domain Whitelisting

Explicit network permissions
Cross-Platform

Windows, macOS

Works everywhere you do
Compatible

Claude, Cursor, VS Code

Works with your favorite AI
Help & Support

Frequently Asked Questions

Everything you need to know about the safe local browser automation.

What AI tools work with DeepTask Sandbox?

DeepTask Sandbox works with Claude Desktop, Cursor, VS Code, Windsurf, Zed, and any other MCP-compatible AI client.

How is DeepTask different from cloud automation?

DeepTask runs entirely on your local machine. Your data never leaves your device, unlike cloud automation services that process and store your data on external servers.

What is MCP?

MCP (Model Context Protocol) is an open standard that allows AI assistants to connect with external tools. DeepTask acts as an MCP server, providing browser automation capabilities to AI agents.

What is the pricing model?

The Free Tier is $0 for education and home use (Stdio MCP, 1 sandbox, up to 5 tools). Pro is $9.9/month or $99/year for commercial use (HTTP MCP, 2 devices, unlimited sandboxes, unlimited tools, and more). Enterprise offers custom licensing. Visit our pricing page for details.

Why should I run a local sandbox for my AI?

A local sandbox provides maximum privacy as your data never leaves your desktop. It also saves tokens by allowing you to process large amounts of data locally using tools rather than sending everything to an LLM.

Does it require an internet connection?

No. DeepTask Sandbox works completely offline. Your tools execute locally on your machine. Internet access is only required if your specific tool needs to fetch data from the web.

Which tool languages are supported?

Currently, we focus on Javascript and Puppeteer for web automation. This allows you to leverage the vast JavaScript ecosystem for any task.

How does the security model work?

Every tool runs in a secure, isolated environment. You must explicitly grant permissions for network access (with host whitelisting) and filesystem access. This ensures your tools only do what you want them to do.