Skip to content

Add Support for San Francisco Compute#78

Merged
drewmalin merged 30 commits intobrevdev:dm/BRE2-661from
sfcompute:sfc
Feb 5, 2026
Merged

Add Support for San Francisco Compute#78
drewmalin merged 30 commits intobrevdev:dm/BRE2-661from
sfcompute:sfc

Conversation

@brianlechthaler
Copy link
Contributor

This PR adds support for San Francisco Compute as a compute provider, and represents the collaborative work between SFC and Brev.

…zones that have capacity not equal to zero, in case the availability ever returns a negative number
@brianlechthaler brianlechthaler requested a review from a team as a code owner January 24, 2026 00:48
@brianlechthaler
Copy link
Contributor Author

we have added support for more regions! add regions excelsior and yerba

@drewmalin drewmalin changed the base branch from main to dm/BRE2-661 February 5, 2026 00:00
@drewmalin drewmalin merged commit 0340e05 into brevdev:dm/BRE2-661 Feb 5, 2026
2 of 6 checks passed
drewmalin pushed a commit that referenced this pull request Feb 6, 2026
* add scaffolding, and client authentication.

* return APITypeGlobal from GetAPIType function, as SFC accounts are not tied to specific regions.

* fix apiKey in SFCCredential struct

* scaffolding for instance.go

* add instance creation implementation with SSH key support

* add function to map the status of a node reported from SFC API to v1.LifecycleStatus in Brev

* implement GetInstance in sfcompute with node data retrieval inluding SSH Hostname / Public IP

* add TerminateInstance implementation with node release and delete logic

* set default SSH port to 2222, as is standard for our platform

* implement GetSSHHostname for retrieving the SSH hostname of an instance in sfcompute

* remove unneeded call to api for GetSSHHostname

* use VM ID instead of instance ID to retrieve SSH Hostname

* remove get ssh hostname function

* implement ListInstances

* add validation test for sfcompute with API key check and skip logic

* add getInstanceTypeID method for generating instance type IDs in sfcompute

* bump sfcnodes version to v0.1.0-alpha.4 which adds support for the /v0/zones endpoint

* implement GetLocations

* only return approved zones

* only return regions that have more than zero capacity instead of any zones that have capacity not equal to zero, in case the availability ever returns a negative number

* update location description to include formatted hardware type information. example: `sfc_hayesvalley_h100`

* return unavailable regions with v1.Location{Available: false}

* fix an error where a nil map was returned

* start implementing GetInstanceTypes

* fix tests failing due to ValidateRegionalInstanceTypes and ValidateStableInstanceTypeIDs fails errors

* set MaxPricePerNodePerHour to 1600 ($16/node/h, $2/gpu/h)

* add regions excelsior and yerba

* remove region excelsior
drewmalin added a commit that referenced this pull request Feb 6, 2026
* Add Support for San Francisco Compute (#78)

* add scaffolding, and client authentication.

* return APITypeGlobal from GetAPIType function, as SFC accounts are not tied to specific regions.

* fix apiKey in SFCCredential struct

* scaffolding for instance.go

* add instance creation implementation with SSH key support

* add function to map the status of a node reported from SFC API to v1.LifecycleStatus in Brev

* implement GetInstance in sfcompute with node data retrieval inluding SSH Hostname / Public IP

* add TerminateInstance implementation with node release and delete logic

* set default SSH port to 2222, as is standard for our platform

* implement GetSSHHostname for retrieving the SSH hostname of an instance in sfcompute

* remove unneeded call to api for GetSSHHostname

* use VM ID instead of instance ID to retrieve SSH Hostname

* remove get ssh hostname function

* implement ListInstances

* add validation test for sfcompute with API key check and skip logic

* add getInstanceTypeID method for generating instance type IDs in sfcompute

* bump sfcnodes version to v0.1.0-alpha.4 which adds support for the /v0/zones endpoint

* implement GetLocations

* only return approved zones

* only return regions that have more than zero capacity instead of any zones that have capacity not equal to zero, in case the availability ever returns a negative number

* update location description to include formatted hardware type information. example: `sfc_hayesvalley_h100`

* return unavailable regions with v1.Location{Available: false}

* fix an error where a nil map was returned

* start implementing GetInstanceTypes

* fix tests failing due to ValidateRegionalInstanceTypes and ValidateStableInstanceTypeIDs fails errors

* set MaxPricePerNodePerHour to 1600 ($16/node/h, $2/gpu/h)

* add regions excelsior and yerba

* remove region excelsior

* make lint

* run sfcompute in workflow

* fix

* fix

* ssh, lint

* scripts, cleanup

* make client with options

* cleanup

* logs

* bug fix

* bug fix

* bug fix

* specify instance disk using legacy units

* cleanup

* cleanup

* feedback

---------

Co-authored-by: Brian Lechthaler <brianlechthaler@protonmail.ch>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants