You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+4-1Lines changed: 4 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,8 +61,11 @@ See [SECURITY.md](docs/SECURITY.md) for complete security specifications and imp
61
61
-**NVIDIA Cloud Partners (NCPs)** looking to offer Brev-compatible GPU compute
62
62
-**Infra teams** building cluster-aware systems or abstractions on raw compute
63
63
-**Cloud providers** interested in contributing to a shared interface for accelerated compute
64
+
-**Compute brokers & marketplaces (aggregators)** offering multi-cloud compute; use `Location`, `SubLocation`, and `CloudProviderID` to differentiate upstream sources behind a consistent interface
64
65
65
-
---
66
+
## Aggregators (Brokers/Marketplaces/Multi-cloud)
67
+
68
+
Aggregator providers can integrate with this SDK to expose heterogeneous upstream compute behind a single provider surface. Map upstream regions/zones into `Location` and `SubLocation`, declare the common-denominator `Capabilities`, and maintain stable instance type identifiers (use `MakeGenericInstanceTypeID` if needed). Use `CloudProviderID` to represent your aggregator while preserving upstream metadata via tags/labels where helpful.
Copy file name to clipboardExpand all lines: docs/how-to-add-a-provider.md
+36Lines changed: 36 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,6 +38,42 @@ Patterns to follow:
38
38
39
39
---
40
40
41
+
---
42
+
## Compute Brokers & Marketplaces (Aggregators)
43
+
44
+
This SDK supports providers that aggregate compute from multiple upstream sources (multi-cloud brokers, marketplaces, or exchanges). When implementing an aggregator, use these fields to differentiate where the compute comes from and to present consistent placement semantics:
45
+
46
+
- Provider (CloudProviderID): Identify your aggregator (e.g., "mybroker"). If you expose underlying vendors, include that metadata on the returned resources (e.g., via tags/labels) or encode it in stable IDs that you control.
47
+
- Location and SubLocation: Map upstream regions/zones into `Location` and `SubLocation` so users can choose placement consistently across sources. For example, use `Location="us-west"` and `SubLocation="vendorA/zone-2"` or `SubLocation="sv15/DC3"` for finer placement.
48
+
- InstanceType IDs: If upstream vendors don’t provide stable, cross-market IDs, generate stable IDs using `MakeGenericInstanceTypeID` and include upstream hints in IDs or metadata. Ensure stability over time to avoid breaking consumers.
49
+
- Capabilities: Only advertise features that your aggregator reliably supports across upstream vendors (e.g., Create/Terminate/Reboot). Omit capabilities (ModifyFirewall, Stop/Start, ResizeVolume, MachineImage, Tags) if they are not uniformly supported.
50
+
51
+
Minimal pattern:
52
+
53
+
- Credential.GetAPIType: Return `APITypeLocational` when placement is region-scoped; `APITypeGlobal` otherwise.
54
+
- Client.MakeClient(ctx, location): Bind the client to the chosen `Location` for list/launch operations.
55
+
- Security: Conform to the default-deny inbound model; document any upstream limitations under `internal/{provider}/SECURITY.md` and reflect them in capabilities.
0 commit comments