Skip to content

Go SDK ​

The CubeSandbox Go SDK covers sandbox lifecycle management, code execution, commands, PTY sessions, filesystem operations, snapshots, cloning, rollback, volumes, and network policy.

Installation ​

bash
go get github.com/tencentcloud/CubeSandbox/sdk/go

Configuration ​

bash
export CUBE_API_URL=http://127.0.0.1:3000
export CUBE_TEMPLATE_ID=<your-template-id>

# Optional remote data-plane access
export CUBE_PROXY_NODE_IP=<cubeproxy-node-ip>
export CUBE_PROXY_PORT_HTTP=80
export CUBE_PROXY_SCHEME=http
export CUBE_SANDBOX_DOMAIN=cube.app

NewConfigFromEnv also reads E2B_API_URL and E2B_API_KEY. Cube-specific variables take precedence.

Quick start ​

go
package main

import (
    "context"
    "fmt"

    cubesandbox "github.com/tencentcloud/CubeSandbox/sdk/go"
)

func main() {
    ctx := context.Background()
    client := cubesandbox.NewClient(cubesandbox.NewConfigFromEnv())
    defer client.Close()

    sandbox, err := client.Create(ctx, cubesandbox.CreateOptions{})
    if err != nil {
        panic(err)
    }
    defer sandbox.Kill(ctx)

    result, err := sandbox.RunCode(ctx, "x = 41\nx + 1", cubesandbox.RunCodeOptions{})
    if err != nil {
        panic(err)
    }
    fmt.Println(result.Text)
}

Client.Close releases local idle HTTP connections; it does not destroy remote sandboxes. Use Sandbox.Kill for cleanup or Sandbox.Pause to preserve a sandbox for later reconnection.

Main capabilities ​

  • Execute code and shell commands.
  • Create, reconnect to, resize, and control interactive PTYs.
  • Perform complete filesystem operations and watch directories.
  • Create snapshots, roll back, and clone concurrently.
  • Manage persistent volumes and host-directory mounts.
  • Pause and reconnect to sandboxes.
  • Configure node placement, remote proxy access, and L3/L4 or L7 egress policy.

For detailed method descriptions and integration-test instructions, see the Go SDK README.