Skip to content

Go SDK

Install

Terminal window
go get github.com/isorun-dev/isorun-go

Authenticate

Terminal window
export ISORUN_API_KEY="isorun_live_<region>_<id>_<hmac>"
export ISORUN_API_URL="https://api.isorun.ai" # optional

Quickstart

ctx := context.Background()
sb, err := isorun.Create(ctx, "python")
if err != nil {
log.Fatal(err)
}
defer sb.Close(ctx)
result, err := sb.Exec(ctx, "python3 -c 'print(42)'")
if err != nil {
log.Fatal(err)
}
fmt.Println(result.Stdout)

Streaming output

result, err := sb.ExecStream(
ctx,
"python3 train.py",
func(chunk isorun.StreamChunk) {
fmt.Printf("[%s] %s", chunk.Stream, chunk.Data)
},
600,
)
fmt.Println(result.ExitCode)

Snapshot and restore

snapID, _ := sb.Checkpoint(ctx)
restored, _ := isorun.Restore(ctx, snapID)
defer restored.Close(ctx)
out, _ := restored.Run(ctx, "cat /etc/os-release")
fmt.Println(out)

Production checklist

  • Use defer sb.Close(ctx) for guaranteed cleanup.
  • Pass contexts with deadlines.
  • Set per-command timeouts.
  • Log sandbox IDs for tracing.