> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neosantara.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Daytona Sandbox

> Jalankan shell, kelola file, dan operasi git di sandbox Daytona menggunakan Agno, OpenAI, atau Anthropic SDK.

[Daytona](https://www.daytona.io/?utm_source=neosantara-docs\&utm_medium=referral) menyediakan sandbox terisolasi dengan kernel, filesystem, dan jaringan terpisah per instance. Startup di bawah 90ms. Sandbox mendukung eksekusi shell, run kode Python/TypeScript, operasi file, dan git. Dengan menghubungkan model Neosantara sebagai reasoning engine dan Daytona sebagai execution layer, agen AI dapat menulis, menguji, dan men-deploy kode secara aman.

## Kredensial Akses

Setel API key Neosantara dan Daytona pada environment variables sistem Anda:

```bash icon="terminal" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
export NEOSANTARA_API_KEY="nsk_..."
export DAYTONA_API_KEY="your_daytona_api_key"
```

API key Daytona tersedia di [app.daytona.io](https://app.daytona.io).

## Integrasi Framework dan SDK

Pilih framework atau SDK yang ingin digunakan:

<Tabs>
  <Tab title="Agno" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/agno.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=c46fcbc2366c9c7a9514dc31c98e64a1" width="120" height="120" data-path="images/integrations/agno.svg">
    [Agno](https://www.agno.com/?utm_source=neosantara-docs\&utm_medium=referral) menyediakan `DaytonaTools` bawaan untuk menghubungkan sandbox Daytona ke agen Neosantara. Agen mengelola siklus pembuatan sandbox, eksekusi kode, dan pembersihan resource secara otomatis.

    ### Instalasi Library

    ```bash icon="terminal" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    pip install -U agno daytona
    ```

    ### Contoh Implementasi

    ```python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    from agno.agent import Agent
    from agno.models.neosantara import Neosantara
    from agno.tools.daytona import DaytonaTools

    agent = Agent(
        model=Neosantara(id="deepseek-v4.1-flash"),
        tools=[DaytonaTools()],
        markdown=True,
        show_tool_calls=True,
        instructions=[
            "Gunakan Daytona sandbox untuk menjalankan dan memverifikasi kode.",
            "Sajikan hasil eksekusi dengan format yang jelas."
        ]
    )

    agent.print_response(
        "Buat file Python yang menghitung deret Fibonacci ke-20, eksekusi, dan tampilkan hasilnya."
    )
    ```

    ### Operasi File dan Git

    Sandbox Daytona mendukung operasi filesystem dan git secara native:

    ```python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
    agent.print_response(
        "Clone repo https://github.com/neosantara-xyz/examples.git, "
        "baca file README.md, dan buat ringkasan kontennya."
    )
    ```
  </Tab>

  <Tab title="OpenAI SDK" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/openai.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=69e05803e80721ddc2f9fa7933f78012" width="24" height="24" data-path="images/integrations/openai.svg">
    Gunakan function calling untuk mengeksekusi kode dan perintah shell di sandbox Daytona. Tersedia untuk Python dan Node.js.

    ### Instalasi Library

    <CodeGroup>
      ```bash pip icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      pip install -U openai daytona
      ```

      ```bash npm icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      npm install openai @daytona/sdk
      ```
    </CodeGroup>

    ### Contoh Implementasi

    <CodeGroup>
      ```python Python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import os
      import json
      from openai import OpenAI
      from daytona import Daytona, DaytonaConfig

      client = OpenAI(
          base_url="https://api.neosantara.xyz/v1",
          api_key=os.environ["NEOSANTARA_API_KEY"]
      )

      config = DaytonaConfig(api_key=os.environ["DAYTONA_API_KEY"])
      daytona = Daytona(config)

      tools = [{
          "type": "function",
          "function": {
              "name": "run_code",
              "description": "Eksekusi kode Python di sandbox terisolasi Daytona.",
              "parameters": {
                  "type": "object",
                  "properties": {
                      "code": {"type": "string", "description": "Kode Python yang akan dieksekusi."}
                  },
                  "required": ["code"]
              }
          }
      }]

      messages = [{"role": "user", "content": "Hitung faktorial dari 12 menggunakan Python."}]
      response = client.chat.completions.create(
          model="deepseek-v4.1-flash",
          messages=messages,
          tools=tools,
          tool_choice="auto"
      )

      message = response.choices[0].message

      if message.tool_calls:
          tool_call = message.tool_calls[0]
          args = json.loads(tool_call.function.arguments)

          sandbox = daytona.create()
          result = sandbox.process.code_run(args["code"])
          output_text = result.result

          messages.append(message)
          messages.append({
              "role": "tool",
              "tool_call_id": tool_call.id,
              "content": output_text
          })

          final_response = client.chat.completions.create(
              model="deepseek-v4.1-flash",
              messages=messages
          )
          print(final_response.choices[0].message.content)

          daytona.remove(sandbox)
      ```

      ```javascript Node.js icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import OpenAI from "openai";
      import { Daytona } from "@daytona/sdk";

      const client = new OpenAI({
        baseURL: "https://api.neosantara.xyz/v1",
        apiKey: process.env.NEOSANTARA_API_KEY,
      });

      const daytona = new Daytona({ apiKey: process.env.DAYTONA_API_KEY });

      const tools = [
        {
          type: "function",
          function: {
            name: "run_code",
            description: "Eksekusi kode Python di sandbox terisolasi Daytona.",
            parameters: {
              type: "object",
              properties: {
                code: { type: "string", description: "Kode Python yang akan dieksekusi." },
              },
              required: ["code"],
            },
          },
        },
      ];

      const messages = [{ role: "user", content: "Hitung faktorial dari 12 menggunakan Python." }];

      const response = await client.chat.completions.create({
        model: "deepseek-v4.1-flash",
        messages,
        tools,
        tool_choice: "auto",
      });

      const message = response.choices[0].message;

      if (message.tool_calls && message.tool_calls.length > 0) {
        const toolCall = message.tool_calls[0];
        const args = JSON.parse(toolCall.function.arguments);

        const sandbox = await daytona.create();
        const result = await sandbox.process.codeRun(args.code);
        const outputText = result.result;

        messages.push(message);
        messages.push({
          role: "tool",
          tool_call_id: toolCall.id,
          content: outputText,
        });

        const finalResponse = await client.chat.completions.create({
          model: "deepseek-v4.1-flash",
          messages,
        });

        console.log(finalResponse.choices[0].message.content);

        await daytona.remove(sandbox);
      }
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Anthropic SDK" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/claude.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=5f0be7b8eabc64ce5a9097ebc400b6b2" width="24" height="24" data-path="images/integrations/claude.svg">
    Gunakan antarmuka tool use [Anthropic](https://www.anthropic.com/?utm_source=neosantara-docs\&utm_medium=referral) dengan endpoint Neosantara. Tersedia untuk Python dan Node.js.

    ### Instalasi Library

    <CodeGroup>
      ```bash pip icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      pip install -U anthropic daytona
      ```

      ```bash npm icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      npm install @anthropic-ai/sdk @daytona/sdk
      ```
    </CodeGroup>

    ### Contoh Implementasi

    <CodeGroup>
      ```python Python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import os
      from anthropic import Anthropic
      from daytona import Daytona, DaytonaConfig

      client = Anthropic(
          base_url="https://api.neosantara.xyz/anthropic",
          api_key=os.environ["NEOSANTARA_API_KEY"]
      )

      config = DaytonaConfig(api_key=os.environ["DAYTONA_API_KEY"])
      daytona = Daytona(config)

      tools = [{
          "name": "run_code",
          "description": "Eksekusi kode Python di sandbox terisolasi Daytona.",
          "input_schema": {
              "type": "object",
              "properties": {
                  "code": {"type": "string", "description": "Kode Python untuk dijalankan."}
              },
              "required": ["code"]
          }
      }]

      response = client.messages.create(
          model="claude-3-7-sonnet",
          max_tokens=1024,
          tools=tools,
          messages=[{"role": "user", "content": "Hitung 2 pangkat 20 menggunakan Python."}]
      )

      sandbox = daytona.create()

      for block in response.content:
          if block.type == "tool_use":
              code_to_run = block.input.get("code")
              result = sandbox.process.code_run(code_to_run)
              print("Hasil:", result.result)

      daytona.remove(sandbox)
      ```

      ```javascript Node.js icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import Anthropic from "@anthropic-ai/sdk";
      import { Daytona } from "@daytona/sdk";

      const client = new Anthropic({
        baseURL: "https://api.neosantara.xyz/anthropic",
        apiKey: process.env.NEOSANTARA_API_KEY,
      });

      const daytona = new Daytona({ apiKey: process.env.DAYTONA_API_KEY });

      const tools = [
        {
          name: "run_code",
          description: "Eksekusi kode Python di sandbox terisolasi Daytona.",
          input_schema: {
            type: "object",
            properties: {
              code: { type: "string", description: "Kode Python untuk dijalankan." },
            },
            required: ["code"],
          },
        },
      ];

      const response = await client.messages.create({
        model: "claude-3-7-sonnet",
        max_tokens: 1024,
        tools,
        messages: [{ role: "user", content: "Hitung 2 pangkat 20 menggunakan Python." }],
      });

      const sandbox = await daytona.create();

      for (const block of response.content) {
        if (block.type === "tool_use") {
          const codeToRun = block.input.code;
          const result = await sandbox.process.codeRun(codeToRun);
          console.log("Hasil:", result.result);
        }
      }

      await daytona.remove(sandbox);
      ```
    </CodeGroup>
  </Tab>

  <Tab title="SDK Langsung" icon="https://mintcdn.com/neosantara/uq2XlSQ_dSPDIOXL/images/integrations/daytona.svg?fit=max&auto=format&n=uq2XlSQ_dSPDIOXL&q=85&s=daa837e5c237567b57bd256d900061d4" width="64" height="64" data-path="images/integrations/daytona.svg">
    Gunakan Daytona SDK secara langsung untuk skenario yang membutuhkan kontrol penuh atas lifecycle sandbox, operasi filesystem, dan git.

    ### Instalasi Library

    <CodeGroup>
      ```bash pip icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      pip install -U daytona
      ```

      ```bash npm icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      npm install @daytona/sdk
      ```
    </CodeGroup>

    ### Contoh Penggunaan

    <CodeGroup>
      ```python Python icon="python" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      from daytona import Daytona, DaytonaConfig

      config = DaytonaConfig(api_key="YOUR_DAYTONA_API_KEY")
      daytona = Daytona(config)

      sandbox = daytona.create()

      # Eksekusi shell command
      response = sandbox.process.exec("echo 'Hello from Daytona sandbox!'")
      print(response.result)

      # Jalankan kode Python
      response = sandbox.process.code_run("print(sum(range(1, 101)))")
      print(response.result)

      # Operasi file
      sandbox.fs.upload_file("workspace/data.txt", b"sample data content")
      files = sandbox.fs.list_files("workspace")
      print(files)

      # Operasi git
      sandbox.git.clone({
          "url": "https://github.com/neosantara-xyz/examples.git",
          "path": "workspace/repo"
      })

      daytona.remove(sandbox)
      ```

      ```javascript Node.js icon="js" theme={"theme":{"light":"ayu-dark","dark":"catppuccin-latte"}}
      import { Daytona } from "@daytona/sdk";

      const daytona = new Daytona({ apiKey: "YOUR_DAYTONA_API_KEY" });

      const sandbox = await daytona.create();

      // Eksekusi shell command
      const shellResult = await sandbox.process.exec("echo 'Hello from Daytona sandbox!'");
      console.log(shellResult.result);

      // Jalankan kode
      const codeResult = await sandbox.process.codeRun("console.log(Array.from({length: 10}, (_, i) => i + 1))");
      console.log(codeResult.result);

      // Operasi file
      const files = await sandbox.fs.listFiles("workspace");
      console.log(files);

      // Operasi git
      await sandbox.git.clone({
        url: "https://github.com/neosantara-xyz/examples.git",
        path: "workspace/repo",
      });

      await daytona.remove(sandbox);
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## Perbandingan Daytona vs E2B

| Fitur                 | Daytona                                          | E2B                               |
| :-------------------- | :----------------------------------------------- | :-------------------------------- |
| **Fokus**             | Dev environment sandbox (file, git, shell, kode) | Code interpreter sandbox          |
| **Startup**           | \<90ms                                           | \~1-2 detik (Firecracker microVM) |
| **Git bawaan**        | `sandbox.git` (clone, commit, push)              | Manual via shell                  |
| **Filesystem API**    | `sandbox.fs` (upload, list, download)            | Terbatas                          |
| **Snapshot stateful** | Persistent snapshots antar sesi                  | Terbatas                          |
| **GPU**               | Tersedia                                         | Tersedia                          |
| **SDK**               | Python, TypeScript, Go, Ruby, Java               | Python, TypeScript                |

## Langkah Berikutnya

| Kebutuhan                    | Panduan                                                                    |
| :--------------------------- | :------------------------------------------------------------------------- |
| Sandbox code interpreter E2B | [Dokumentasi E2B](/id/integrations/e2b)                                    |
| Framework agen Agno          | [Dokumentasi Agno](/id/integrations/agno)                                  |
| Tool calling pada Gateway    | [Tool Calling Chat Completions](/id/gateway/chat-completions/tool-calling) |
| Katalog model yang didukung  | [Daftar Model & Harga](/id/gateway/models)                                 |


## Related topics

- [Agno](/id/integrations/agno.md)
- [Daytona Code Interpreter](/id/integrations/daytona-code-interpreter.md)
- [Function Calling (Tools)](/id/gateway/chat-completions/tool-calling.md)
- [Katalog Model](/id/gateway/models.md)
