Quickstart
Put requests for quote beside a buyer or supplier session your app already authorizes. Free local mode needs no keys. Test publishable keys are free. Live config needs BYO ($9.99) or Hosted ($19.99). Live Hosted writes need Hosted.
1. Install
pnpm add @bootstrapware/rfq
Peer dependencies are react and react-dom 18 or newer. Import @bootstrapware/rfq/styles.css once next to the widget. The package is on npm as @bootstrapware/rfq.
2. Local, no keys
import { RfqRequester, createLocalAdapter } from "@bootstrapware/rfq";
import "@bootstrapware/rfq/styles.css";
<RfqRequester
scope={{ appId: "rqa_local", tenantKey: workspace.id }}
actor={{ id: session.user.id, permissions: ["buyer_read", "buyer_edit"] }}
adapter={createLocalAdapter({ storageKey: "demo-rfq" })}
/>Use the real session id. Never invent actor.id. Local mode stores JSON in localStorage. It is not production authorization. Saved JSON that cannot be read shows: Saved RFQs could not be read. Showing an empty in-memory RFQ.
3. Hosted
Create an app with RFQ MCP at https://rfq.bootstrapware.co/mcp (create_rfq_app, update_rfq_draft, publish_rfq_app), or click Add to Cursor (OAuth) on RFQ → Keys. Call ensure_rfq_test_publishable, and paste envLine into .env.local. The env name is NEXT_PUBLIC_BSW_RFQ_PUBLISHABLE_KEY. Mint authorToken on your server. See the Next.js guide. The live Hosted host is https://rfq.bootstrapware.co.
4. BYO
Pass an RfqAdapter whose methods call your API. The reference at examples/rfq-nextjs includes a persisted Postgres adapter. Run the local UI with pnpm --filter @bootstrapware/rfq-example dev on port 3015.
Related: Modes · Identity and tokens · Cursor guide