diff --git a/public/browser-toys.html b/public/browser-toys.html new file mode 100644 index 0000000..6674a8e --- /dev/null +++ b/public/browser-toys.html @@ -0,0 +1,192 @@ + + + + + + + + + Browser Toys - Machine Learning on Every Page | uncloseai.com + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

uncloseai.

+

Browser Toys - Machine Learning on Every Page

+
+ +
+ +

Browser Toys

+

Browser extensions that add the uncloseai. floating button to every web page you visit. Lightweight wrappers around uncloseai.js — no server, no backend, no accounts. The extension injects the script tag, and everything else runs client-side in your browser.

+ +

Available Extensions

+ +

Chrome / Edge / Brave / Vivaldi / Arc

+

Manifest V3 extension for all Chromium-based browsers.

+
    +
  1. Clone the repo: git clone https://github.com/uncloseai/browser-toys.git
  2. +
  3. Open chrome://extensions, enable Developer mode
  4. +
  5. Click Load unpacked, select the extensions/chrome directory
  6. +
+ +

Firefox

+

Manifest V2 extension for Firefox 109+ and Firefox-based browsers (LibreWolf, Waterfox).

+
    +
  1. Clone the repo: git clone https://github.com/uncloseai/browser-toys.git
  2. +
  3. Open about:debugging#/runtime/this-firefox
  4. +
  5. Click Load Temporary Add-on, select extensions/firefox/manifest.json
  6. +
+ +

Safari

+

Safari Web Extension for macOS and iOS. Requires Xcode conversion.

+
git clone https://github.com/uncloseai/browser-toys.git
+cd browser-toys
+xcrun safari-web-extension-converter extensions/safari \
+  --project-location ./safari-xcode \
+  --app-name "uncloseai" \
+  --bundle-identifier com.uncloseai.browser-toy \
+  --no-open
+

Then open the Xcode project, build, and enable in Safari Settings > Extensions.

+ +

How it works

+
    +
  1. The content script injects <script src="https://uncloseai.com/uncloseai.js" type="module"> into every page
  2. +
  3. If uncloseai.js is already on the page, it skips injection (no duplicates)
  4. +
  5. The floating uncloseai. button appears in the bottom-right corner
  6. +
  7. Click it to chat with Hermes about the current page
  8. +
  9. Toggle the extension on or off from the toolbar popup
  10. +
+ +

Storage and privacy

+

These extensions have no backend. Everything runs client-side in your browser.

+ +

No data leaves your browser except the messages you choose to send to the public AI endpoints at hermes.ai.unturf.com, qwen.ai.unturf.com, and speech.ai.unturf.com.

+ +

Source Code

+

📦 github.com/uncloseai/browser-toys

+

Public domain. No attribution required.

+ + + + + + +
+ + + + + + diff --git a/public/c-examples.html b/public/c-examples.html index e019437..748d3e2 100644 --- a/public/c-examples.html +++ b/public/c-examples.html @@ -63,6 +63,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/cli.html b/public/cli.html index 5bc0eca..ad577c5 100644 --- a/public/cli.html +++ b/public/cli.html @@ -63,6 +63,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/crawler.html b/public/crawler.html index b710953..24b5cc5 100644 --- a/public/crawler.html +++ b/public/crawler.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Our Crawler
  • 🔗 All Languages
  • diff --git a/public/csharp-examples.html b/public/csharp-examples.html index 803ca85..2ad65f5 100644 --- a/public/csharp-examples.html +++ b/public/csharp-examples.html @@ -63,6 +63,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/dart-examples.html b/public/dart-examples.html index 2b63f8a..6dc7b48 100644 --- a/public/dart-examples.html +++ b/public/dart-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/elixir-examples.html b/public/elixir-examples.html index 95eaff1..20321f4 100644 --- a/public/elixir-examples.html +++ b/public/elixir-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/go-examples.html b/public/go-examples.html index 37867fc..e24a07f 100644 --- a/public/go-examples.html +++ b/public/go-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/index.html b/public/index.html index 5ea5e98..07c761f 100644 --- a/public/index.html +++ b/public/index.html @@ -72,6 +72,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • @@ -121,6 +122,15 @@

    📖 Read the full uncloseai.js documentation →

    +

    🧩 Browser Toys

    +

    Want the uncloseai. button on every web page without adding any code? Install a browser extension. Lightweight wrappers that inject uncloseai.js into every page you visit. No server, no accounts. Chat history stays in your browser's localStorage, scoped per domain.

    + +

    🧩 Get Browser Toys →

    +

    Code Examples

    We provide comprehensive code examples for using the uncloseai. API with popular programming languages. Each example demonstrates both streaming and non-streaming modes with Hermes (general purpose AI) and Qwen 3 Coder (specialized coding model).

    diff --git a/public/inference.html b/public/inference.html index 8e07fdb..dab0c39 100644 --- a/public/inference.html +++ b/public/inference.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/java-examples.html b/public/java-examples.html index 1fc1840..1e90851 100644 --- a/public/java-examples.html +++ b/public/java-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/kotlin-examples.html b/public/kotlin-examples.html index 99ed60e..24cfbfd 100644 --- a/public/kotlin-examples.html +++ b/public/kotlin-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/nodejs-examples.html b/public/nodejs-examples.html index 198a0e0..5987778 100644 --- a/public/nodejs-examples.html +++ b/public/nodejs-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/php-examples.html b/public/php-examples.html index 782886c..ce822cd 100644 --- a/public/php-examples.html +++ b/public/php-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/privacy-policy.html b/public/privacy-policy.html index 769a343..e89908f 100644 --- a/public/privacy-policy.html +++ b/public/privacy-policy.html @@ -59,6 +59,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/python-examples.html b/public/python-examples.html index 6f431b9..f5c41cd 100644 --- a/public/python-examples.html +++ b/public/python-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/ruby-examples.html b/public/ruby-examples.html index 03f602d..b050eae 100644 --- a/public/ruby-examples.html +++ b/public/ruby-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/rust-examples.html b/public/rust-examples.html index 8304686..1fe1048 100644 --- a/public/rust-examples.html +++ b/public/rust-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/swift-examples.html b/public/swift-examples.html index 21dae7c..d54e956 100644 --- a/public/swift-examples.html +++ b/public/swift-examples.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/terms-of-use.html b/public/terms-of-use.html index 5e3a290..e11448a 100644 --- a/public/terms-of-use.html +++ b/public/terms-of-use.html @@ -59,6 +59,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • diff --git a/public/text-to-speech.html b/public/text-to-speech.html index 90396b5..f1dd394 100644 --- a/public/text-to-speech.html +++ b/public/text-to-speech.html @@ -154,6 +154,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Qwen3-TTS
  • diff --git a/public/tts/fast-synthesis.html b/public/tts/fast-synthesis.html index d9e6166..bc64c8a 100644 --- a/public/tts/fast-synthesis.html +++ b/public/tts/fast-synthesis.html @@ -53,6 +53,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Qwen3-TTS
  • diff --git a/public/tts/hd-cloning.html b/public/tts/hd-cloning.html index 1ebe4d6..314aa87 100644 --- a/public/tts/hd-cloning.html +++ b/public/tts/hd-cloning.html @@ -53,6 +53,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Qwen3-TTS
  • diff --git a/public/tts/lightweight.html b/public/tts/lightweight.html index fafb5ba..b66d806 100644 --- a/public/tts/lightweight.html +++ b/public/tts/lightweight.html @@ -53,6 +53,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Qwen3-TTS
  • diff --git a/public/tts/multilingual-cpu.html b/public/tts/multilingual-cpu.html index a5abd61..085e744 100644 --- a/public/tts/multilingual-cpu.html +++ b/public/tts/multilingual-cpu.html @@ -53,6 +53,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Qwen3-TTS
  • diff --git a/public/tts/voice-cloning.html b/public/tts/voice-cloning.html index b43bc28..8eec332 100644 --- a/public/tts/voice-cloning.html +++ b/public/tts/voice-cloning.html @@ -53,6 +53,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Qwen3-TTS
  • diff --git a/public/uncloseai-js.html b/public/uncloseai-js.html index 9b399ca..c0374aa 100644 --- a/public/uncloseai-js.html +++ b/public/uncloseai-js.html @@ -64,6 +64,7 @@
  • Swift Examples
  • uncloseai.js Docs
  • uncloseai-cli
  • +
  • Browser Toys
  • Inference Setup
  • Text-to-Speech
  • Our Crawler
  • @@ -177,6 +178,11 @@
  • "Generate a creative short story about a robot learning to paint"
  • +

    🧩 Browser Toys - Every Page, Every Browser

    +

    Don't own the site? No problem. Install a browser toy to get the uncloseai. button on every web page you visit. Lightweight extensions that inject this same script tag into every page. No server, no accounts. Chat history stays in your browser's localStorage, scoped per domain.

    +

    Available for Chrome, Edge, Firefox, Safari, Brave, Vivaldi, and Arc.

    +

    🧩 Get Browser Toys →

    +

    Use Cases

    uncloseai.js is perfect for: