SDKs
Go client
Use the Cellar Go SDK against cellar-gateway
Package: sdk/go. Auth is sent as Authorization: Bearer … and X-Api-Key.
package main
import (
"context"
"fmt"
"log"
"github.com/prodioslabs/cellar/sdk/go"
)
func main() {
c, err := client.NewFromEnv() // or client.New(client.Config{…})
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
sb, err := c.Create(ctx, &client.SandboxCreateRequest{
Spec: &client.SandboxSpec{Image: "alpine:3.20"},
})
if err != nil {
log.Fatal(err)
}
fmt.Println("created", sb.ID())
// Creation returns immediately (often pending). Wait until the container is running.
if err := sb.WaitUntilReady(ctx, client.WaitUntilReadyOptions{}); err != nil {
log.Fatal(err)
}
res, err := sb.Exec(ctx, []string{"uname", "-a"})
if err != nil {
log.Fatal(err)
}
fmt.Printf("exit=%d stdout=%s\n", res.ExitCode, res.Stdout)
if err := sb.Remove(ctx); err != nil {
log.Fatal(err)
}
}Client ops: Create, Get, List. Sandbox ops: WaitUntilReady, GetStatus, Exec, Logs, Stop, Remove, UpdateNetwork.
Network limits on NetworkPolicy: networkAllowList (IPv4 CIDRs), domainAllowList
(domains / *. wildcards), blockAll, and opt-in essentialServices. At most one of
networkAllowList / domainAllowList / blockAll may be set; they translate to
canonical mode/rules/dns server-side.
See configure the client for environment variables.