No cookies
No tracking, no stored IP address. Recognition only via a random key in the browser.
One script on your website, one button for your testers. They mark what’s wrong – you get the screenshot, console, network, request IDs and the seconds before as a replay.
One Go binary, one SQLite file. No SaaS, no cookies.

Create a project in the dashboard, copy the embed code, paste it into your page. Works with any web project – static site, single-page app or server rendering.
identify() for signed-in users and setRelease() for your version<script src="https://feedback.example.com/embed.js"
data-project="<project-key>" defer></script>
<script>
// optional
IllusionFeedback.identify({ id: "42", name: "Erika Muster" });
IllusionFeedback.setRelease("2026-11-10");
</script>
Everything between “something’s wrong” and “it’s fixed” – in one place, on your server.
Drag over an area of the page, mark it up in the screenshot, add a sentence, send. No account, no browser extension, no screen sharing prompt.

Every report comes with the screenshot and its markup, comment, tester and environment: URL, browser, window, language, release.

From the moment it loads, the widget collects technical traces in memory – sent only together with a report.
X-Request-Id, traceparent, Server-Timing & co. – linked to your logs
The last 60 seconds or so before the report as a replayable recording – clicks, scrolling, DOM changes. Clicking an error in the timeline jumps to the same moment.

Turn reports into a ticket with one click or attach them to an existing one – duplicates end up with the same problem.

Test tasks show up in the widget as a checklist: worked, report a problem or skipped. The dashboard shows who tested what.

Once enabled, the widget captures JavaScript errors and failed requests without a single click – grouped into error groups.

Reports, errors and affected users per version – and which error groups a release introduced.
setRelease() and your source maps
IllusionFeedback ships with an MCP server. Claude Code, Claude Desktop or any other MCP client uses your token to access reports, error groups and tickets directly.
$ claude mcp add --transport http illusionfeedback \
https://feedback.example.com/mcp \
--header "Authorization: Bearer ifb_…"
> Look at the latest report
and fix the bug.
Your testers should be able to trust you. That’s why everything that sends data without their doing is off by default.
No tracking, no stored IP address. Recognition only via a random key in the browser.
Form input, request and response bodies never leave the browser. Token-like values are scrubbed.
Password fields and areas with data-feedback-mask are blacked out, data-feedback-block isn’t recorded at all.
One binary, one SQLite file. No cloud, no third party, retention configurable per project.
Replay, error tracking, test tasks, known issues: every feature has its switch – off means not even the code loads.
Your application can optionally sign user details – so nobody can pose as someone else.
One instance for all your websites and apps, each with its own key and allowed origins.
Everything the dashboard does is available via API too – like uploading source maps in your build.
Widget and dashboard in German, English, French, Italian and Spanish, light and dark.
A ready package for Docker Compose and Coolify – or just start the binary.
The complete handbook lives in the app, with examples for nginx, Express, Go, Vite and Next.js.
The whole team works in the same dashboard, tickets can be assigned.
IllusionFeedback is free to use – no account, no installer.
Binaries for Linux, Windows and macOS plus the package for Docker Compose and Coolify.
Unpack the archive and start the binary – it creates its database and folders itself.
Open it in your browser, create the first account with the setup code from the log, add a project.
Paste the embed code into your website – done. The button appears right away.
Lean, self-hosted tools with a shared design system: CMS, forms, data and feedback.