From ca466fbdbb3bb5ffbc4327bcb1d1236c8eac3a00 Mon Sep 17 00:00:00 2001 From: Jacob Gillespie Date: Tue, 3 Feb 2026 12:30:01 +0000 Subject: [PATCH] Add project ID and name to fly machine metadata --- proto/depot/cloud/v5/cloud.proto | 2 ++ src/proto/depot/cloud/v5/cloud_pb.ts | 12 ++++++++++++ src/utils/fly/buildkit.ts | 7 +++++-- src/utils/fly/reconcile.ts | 5 +++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/proto/depot/cloud/v5/cloud.proto b/proto/depot/cloud/v5/cloud.proto index fed57b2..6c5940d 100644 --- a/proto/depot/cloud/v5/cloud.proto +++ b/proto/depot/cloud/v5/cloud.proto @@ -34,6 +34,8 @@ message GetDesiredStateResponse { optional string user_data = 7; optional FlyMachineOptions fly_options = 8; optional string zone = 9; + optional string project_id = 10; + optional string project_name = 11; message FlyMachineOptions { // Volume to attach to the machine. diff --git a/src/proto/depot/cloud/v5/cloud_pb.ts b/src/proto/depot/cloud/v5/cloud_pb.ts index 8d566b3..c23bf31 100644 --- a/src/proto/depot/cloud/v5/cloud_pb.ts +++ b/src/proto/depot/cloud/v5/cloud_pb.ts @@ -374,6 +374,16 @@ export class GetDesiredStateResponse_NewMachine extends Message) { super() proto3.util.initPartial(data, this) @@ -391,6 +401,8 @@ export class GetDesiredStateResponse_NewMachine extends Message): GetDesiredStateResponse_NewMachine { diff --git a/src/utils/fly/buildkit.ts b/src/utils/fly/buildkit.ts index d2199bc..ee31aef 100644 --- a/src/utils/fly/buildkit.ts +++ b/src/utils/fly/buildkit.ts @@ -10,10 +10,11 @@ export interface FlyBuildkitMachineRequest { image: string env: Record files: Record + metadata?: Record } export async function launchBuildkitMachine(req: FlyBuildkitMachineRequest): Promise { - const {cpu_kind, cpus, memGBs, depotID, region, volumeID, image, env, files} = req + const {cpu_kind, cpus, memGBs, depotID, region, volumeID, image, env, files, metadata} = req const machine = await launchMachine({ name: depotID, region, @@ -42,6 +43,7 @@ export async function launchBuildkitMachine(req: FlyBuildkitMachineRequest): Pro auto_destroy: false, restart: {policy: 'no'}, dns: {}, + metadata, }, }) return machine @@ -50,7 +52,7 @@ export async function launchBuildkitMachine(req: FlyBuildkitMachineRequest): Pro const GPU_KIND = 'a10' export async function launchBuildkitGPUMachine(buildkit: FlyBuildkitMachineRequest): Promise { - const {cpu_kind, cpus, memGBs, depotID, region, volumeID, image, env, files} = buildkit + const {cpu_kind, cpus, memGBs, depotID, region, volumeID, image, env, files, metadata} = buildkit if (region !== 'ord') { throw new Error('GPU machines are only available in the ord region') } @@ -85,6 +87,7 @@ export async function launchBuildkitGPUMachine(buildkit: FlyBuildkitMachineReque auto_destroy: false, restart: {policy: 'no'}, dns: {}, + metadata, }, }) return machine diff --git a/src/utils/fly/reconcile.ts b/src/utils/fly/reconcile.ts index 15c6f82..d02306f 100644 --- a/src/utils/fly/reconcile.ts +++ b/src/utils/fly/reconcile.ts @@ -184,6 +184,10 @@ async function reconcileNewMachine( console.log(`Launching new machine ${machine.id}`) const {cpuKind: cpu_kind, cpus, memGBs, needsGPU} = machineKind(machine.kind) + const metadata: Record = {} + if (machine.projectId) metadata.depot_project_id = machine.projectId + if (machine.projectName) metadata.depot_project_name = machine.projectName + let req = { cpu_kind, cpus, @@ -198,6 +202,7 @@ async function reconcileNewMachine( DEPOT_CLOUD_MACHINE_ID: machine.id, }, files: flyOptions.files, + metadata: Object.keys(metadata).length > 0 ? metadata : undefined, } if (needsGPU) {