Every package registry has its own API, its own response format, its own quirks. npm returns nested objects, PyPI gives you a flat dict, crates.io paginates differently. If your tool needs metadata from more than one, you're writing the same fetch-parse-normalize loop for each.
I looked for a library that does this and didn't find one. There's git-pkgs/registries in Go that covers 25 ecosystems but that's Go-only. deps.dev and ecosyste.ms are services, not something you can bundle.
So I built regxa. You give it a PURL like pkg:npm/lodash or pkg:cargo/serde, it talks to the right registry and gives you back the same types. Six registries right now, Arch Linux included (official repos + AUR).
It caches through unstorage so you can plug in whatever backend fits your setup, fs or Cloudflare KV or whatever. Each cached entry has an integrity hash so stale data doesn't stick around silently.
There's a CLI too if you just want to poke at things from a terminal. And an AI SDK tool export if you're wiring up agents that need package info.
oritwoen•1h ago
I looked for a library that does this and didn't find one. There's git-pkgs/registries in Go that covers 25 ecosystems but that's Go-only. deps.dev and ecosyste.ms are services, not something you can bundle.
So I built regxa. You give it a PURL like pkg:npm/lodash or pkg:cargo/serde, it talks to the right registry and gives you back the same types. Six registries right now, Arch Linux included (official repos + AUR).
It caches through unstorage so you can plug in whatever backend fits your setup, fs or Cloudflare KV or whatever. Each cached entry has an integrity hash so stale data doesn't stick around silently.
There's a CLI too if you just want to poke at things from a terminal. And an AI SDK tool export if you're wiring up agents that need package info.