Skip to content

[JarvisLabs] INR prices are treated as USD in offers #3952

@peterschmidt85

Description

@peterschmidt85

Summary

JarvisLabs added a top-level currency field to /misc/server_meta. If the API returns currency: "INR", gpuhunt currently passes numeric price_per_hour values through unchanged, and dstack treats/renders them as USD.

This affects offer display and also any logic that assumes price is USD, including max-price filtering, sorting, cost accounting, and metrics.

Steps to reproduce

  1. Mock the JarvisLabs /misc/server_meta response with currency: "INR" and a VM-capable offer:
{
  "currency": "INR",
  "server_meta": [{
    "gpu_type": "L4",
    "region": "india-noida-01",
    "num_free_devices": 1,
    "effective_num_free_devices": 1,
    "price_per_hour": 100.0,
    "vram": "24",
    "cpus_per_gpu": 28,
    "ram_per_gpu": 124,
    "workload_type": "vm",
    "num_gpus": "1"
  }],
  "cpu_meta": {"combinations": []}
}
  1. Run dstack offer against JarvisLabs:
dstack offer -b jarvislabs -r india-noida-01 --gpu L4 --on-demand

Actual result

The offer is shown as $100:

 #  BACKEND                    RESOURCES                 INSTANCE TYPE  PRICE
 1  jarvislabs                 cpu=28 mem=124GB          L4-1x          $100
    (india-noida-01)           disk=100GB gpu=L4:24GB:1

--format json also reports the raw price as 100.0 with no currency metadata.

Expected result

INR prices must not be treated as USD. The cleanest fix is likely to keep the existing gpuhunt/dstack contract that catalog price is USD/hour, and convert JarvisLabs INR values to USD in gpuhunt before emitting offers.

If conversion is not possible without an exchange rate from JarvisLabs, INR offers should be skipped or handled explicitly rather than displayed as dollars.

Validation

This was reproduced with a temporary local dstack server pointed at a mocked JarvisLabs metadata endpoint returning currency: "INR". No real JarvisLabs resources were provisioned.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions