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:

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);
})();