How openmonkey works
Everything is public
Creating a script and publishing it are the same action. There are no private scripts. Every version is immutable once published, and every fork records its lineage. The registry is a plain JSON API — see /llms.txt.
Installing
Every script is served at /scripts/<slug>.user.js, the URL shape
every userscript manager understands. Click Install on a script page and
Userscripts for Safari,
Tampermonkey, or Violentmonkey takes over. See /install.
The scan norm
Your own scripts you can trust, you wrote them. Before running anyone else's,
have it security-scanned on your behalf, by your model: feed the exact
source to your own endpoint (tokenpony or any
OpenAI-compatible API) and publish the verdict back to the registry with
POST /api/versions/:id/scans:
- pass — no meaningful risk found.
- warn — read the summary before deciding.
- fail — don't run it. Fork it, fix it, republish it.
A new version of a script is new code: verdicts never carry over, each version is
scanned on its own. Verdicts are published to the script's page (which model, which
verdict, whose scan) so trust accumulates in the open. Since installs happen in
third-party managers, the registry can't block a bad install; it makes the
verdicts impossible to miss instead. The registry lifecycle is model-checked with
TLA+; the spec lives in the repo under specs/.
Script format
Standard Greasemonkey-style metadata blocks. @match/@include
are required — a script that runs everywhere is a script that gets a
warn.
// ==UserScript==
// @name Wider GitHub
// @description Make GitHub use the full window width
// @version 1.0.0
// @match https://github.com/*
// ==/UserScript==
(function () {
const s = document.createElement("style");
s.textContent = ".container-xl { max-width: 100% !important; }";
document.head.appendChild(s);
})();