chatperch
Put a chat button on any website with one pasted line.
Buy chatperch for $99One payment of $99, plus sales tax where it applies, and every future update. Delivered as a private GitHub repository you're invited to.
See it work
chatperch demo --chat-port 8522 --site-port 8523
The line to paste into a website:
<script src="http://127.0.0.1:8522/chatperch.js" async></script>
Stand-in customer site: http://127.0.0.1:8523/ Chat host: http://127.0.0.1:8522/
Before any visitor: found. Found the line on 127.0.0.1. Open that page once in your browser, then check again; it shows as working once the button has loaded there.
After a simulated ping (sent by this demo, no browser): working. It’s working: the chat button is on 127.0.0.1 and loaded just now.
What it does
chatperch draws a chat button on someone else's website from one pasted line, opens your chat page in a sandboxed frame, serves the headers that page needs, and checks that the line is installed and working.
- Frames any chat page
- Give it any chat page URL. On a phone the button draws its own close control over the full-screen chat, so a chat page without the frame client still has a way out. Add the frame client for Escape and focus.
- One line, strict-site friendly
- Styles go through the CSSOM in a shadow root, so a site with a strict Content-Security-Policy needs only script-src and frame-src for your chat's address.
- Install check
- Opens a site and answers working, found, missing, different_address, unreachable, refused or invalid. Only a script that runs counts, so a link, a code sample or a noscript copy of the address is not an install.
- Safe fetching
- At most 5 redirects, 2 MB and 8 seconds in all, enforced by a watchdog that also covers slow response headers. Every hop passes a public-address guard and the connection goes to the address that was checked.
- Headers for the framed page
- A hash-based Content-Security-Policy for the chat page, frame-ancestors open or narrowed, and no X-Frame-Options. Strict-Transport-Security is off unless you ask for it.
- Browser walk
- A Playwright walk of Chromium and WebKit at phone and laptop sizes, with and without the frame client.
- The ping is evidence, not proof
- The load ping can be forged by a script outside a browser, popups the chat opens are not sandboxed, and your chat page must be on a different origin from the sites that embed it. chatperch cannot enforce where you host.
What you get
chatperch 1.0.1: the Python package and the chatperch command, the button script and the frame client, a Playwright walk, and the full test suite, with 248 automated tests.
A commercial license. Use it and change it in your own projects and your clients' projects. Don't share or resell the source. Read the license.
Every update. New versions land in the same repository; git pull to get them.
Requirements
Python 3.10 or newer. Python 3.10 or newer, no runtime dependencies. Node and Playwright only for the optional browser walk.
How buying works
- Enter your GitHub username. You'll see the account before you pay, so you can check it's yours.
- Pay $99, plus any sales tax shown at checkout, on Stripe's checkout page.
- Accept the invitation GitHub emails you. Signed in as that account, you'll also find it at
github.com/dominares-tools/chatperch/invitations. Invitations expire after 7 days; you can get a new one any time. - Clone and install:
git clone https://github.com/dominares-tools/chatperch.gitPrivate repo: sign in to GitHub on this computer first. Run
gh auth loginand choose HTTPS, or give git a personal access token when it asks for a password. To use an SSH key instead, clonegit@github.com:dominares-tools/chatperch.git.python3 -m venv .venv && . .venv/bin/activate pip install ./chatperch
Questions
Do I need GitHub?
Yes. Access is a read-only invitation to a private repository, sent to the GitHub account you choose.
Can I get a refund?
Yes, within 14 days, no questions asked. Access ends when the refund goes through. Refund policy.
Who takes the payment?
Payments are handled by Stripe, which works out sales tax. Your receipt and card statement show Link (LINK.COM*), Stripe's checkout service.
Something wrong?
Email support@dominares.org. Every buyer of a tool shares its repository, so support happens by email rather than in GitHub issues.