822944958fd649d7f953361c44584fe0431ec8d5
PMC Funder Discovery Tool
A React + Vite frontend (Tailwind, Noto Serif) that collects public media station details and streams an Anthropic Managed Agent response back to the browser through a Netlify Functions v2 proxy.
Setup
npm install
Add your Anthropic credentials (in .env for local dev, in the Netlify UI
for production):
ANTHROPIC_API_KEY=sk-ant-...
# Optional - if you've provisioned a Managed Agent in the Anthropic console:
ANTHROPIC_AGENT_ID=agent_...
# Optional - override the model:
ANTHROPIC_MODEL=claude-sonnet-4-5
Run locally
npm run dev # netlify dev (proxies Vite + functions on :8888)
Open http://localhost:8888.
How streaming works
- The browser POSTs the form to
/.netlify/functions/agent-proxy. - The Netlify v2 function calls
anthropic.messages.stream(...)and wraps the upstream iterator in aReadableStream. Eachcontent_block_deltatext chunk is enqueued as plain UTF‑8 bytes. - The React app reads
response.body.getReader()and decodes chunks withTextDecoder, appending them to the result state. - A
Thinkingflag staystrueuntil the first chunk arrives, then flips to a streaming state with a pulsing cursor.
Files
- src/App.jsx — form, streaming reader, UI states.
- netlify/functions/agent-proxy.js —
Managed Agent proxy with
ReadableStream.
Description
Languages
JavaScript
48.4%
TypeScript
46.1%
CSS
4.4%
HTML
1.1%