Ships the `portage` executable. `portage buy ` tries native UCP discovery first (zero credentials, works on any store that's opted in), falls back to a portage-ucp-* platform adapter only when this process already has that platform's own credentials in env (i.e. it's your own store or one you're integrated with), and otherwise says so plainly — never scrapes or session-hijacks as an anonymous shopper. `portage find` covers the no-URL case: ask an allowlist, DuckDuckGo, Brave, or a Google Programmable Search engine which stores might sell something, keep the ones answering /.well-known/ucp, and search their catalogs — documented APIs only, no SERP scraping. Depends on portage-ucp (for platform detection via Resolver), portage-ucp-client (for the actual buy calls), and portage-ucp-journal (for `portage-console`'s read-only view of local purchase/transaction/order state); no single adapter gem is a hard dependency. Ranking, escalation and the spend-policy check use portage-ucp core's rules; portage-ucp-decision is optional and only the opt-in confidence gate needs it.
Required Ruby Version
>= 3.2
Authors
Tom Whitbread
Versions
- 0.13.0 October 05, 2026 (281 KB)
- 0.12.0 October 01, 2026 (281 KB)
- 0.11.0 September 30, 2026 (272 KB)
- 0.10.0 September 29, 2026 (229 KB)
- 0.9.0 September 29, 2026 (226 KB)