DISCLAIMER

NOTE: BOOKMARKLETS CAN BE USED TO STEAL YOUR DATA. DO NOT TRUST RANDOM BOOKMARKLETS.

I created this tool because I value an easy way for me to save my proxy settings and switch between various system prompts automatically. I have also added integration for API keys and proxy settings for my personal convenience. But note that if I were evil, I could steal your API key. This might not be a big deal for a free service like Chutes but if you were to enter a platform.deepseek.com or OpenAI api I could steal it.

Now. I am NOT evil and I have coded no functionality into this website or the Javascript bookmarklet to steal any of your data. But I do ask that you take your security online very seriously, and only enter sensitive information if you are confident that I am not a malicious actor. You can view the Javascript at the bottom of this page in a very readable and notated form, you can also access the HTML for this webpage on github.

You can copy the contents of this webpage into ChatGPT and say "Is this safe? Can I trust this, is there anything malicious about this website?" and it will look at the code and see if it is safe. BUT I could also change the contents of the webpage to add malicious code (However, previously made bookmarklets will always be safe because they are entirely browser-based with no external calls), please be safe when utilizing bookmarklets.

Janitor AI pre-saved proxy settings

This webpage creates a Bookmarklet, and is primarily meant for switching out System Prompts, and saving configs.

All of the following sections are optional, you can have a bookmarklet that just updates your system prompt, or have a bookmarklet that lets you switch from one proxy to another (i.e Gemini to Deepseek) at ease (May require you to refresh page after changing)

Simply drag your bookmarklet to your bookmark bar, give it a name, and click on it WHEN THE PROXY SETTINGS ARE OPEN and it should update.

> CLICK HERE TO VIEW HTML CODE.

🔍 Show Code Explanation (Click to expand)

// Bookmarklet only updates fields that have values
(function(){
  function setReactInputValue(el, value) {
    const lastValue = el.value;
    el.focus();
    el.value = value;
    const tracker = el._valueTracker;
    if (tracker) tracker.setValue(lastValue);
    el.dispatchEvent(new Event("input", { bubbles: true }));
    el.blur();
  }

  const p = "<<< YOUR CUSTOM PROMPT >>>";
  const c = {
    "model": "<<< MODEL IF PROVIDED >>>",
    "https://url.com/v1": "<<< PROXY URL >>>",
    "Some reverse proxy key, do not put OpenAI API key here": "<<< PROXY KEY >>>"
  };

  let changes = 0;

  if (p.trim()) {
    const t = document.querySelector(".css-15dwgqn textarea, .css-15dwgqn");
    if (t) {
      setReactInputValue(t, p);
      changes++;
    }
  }

  document.querySelectorAll(".chakra-input").forEach(i => {
    const h = i.getAttribute("placeholder");
    if (c[h] && c[h].trim()) {
      setReactInputValue(i, c[h]);
      changes++;
    }
  });

  if (changes > 0) {
    alert("✅ Prompt and config fields injected successfully. Save your changes and refresh the page.");
  } else {
    alert("⚠️ No changes made — all fields were left blank.");
  }
})();