Add visual feedback to your Astro app.
Add the pinthread tag to the layout that every Astro page uses. Reviewers comment on the built pages, and your coding agent reads the threads.
01 · Create a project
Sign up free with Google and create a project in the dashboard. Its Install tab shows the tag with your project key filled in. The Free plan costs $0 a month.
No Astro app yet? Start one:
npm create astro@latest02 · Add the script tag
src/layouts/Layout.astro
<script is:inline src="https://pinthread.dev/embed.js"
data-project="YOUR_PROJECT_KEY" defer></script>Paste it before </body> in your base layout. is:inline tells Astro to keep the tag as written and not to bundle it.
Replace YOUR_PROJECT_KEY with the key from the Install tab. The key is public: it only tells the widget which project to load.
03 · Check that it works
Run npm run dev and open the address Astro prints, such as http://localhost:4321. The pinthread button shows at the edge of the page, and the project’s Install tab changes from waiting to installed. Click the button, sign in, and pin a comment to any element.
Pages on localhost and 127.0.0.1 load pinthread for every project. For a deployed site, add its address under the project’s Settings.
Troubleshooting
The button shows on some pages only
Those pages do not use the layout with the tag. Add the tag to each layout, or make the pages share one base layout.
The button shows locally but not on your host
Add the deployed address under the project’s Settings. Local addresses work without this step.
Connect your coding agent
pinthread is also an MCP server. Claude Code, Cursor, or Codex can read every comment with its page and element, make the change, and reply in the thread.
Questions
Why does the Astro tag need is:inline?
is:inline keeps the script tag as you wrote it. Astro then does not try to process or bundle a script that loads from another site.
Does pinthread work with static Astro builds?
Yes. The tag is part of the built HTML, so it works on any static host and on server-rendered Astro sites.
Other frameworks
- Next.jsnext/script in the App Router or Pages Router.
- ViteReact, Vue, or Svelte: one tag in index.html.
- SvelteKitOne tag in src/app.html.
- NuxtA head script in nuxt.config.ts.
- AngularOne tag in src/index.html.
- HTMLStatic sites, site generators, and templates.
- All install stepsAccount, project, and invitations.