Codync
무료 오픈소스 1:1 대안, Grok Bot과 Muse 대신
Arena fără frontiere는 AI 모델 간 오프라인 대결, Elo 순위, 하나의 파일에 오프라인 우선으로 제공
Arena fără frontiere — dueluri oarbe între modele AI, clasament Elo, totul offline-first, într-un singur fișier. Fișierul e al tău.
개발 도구HTML · JavaScriptGitHub @chiuta온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Dueluri oarbe între modele AI cu clasament Elo local (export CSV).
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗English · Română · Français · Italiano · Español · Português · Deutsch · Magyar
Version: 2.2.0 · Last updated: 2026-10-27
Interface languages: Română, English, Français, Italiano, Español, Português (PT), Deutsch, Magyar
Status: stable (2.2.0). The optional password encryption of API keys and the demo prompt sets are new; the encryption has not been audited by a third party.
Offline: partial. The interface loads offline after the first visit and the demo models and the in-browser engines work without a network; cloud models and local servers need a connection.
Blind duels between AI models, with a local Elo leaderboard — in a single HTML file.
Live app: https://chiuta.github.io/ARENA/
ARENA is a single-file app (index.html, vanilla JavaScript) in which you compare two language models without knowing which is which: you send the same prompt to two anonymous "combatants", vote for the better answer, and then the app shows you who they were and updates an Elo leaderboard. The models can be cloud services (with your API key), local servers or in-browser engines; there are also demo models that work without any key.
category | prompt), consecutive blind-duel sessions, per-category Elo leaderboard (recomputed from history) and an exportable JSON report (no API keys, no prompt texts). All local.1 / 2 / 3 / 4 vote (A, B, tie, both bad) when you are not in a text field; Ctrl/Cmd+Enter in the text field starts the duel or the comparison.=, +, -, @ are neutralised.localStorage (they stay in sessionStorage and disappear when the tab is closed).Local storage: all the data (models, API keys, leaderboard, history) is saved in localStorage under the key arena-ff-v1. The API keys can be kept separately, only in sessionStorage, from Settings. If localStorage is not available, the data is lost when the page is closed.
Network: the app has no server of its own and sends no telemetry. Chat requests go directly from the browser to the provider you configure (for example api.openai.com, api.anthropic.com, gen.pollinations.ai, router.huggingface.co, a local localhost server, etc.), with your key.
CDN: only if you choose the in-browser engines, the modules are loaded from vendor/ of the same origin (@mlc-ai/[email protected], @huggingface/[email protected], no CDN); then the WebLLM model library (.wasm, pinned binary-mlc-llm-libs commit, verified by SHA-256 SRI) or the ONNX Runtime .wasm (pinned jsDelivr URL, SHA-256 verified, refused on mismatch) and the model weights (e.g. from Hugging Face, no pinned hash) are downloaded.
Cloud models disabled by default: the catalogue models that do not require a key (Kilo Gateway, api.kilo.ai: Kilo Auto, GLM-5, MiniMax M2.5, StepFun Step 3.5 Flash) are added to the list but disabled; enabling them (a switch in Settings) requires explicit confirmation, and only then can a duel send them the prompt. On the first run after this version, models of this kind left active from a previous version are disabled once. Without consent, only the demo (offline) models are active.
API keys: by default they are kept in plain text in localStorage (arena-ff-v1); with the "session only" option (Settings → Your data) they are kept only in sessionStorage (arena-ff-v1-keys) and are not written to disk, and at "Export everything" the app asks whether you want to include the keys (Cancel = export without keys). Anyone with access to the browser profile or running script on this origin can read them.
The links in the catalogue (documentation, key consoles) open only on click.
The demo models make no network calls.
CSP: the page has a CSP policy: scripts only inline, by SHA-256 hash (no 'unsafe-inline'), plus 'self' (the in-browser engines come from ), // connections (the providers' base addresses are configured by the user, so they cannot be enumerated), no objects, / blocked.
Download index.html and open it in a browser. The demo models work fully offline. The cloud providers, the import of the WebLLM/Transformers.js engines and the catalogue synchronisation need internet; Ollama or another local server works over the local network, if the server accepts calls from the browser (CORS).
In Settings → Your data there is a "Password protection" card. Off by default: keys keep working as before (plain localStorage, or sessionStorage with the "session only" option).
arena-ff-v1-vault. arena-ff-v1 then contains no keys and the sessionStorage copy is removed. The old copies are replaced only after the envelope has been read back and decrypted successfully (migration without loss). "Turn off protection" puts the keys back after you confirm the password.node tests/keyvault-core.test.mjs and node tests/keyvault-ui.test.mjs.node tests/keyvault-i18n.test.mjs.In the Evaluation tab, "Add the demo sets (RO)" copies three sets with fixed IDs (demo-ro-1, demo-ro-2, demo-ro-3) into your list, so different people (or you, on different dates) can compare models on the same prompts:
| ID | Content (10 prompts each, each with a category) |
|---|---|
demo-ro-1 | Knowledge and reasoning: geography, history, science, logic, maths, culture, health, uncertainty (a trap question), ethics, unit conversion |
demo-ro-2 | Writing and the Romanian language: correction, summary, e-mail, verse, translation, tone, grammar, proverb, titles, constraint |
demo-ro-3 | Code, data and instructions: Python, SQL, regex, strict JSON, numbered steps, arithmetic, probability, debugging, safety |
These are demonstration sets: short, written by hand, not a statistically validated benchmark. They are copied, so you can edit or delete them; the "Export report (JSON)" button of the Evaluation tab records the set and the results. For repeatability keep the same model versions, the same sets and, where the provider allows it, the same temperature: the app does not control the models' randomness.
.fff.json copy (common kit: core, label, bundle, tts): click on v 1.1.0 · 2026-10-14. Note: the copy also contains the API keys saved in localStorage; use "Encrypt with password" or the existing option "Keep API keys only in the session".tests/fff-r8.test.mjs (network blocked, 1280 and 360 px, axe 0 violations, duel with demo models).pointer:coarse) language, tab, suggestion, mini and chip buttons, selects and search fields are at least 44 px; model toggles get a 44 px touch area. No change on desktop.vendor/. The WebLLM model libraries (.wasm) come from a pinned binary-mlc-llm-libs commit and are verified by SHA-256 SRI; the ONNX Runtime .wasm is verified by SHA-256 before use (refused on mismatch). The CSP drops esm.run and cdn.jsdelivr.net from script-src.vendor/, +6.4 MB). New NOTICE.md..fff.json copy (common kit); contrast fixed.1.3.3 — 2026-10-22: The six window.confirm prompts (reset, delete model, cloud consent, key export, wipe data, bulk test) are replaced by in-page dialogs; the invalid-JSON import message is translated; minimum text size 12 px.
1.0.0 — 2026-10-12: the version and the date of the last update are shown in the app
aria-live region after it disappeared; saving a model without a name now shows a message and marks the field aria-invalid (before, nothing visible happened).script-src by hash (no 'unsafe-inline'); the "API keys only in the session" option.h1 heading added, the language selector as a labelled (axe: 0 violations).MIT for the app's code and structure — see the LICENSE file. Any third-party libraries included in the file keep their own licences.
Alexio — Alexandru-Ionuț Chiuță, contact: [email protected].
ARENA is a single-file HTML app for blind head-to-head duels between AI models with a local Elo leaderboard. Models can be cloud APIs (your own key), local servers (e.g. Ollama) or in-browser engines; demo models work offline. Data stays in localStorage (arena-ff-v1); requests go straight from the browser to the provider you configure. UI in 8 languages. Licence: MIT (see LICENSE).
Audit: 2026-10-10 (round 2: 2026-10-11, cloud models disabled by default, export with/without keys) — verified the code (network requests, sanitisation of the imported state, rendering of the answers through textContent), accessibility (axe: contrast corrected) and operation (duel with demo models, tabs). The in-browser engines (WebLLM/Transformers.js) are optional and are loaded from vendor/ only on request.
vendor/https:http:ws:baseform