uncloseai.com/public/index.html

283 lines
15 KiB
HTML

<!DOCTYPE html>
<!--
PUBLIC DOMAIN - NO LICENSE, NO WARRANTY
Copyright 2025 TimeHexOn & foxhop & russell@unturf
https://www.permacomputer.com
-->
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="theme-color" content="#43a047">
<meta name="color-scheme" content="light dark">
<title>Using Free LLM & Text To Speech Artificial Intelligence Service | uncloseai.com</title>
<!-- PicoCSS -->
<link rel="stylesheet" href="/css/pico.classless.min.css">
<!-- ChunkFive Font -->
<link rel="stylesheet" href="/css/chunkfive/stylesheet.css" type="text/css" charset="utf-8" />
<!-- Sidebar Theme -->
<link rel="stylesheet" href="/css/sidebar-theme.css">
<!-- Highlight.js for syntax highlighting -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/styles/a11y-dark.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>
<!-- Theme Switcher Script -->
<script>
function switchTheme(theme) {
if (theme === "auto") {
document.documentElement.removeAttribute('data-theme');
} else {
document.documentElement.setAttribute('data-theme', theme);
}
// Reload Remarkbox iframe with new theme if it exists
var iframe = document.getElementById('remarkbox-iframe');
if (iframe && window.buildRbSrc) {
iframe.src = buildRbSrc();
}
}
// Disable custom styling for uncloseai.js - use PicoCSS instead
window.UNCLOSEAI_CUSTOM_STYLING = false;
</script>
<script src="https://uncloseai.com/uncloseai.js" type="module"></script>
<!--
<script defer data-domain="ai.unturf.com" src="https://analytics.unturf.com/js/plausible.js"></script>
-->
</head>
<body>
<!-- Mobile menu toggle -->
<button class="sidebar-toggle" onclick="document.querySelector('.sidebar').classList.toggle('open')">
</button>
<!-- Left sidebar - Main Navigation -->
<aside class="sidebar">
<div class="table-of-contents">
<nav>
<ul>
<li><a href="/" class="active">Home</a></li>
<li><a href="/c-examples.html">C Examples</a></li>
<li><a href="/csharp-examples.html">C# Examples</a></li>
<li><a href="/dart-examples.html">Dart Examples</a></li>
<li><a href="/elixir-examples.html">Elixir Examples</a></li>
<li><a href="/go-examples.html">Go Examples</a></li>
<li><a href="/java-examples.html">Java Examples</a></li>
<li><a href="/kotlin-examples.html">Kotlin Examples</a></li>
<li><a href="/nodejs-examples.html">Node.js Examples</a></li>
<li><a href="/php-examples.html">PHP Examples</a></li>
<li><a href="/python-examples.html">Python Examples</a></li>
<li><a href="/ruby-examples.html">Ruby Examples</a></li>
<li><a href="/rust-examples.html">Rust Examples</a></li>
<li><a href="/swift-examples.html">Swift Examples</a></li>
<li><a href="/uncloseai-js.html">uncloseai.js Docs</a></li>
<li><a href="/cli.html">uncloseai-cli</a></li>
<li><a href="/browser-toys.html">Browser Toys</a></li>
<li><a href="/inference.html">Inference Setup</a></li>
<li><a href="/text-to-speech.html">Text-to-Speech</a></li>
<li><a href="/crawler.html">Our Crawler</a></li>
<li><a href="/languages" target="_blank">🔗 All Languages</a></li>
<li><a href="https://shop.unturf.com/p/8486f492-a93e-11f0-b477-02dfe05770ee/uncloseai-machine-learning-reference-guide-to-inference-clients" target="_blank">📚 Book</a></li>
</ul>
</nav>
</div>
</aside>
<!-- Main content -->
<main>
<header>
<hgroup>
<a href="https://uncloseai.com"><h1 class="unturf" style="font-family: 'ChunkFiveRegular';">uncloseai.</h1></a>
<p>Welcome to uncloseai.com - Free LLM & Text To Speech Artificial Intelligence Service</p>
</hgroup>
<nav>
<ul>
<li><a href="#" onclick="switchTheme('auto')">Auto</a></li>
<li><a href="#" onclick="switchTheme('light')">Light</a></li>
<li><a href="#" onclick="switchTheme('dark')">Dark</a></li>
</ul>
</nav>
</header>
<h2 id="introduction">Introducing uncloseai & Hermes & Qwen & TTS Speech Endpoints</h2>
<p>At <strong>uncloseai.</strong>, we offer free AI services powered by multiple AI models and a TTS (Text-to-Speech) endpoint. Our mission is to provide accessible AI tools for everyone, embodying the principles of both free as in beer & free as in freedom. You can interact with our models without any cost, and you are encouraged to contribute and build upon the open-source code & models that we use.</p>
<p><strong>Available Endpoints:</strong></p>
<ul>
<li><a href="https://hermes.ai.unturf.com/v1/models" target="_blank">hermes.ai.unturf.com/v1</a> - General purpose conversational AI</li>
<li><a href="https://qwen.ai.unturf.com/v1/models" target="_blank">qwen.ai.unturf.com/v1</a> - Specialized coding model</li>
<li><a href="https://speech.ai.unturf.com/v1/models" target="_blank">speech.ai.unturf.com/v1</a> - Text-to-speech</li>
</ul>
<p>See our <a href="/inference.html#model-discovery">Model Discovery docs</a> to query the current model IDs being hosted.</p>
<p>We intend to be a drop in replacement, you can use the existing open source OpenAI client to communicate with us.</p>
<h2 id="client-side">uncloseai.js - Client-Side AI for Everyone</h2>
<p>This page includes the <a href="/uncloseai-js.html">uncloseai.js</a> script which adds a floating "uncloseai." button in the bottom right corner. Click it to interact with Hermes AI directly from your browser.</p>
<p>This is a <strong>web client-only solution</strong> - no server required. Add AI capabilities to any static site or CDN with just one line of code.</p>
<h3 id="installation">✨ One-Line Installation</h3>
<pre><code class="html">&lt;script src="https://uncloseai.com/uncloseai.js" type="module"&gt;&lt;/script&gt;</code></pre>
<p><a href="/uncloseai-js.html"><strong>📖 Read the full uncloseai.js documentation →</strong></a></p>
<h3 id="browser-toys">🧩 Browser Toys</h3>
<p>Want the uncloseai. button on <strong>every</strong> 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.</p>
<ul>
<li><strong>Chrome / Edge / Brave / Vivaldi / Arc</strong> — Manifest V3</li>
<li><strong>Firefox</strong> — Manifest V2</li>
<li><strong>Safari</strong> — Web Extension (via Xcode)</li>
</ul>
<p><a href="/browser-toys.html"><strong>🧩 Get Browser Toys →</strong></a></p>
<h2 id="examples">Code Examples</h2>
<p>We provide comprehensive code examples for using the <strong>uncloseai.</strong> 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).</p>
<h3>Quick Start Examples:</h3>
<ul>
<li><a href="/python-examples.html"><strong>Python Examples</strong></a> - Complete examples using the OpenAI Python client library</li>
<li><a href="/nodejs-examples.html"><strong>Node.js Examples</strong></a> - Complete examples using the OpenAI Node.js client library</li>
</ul>
<h3>42 Programming Languages:</h3>
<p>We provide SDK implementations with streaming support for 42 programming languages! Browse all language examples:</p>
<p>🔗 <a href="/languages" target="_blank"><strong>Browse All 42 Language Examples →</strong></a></p>
<p>Includes: AWK, Bash, C, C++, C#, Clojure, COBOL, Common Lisp, Crystal, D, Dart, Deno, Elixir, Erlang, F#, Fortran, Go, Groovy, Haskell, Java, JavaScript, Julia, Kotlin, Lua, Mojo*, Nim, OCaml, Odin, Perl, PHP, PowerShell, Prolog, Python, R, Ruby, Rust, Scala, Scheme, Tcl, V, VB.NET, and Zig!</p>
<p><small>* Mojo implementation is non-streaming only (Lightbug HTTP library doesn't yet support SSE streaming as of 2025-10-15)</small></p>
<h3>uncloseai. book - Machine Learning Reference Guide:</h3>
<p>📚 <a href="https://shop.unturf.com/p/8486f492-a93e-11f0-b477-02dfe05770ee/uncloseai-machine-learning-reference-guide-to-inference-clients" target="_blank"><strong>Purchase the uncloseai. book on unturf.com Shop →</strong></a></p>
<p>Comprehensive reference guide covering inference clients, streaming implementations, and best practices for all 42 programming languages.</p>
<p>All examples use the OpenAI-compatible API interface, making it easy to integrate with existing code. Simply change the <code>base_url</code> to point to our endpoints. See our <a href="/inference.html#model-discovery">Model Discovery docs</a> for endpoint URLs and how to query current model IDs.</p>
<h2 id="inference">How we run inference</h2>
<p>Want to contribute idle GPU time or reproduce everything in your own cluster?</p>
<p><a href="/inference.html"><strong>📖 Read the full inference setup documentation →</strong></a></p>
<h2 id="open-source">Open Source & Public Domain</h2>
<p><strong>uncloseai.</strong> is completely <strong>public domain</strong> - free as in beer, free as in freedom. AI for all, internet for all, open web for everyone.</p>
<p>📦 <strong>Source Code:</strong> <a href="https://git.unturf.com/engineering/unturf/uncloseai.com" target="_blank">https://git.unturf.com/engineering/unturf/uncloseai.com</a></p>
<p>📄 <strong>Full Documentation:</strong> See README.rst in the repository for complete technical details, architecture, and contribution guidelines.</p>
<h2 id="discussions">Questions & Comments & Discussions</h2>
Use the <a href="https://www.remarkbox.com" target="_blank">Remarkbox</a> below to tell us what you think!
<div id="remarkbox-div">
<noscript>
<iframe id=remarkbox-iframe src="https://my.remarkbox.com/embed?nojs=true" style="height:600px;width:100%;border:none!important" tabindex=0></iframe>
</noscript>
</div>
<script src="https://my.remarkbox.com/static/js/iframe-resizer/iframeResizer.min.js"></script>
<script>
var rb_owner_key = "944c8dfa-8b2b-11ef-af0e-29ab4fb285a0";
var thread_uri = window.location.href;
var thread_title = window.document.title;
var thread_fragment = window.location.hash;
function getCurrentTheme() {
// Check if data-theme is set on documentElement
var theme = document.documentElement.getAttribute('data-theme');
if (theme) {
return theme; // 'light' or 'dark'
}
// If auto, detect system preference
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
return 'dark';
}
return 'light';
}
function buildRbSrc() {
var mode = getCurrentTheme();
return "https://my.remarkbox.com/embed" +
"?rb_owner_key=" + rb_owner_key +
"&thread_title=" + encodeURI(thread_title) +
"&thread_uri=" + encodeURIComponent(thread_uri) +
"&mode=" + mode +
thread_fragment;
}
var rb_src = buildRbSrc();
function create_remarkbox_iframe() {
var ifrm = document.createElement("iframe");
ifrm.setAttribute("id", "remarkbox-iframe");
ifrm.setAttribute("scrolling", "no");
ifrm.setAttribute("src", rb_src);
ifrm.setAttribute("frameborder", "0");
ifrm.setAttribute("tabindex", "0");
ifrm.setAttribute("title", "Remarkbox");
ifrm.style.width = "100%";
document.getElementById("remarkbox-div").appendChild(ifrm);
}
create_remarkbox_iframe();
iFrameResize(
{
checkOrigin: ["https://my.remarkbox.com"],
inPageLinks: true,
initCallback: function(e) { e.iFrameResizer.moveToAnchor(thread_fragment) }
},
document.getElementById("remarkbox-iframe")
);
</script>
<script>hljs.highlightAll();</script>
<footer>
<small>© uncloseai. 2025</small>
<br>
<small>Stylesheets by <a href="https://picocss.com" target="_blank">PicoCSS</a></small>
<small>& <a href="https://highlightjs.org/" target="_blank">highlight.js</a></small>
<br>
<small><a href="/privacy-policy.html">Privacy Policy</a> | <a href="/terms-of-use.html">Terms of Use</a></small>
</footer>
<script>
// Simple active link highlighting
document.querySelectorAll('.table-of-contents a').forEach(link => {
link.addEventListener('click', function() {
document.querySelectorAll('.table-of-contents a').forEach(a => a.classList.remove('active'));
this.classList.add('active');
});
});
// Highlight current section on scroll
const sections = document.querySelectorAll('h2[id], h3[id]');
const navLinks = document.querySelectorAll('.table-of-contents a');
window.addEventListener('scroll', () => {
let current = '';
sections.forEach(section => {
const sectionTop = section.offsetTop;
const sectionHeight = section.clientHeight;
if (window.scrollY >= sectionTop - 100) {
current = section.getAttribute('id');
}
});
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === '#' + current) {
link.classList.add('active');
}
});
});
</script>
</main>
</body>
</html>