{"id":28310902,"url":"https://github.com/valyentdev/valyent.go","last_synced_at":"2026-03-06T02:40:30.308Z","repository":{"id":268526787,"uuid":"901259875","full_name":"valyentdev/valyent.go","owner":"valyentdev","description":"A Go SDK to get stuff done with Valyent's API.","archived":false,"fork":false,"pushed_at":"2025-05-19T15:49:04.000Z","size":25,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-12T09:38:01.201Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://discord.gg/edDhNEvRv7","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/valyentdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-10T10:32:31.000Z","updated_at":"2025-09-24T12:54:55.000Z","dependencies_parsed_at":"2025-01-18T13:20:31.758Z","dependency_job_id":"51f5605e-e2f1-4a9f-aa86-768dc07d5e23","html_url":"https://github.com/valyentdev/valyent.go","commit_stats":null,"previous_names":["valyentdev/valyent.go"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/valyentdev/valyent.go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valyentdev%2Fvalyent.go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valyentdev%2Fvalyent.go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valyentdev%2Fvalyent.go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valyentdev%2Fvalyent.go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/valyentdev","download_url":"https://codeload.github.com/valyentdev/valyent.go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/valyentdev%2Fvalyent.go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30159787,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T22:39:40.138Z","status":"online","status_checked_at":"2026-03-06T02:00:08.268Z","response_time":250,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-24T12:10:08.357Z","updated_at":"2026-03-06T02:40:30.278Z","avatar_url":"https://github.com/valyentdev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"_This repo is now archived._\n\n# Valyent Go SDK\n\n## Installation\n\n```bash\ngo get github.com/valyentdev/valyent.go\n```\n\n## Quick Start\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n    \"github.com/valyentdev/valyent.go\"\n    \"github.com/valyentdev/ravel/api\"\n)\n\nfunc main() {\n    // Initialize the client\n    client := valyent.NewClient().\n        WithBearerToken(\"your-api-token\")\n\n    // Create a new fleet\n    fleet, err := client.CreateFleet(api.CreateFleetPayload{\n        Name: \"my-fleet\",\n    })\n    if err != nil {\n        panic(err)\n    }\n\n    // Create a machine in the fleet\n    machine, err := client.CreateMachine(fleet.ID, api.CreateMachinePayload{\n        Region: \"us-east-1\",\n        Config: api.MachineConfig{\n            Image: \"nginx:latest\",\n            Guest: api.GuestConfig{\n                CPUKind:  \"shared\",\n                MemoryMB: 512,\n                CPUs:     1,\n            },\n            Workload: api.Workload{\n                Env: []string{\"PORT=8080\"},\n            },\n        },\n    })\n    if err != nil {\n        panic(err)\n    }\n\n    fmt.Printf(\"Created machine: %s\\n\", machine.ID)\n}\n```\n\n## Core Concepts\n\n### Client\n\nThe main entry point for the SDK is the `Client` type. Create a new client and configure it with your API token:\n\n```go\nclient := valyent.NewClient().\n    WithBearerToken(\"your-api-token\").\n    WithBaseURL(\"https://console.valyent.cloud\") // Optional, defaults to this value\n```\n\n### Fleets\n\n```go\n// Create a fleet\nfleet, err := client.CreateFleet(api.CreateFleetPayload{\n    Name: \"production\",\n})\n\n// List all fleets\nfleets, err := client.GetFleets()\n\n// Delete a fleet\nerr := client.DeleteFleet(fleetID)\n```\n\n### Machines\n\n```go\n// Create a machine\nmachine, err := client.CreateMachine(fleetID, api.CreateMachinePayload{\n    Region: \"us-east-1\",\n    Config: api.MachineConfig{\n        Image: \"my-image:latest\",\n        Guest: api.GuestConfig{\n            CPUKind:  \"shared\",\n            MemoryMB: 1024,\n            CPUs:     2,\n        },\n    },\n})\n\n// List machines in a fleet\nmachines, err := client.GetMachines(fleetID)\n\n// Get machine events\nevents, err := client.GetMachineEvents(fleetID, machineID)\n\n// Start a machine\nerr := client.StartMachine(fleetID, machineID)\n\n// Stop a machine\nerr := client.StopMachine(fleetID, machineID)\n\n// Delete a machine\nerr := client.DeleteMachine(fleetID, machineID, false)\n```\n\n### Gateways\n\n```go\n// Create a gateway\ngateway, err := client.CreateGateway(api.CreateGatewayPayload{\n    Name:       \"web-gateway\",\n    TargetPort: 8080,\n})\n\n// List gateways\ngateways, err := client.GetGateways()\n\n// Delete a gateway\nerr := client.DeleteGateway(gatewayID)\n```\n\n### Logs and Events\n\n```go\n// Get machine logs\nlogs, err := client.GetLogs(fleetID, machineID)\n\n// Stream logs in real-time\nctx := context.Background()\nstream, err := client.StreamLogs(ctx, valyent.LogStreamOptions{\n    FleetID:   fleetID,\n    MachineID: machineID,\n})\ndefer stream.Close()\n\nfor {\n    entry, ok := stream.Next()\n    if !ok {\n        if err := stream.Err(); err != nil {\n            panic(err)\n        }\n        break\n    }\n    fmt.Printf(\"[%s] %s\\n\", entry.Level, entry.Message)\n}\n```\n\n### Environment Variables\n\n```go\n// Get environment variables\nenv, err := client.GetEnvironmentVariables(namespace, fleetID)\n\n// Set environment variables\nredeploy, err := client.SetEnvironmentVariables(namespace, fleetID, []string{\n    \"KEY1=value1\",\n    \"KEY2=value2\",\n})\n```\n\n### Deployments\n\n```go\n// Create a deployment with a tarball\ndeployment, err := client.CreateDeployment(\n    namespace,\n    fleetID,\n    api.CreateDeploymentPayload{\n        Machine: machineConfig,\n    },\n    tarballReader,\n)\n```\n\n## Error Handling\n\nThe SDK provides detailed error information through Go's standard error interface:\n\n```go\nmachine, err := client.CreateMachine(fleetID, config)\nif err != nil {\n    fmt.Printf(\"Failed to create machine: %v\\n\", err)\n    return\n}\n```\n\n## Best Practices\n\n1. **Context Usage**: Use context for operations that might need cancellation or timeouts, especially with streaming logs:\n\n   ```go\n   ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)\n   defer cancel()\n\n   stream, err := client.StreamLogs(ctx, options)\n   ```\n\n2. **Resource Cleanup**: Always close resources that implement `io.Closer`:\n\n   ```go\n   stream, err := client.StreamLogs(ctx, options)\n   if err != nil {\n    return err\n   }\n   defer stream.Close()\n   ```\n\n3. **Error Checking**: Always check errors returned by SDK methods:\n   ```go\n   if err := client.DeleteMachine(fleetID, machineID, false); err != nil {\n       log.Printf(\"Failed to delete machine: %v\", err)\n       // Handle error appropriately\n   }\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalyentdev%2Fvalyent.go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvalyentdev%2Fvalyent.go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvalyentdev%2Fvalyent.go/lists"}