diff --git a/apps/coordinator-api/src/app/schemas.py b/apps/coordinator-api/src/app/schemas.py index 4f140749..432142f5 100644 --- a/apps/coordinator-api/src/app/schemas.py +++ b/apps/coordinator-api/src/app/schemas.py @@ -196,6 +196,7 @@ class MarketplaceOfferView(BaseModel): cuda_version: Optional[str] = None price_per_hour: Optional[float] = None region: Optional[str] = None + attributes: Optional[dict] = None class MarketplaceStatsView(BaseModel): diff --git a/apps/coordinator-api/src/app/services/marketplace.py b/apps/coordinator-api/src/app/services/marketplace.py index d34a913c..0fd871ba 100644 --- a/apps/coordinator-api/src/app/services/marketplace.py +++ b/apps/coordinator-api/src/app/services/marketplace.py @@ -87,4 +87,5 @@ class MarketplaceService: cuda_version=offer.cuda_version, price_per_hour=offer.price_per_hour, region=offer.region, + attributes=offer.attributes, ) diff --git a/apps/marketplace-web/src/lib/api.ts b/apps/marketplace-web/src/lib/api.ts index 97e69ad7..9ac8c60d 100644 --- a/apps/marketplace-web/src/lib/api.ts +++ b/apps/marketplace-web/src/lib/api.ts @@ -16,6 +16,13 @@ interface OfferRecord { cuda_version?: string; price_per_hour?: number; region?: string; + attributes?: { + ollama_host?: string; + models?: string[]; + vram_mb?: number; + driver?: string; + [key: string]: unknown; + }; } interface OffersResponse { diff --git a/apps/marketplace-web/src/main.ts b/apps/marketplace-web/src/main.ts index 0d901ef9..82b4e1ff 100644 --- a/apps/marketplace-web/src/main.ts +++ b/apps/marketplace-web/src/main.ts @@ -151,6 +151,14 @@ function renderOffers(offers: MarketplaceOffer[]): void { ${formatNumber(offer.capacity)} units + ${offer.attributes?.models?.length ? ` +