Back to browse
GitHub Repository

A web browser extension that lets you tamper with web pages, live and/or with userscripts.

103 starsClojure

Epupp – Live, REPL-driven, browser tampering

by cospaia·Mar 4, 2026·4 points·0 comments

AI Analysis

●●●BangerWizardryBig BrainNiche Gem

Live editor-to-browser REPL for interactive web tampering beats Tampermonkey's edit-refresh loop.

Strengths
  • Live REPL connection eliminates edit-refresh friction; ClojureScript's SCI enables true interactive programming without page reload.
  • Dual-mode design (live REPL + persistent userscripts) makes it both exploration tool and production automation platform.
  • AI-agent friendly: editor integration + DOM inspection via REPL is genuinely useful for letting LLMs help solve web scraping/modification tasks.
Weaknesses
  • ClojureScript learning curve narrows audience; most web devs expect JavaScript or TypeScript in browser extensions.
  • Early-stage ecosystem; no visible package manager or community script library like Tampermonkey's ecosystem of thousands of scripts.
Target Audience

Web developers, power users, AI-assisted web automation enthusiasts

Similar To

Tampermonkey · Violentmonkey · Greasemonkey

Post Description

Epupp has two modes of operation:

1. *Live REPL connection from your editor to the web page*, letting you inspect and modify the page on the fly, with or without the assistance of an AI agent.

2. *Userscripts*: Somewhat Tampermonkey style (I love Tampermonkey!).

The two form a powerful pair. The live REPL connection, while happily supporting one-off changes or data extractions, is also a very efficient and fun means to interactively develop userscripts. The buzzword here is Interactive Programming (aka REPL-driven development).

I started to build Epupp because I wanted the AI agent to help me solve a problem with printing a very tall receipt cleanly from Gmail. After that success, I realized it was generally very useful so I made an extension out of it. I then also noticed that I wanted to be able to save my live tampers as userscripts.

Epupp's scripting language is ClojureScript, the SCI kind. This is what makes the live tampering possible.

I have probably gotten a lot of things wrong with this first version. I am entering feedback-driven mode now. Though, unless something is terribly wrong with the API, I intend to keep it stable. In true Clojure tradition, I do not want to break my callers.

Epupp is free and open source, available at the Chrome and Firefox extension stores.

Try it out, please. I have created a template project which I hope can help with getting started + be your base for using Epupp.

* https://github.com/PEZ/my-epupp-hq

Security:

* Epupp enables a userscript to do just about anything on web page, including all the dangerous things. The gate is the user, scrutinizing userscripts and userscript authors.

* The REPL opens a websocket to Epupp's REPL. Again the user is responsible for what connects to that websocket.

* On a whitelist of domains, userscripts can install and modify userscripts. This enables a web userscript installer to be active on GitHub, GitLab and Codeberg. Userscripts can not, however, list or read userscripts from Epupp.

* The REPL can install, modify, list and read userscripts. But only if the user enables this in Epupp after establishing the REPL connection.

Demo videos:

* Copilot builds the Isolated Element Printer script, using interactive programming: https://youtu.be/CuEWN5yYVa8

* LinkedIn Squirrel, a userscript that keeps posts you engage with in immediate reach: https://youtu.be/yU6rsjoR7HQ

On the roadmap:

1. Fix issues when used with Firefox

2. Fix (many more) issues with Safari

3. Mobile browser support

WDYT, HN?

Similar Projects