TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Marbel AI — mengobrol dengan beragam model AI.
Translation pending
ProductivityJavaScript · CSSGitHub @antono4OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Chat dengan beragam model AI sekaligus yang saling melengkapi untuk jawaban yang lebih akurat dan cepat. Link: • Demo • Ensemble multi-model - mode Auto Model menjalankan semua model secara paralel dan memakai jawaban yang paling cepat berhasil; mode single-model punya failover otomatis ke model cadangan. . • Tombol Salin & Ulangi - salin jawaban atau minta AI menulis ulang jawaban yang sama. • Antarmuka chat modern - sidebar riwayat percakapan, dark mode siang/malam, dan dukungan blok kode. . . • Cepat dan responsif - efek mengetik agar terasa ringan.Read the full README ↗
Ruang kerja AI gratis — mengobrol, membuat gambar, dan ilustrasi video. Tanpa akun, tanpa biaya, tanpa API key.
Satu antarmuka untuk banyak model. Mode Auto Model menjalankan semua model paralel lalu memakai jawaban tercepat yang berhasil, dengan failover otomatis antar provider gratis. Tersedia juga sebagai aplikasi Android (APK).
Marbel AI adalah aplikasi chat AI ringan yang bisa berjalan tanpa backend terpisah. Semua model yang dipakai adalah model gratis tanpa API key.
| Bagian | Berkas | Peran |
|---|---|---|
| Frontend | index.html, app.js, styles.css | Antarmuka chat, mode media, riwayat percakapan, tema |
| Backend (opsional) | server.js | Server statis + proxy CORS ke provider gratis, dengan failover berurutan |
| Aplikasi Android | android/, capacitor.config.json | Pembungkus WebView (Capacitor) dari UI yang sama |
Ada dua mode pemanggilan model, dipilih otomatis berdasarkan tempat halaman dijalankan:
app.js memanggil provider yang mengizinkan CORS langsung dari
browser. Tidak butuh backend, jadi tetap berjalan 24/7.server.js
(Render/Railway/Docker) atau saat memakai ?frontend=URL. Model dipanggil
lewat /api/chat, dan server melakukan failover antar-upstream.Tanpa biaya & tanpa API key. Semua model berasal dari daftar no-cost-ai dan provider gratis lain. Tidak perlu kartu kredit atau akun berbayar.
Layar sambutan (mode gelap, default) — pilih kartu saran, atau aktifkan mode Gambar/Video.
Jawaban dengan blok kode + tombol Salin & Ulangi — setiap jawaban punya aksi salin dan tulis ulang.
Pemilih model — Auto Model (Tercepat) untuk ensemble paralel, atau kunci
satu model tertentu.
Kartu media — mode Gambar memakai provider gambar gratis dan menampilkan pratinjau beserta tautan "Buka gambar".
Mode siang — tema gelap/terang bisa diganti dari tombol di sidebar.
| Mode gelap (default) | Mode siang |
|---|---|
Area chat lebar — sidebar bisa disembunyikan agar area percakapan lebih luas.
Tampilan ponsel — sidebar berubah menjadi drawer dengan lapisan scrim.
| Layar sambutan | Sidebar terbuka |
|---|---|
server.js mencoba setiap upstream berurutan;
directChat() melakukan hal yang sama di browser.qwen3.8-27b, gpt-oss-20b,
qwen3-8b) dipetakan ke nama model yang dikenal tiap provider, sehingga
failover tetap menghasilkan jawaban.localStorage.MarbelAI.apk) yang berjalan mandiri.nosniff, X-Frame-Options, Referrer-Policy,
Cross-Origin-Opener-Policy, dan Permissions-Policy dipasang di semua
respons. ┌──────────────────────────────────────────┐
│ Frontend (app.js) │
│ chat · media · thread · tema │
└───────────────┬──────────────────────────┘
│
┌──────────────────┴───────────────────┐
│ │
(GitHub Pages / APK) (Render/Railway/Docker
mode LANGSUNG atau ?frontend=URL)
│ │
▼ ▼
┌────────────────────────┐ ┌──────────────────────────┐
│ DIRECT_UPSTREAMS │ │ server.js /api/chat │
│ failover berurutan: │ │ failover berurutan: │
│ hermes → qwen → │ │ UPSTREAM (dipisah koma) │
│ pollinations → free.ai │ └────────────┬─────────────┘
└────────────────────────┘ │
│ │
└──────────────► model gratis ◄─────────┘
(uncloseai · pollinations · free.ai)
Alur satu pesan:
chatAnswer() menyusun urutan model: model pilihan dulu (bila ada), lalu
sisanya dari FREE_MODELS.firstFulfilled); mode satu
model mencoba berurutan dengan failover.modelChat() memilih jalur: langsung (CORS) atau backend proxy.message.content; bila kosong, dicoba
reasoning_content.Prasyarat: Node.js 18 atau lebih baru.
# 1. Ambil kode
git clone https://github.com/antono4/MarbelAIv2.1.git
cd MarbelAIv2.1
# 2. Jalankan server (static + proxy CORS)
PORT=12000 node server.js
# 3. Buka di browser
# http://localhost:12000
Server menyajikan index.html, app.js, dan styles.css sekaligus menjadi
proxy ke provider gratis di /api/chat. Kirim pesan — tidak perlu login atau
API key.
Memakai backend sendiri dari GitHub Pages:
https://antono4.github.io/MarbelAIv2.1/?frontend=https://backend-anda.example.com
Daftar model aktif ada di FREE_MODELS (app.js) dan MODELS_LIST (server.js).
| Model | Provider | Keterangan |
|---|---|---|
qwen3.8-27b | uncloseai (hermes/qwen) | Qwen 3.8 27B, gratis tanpa API key, default |
gpt-oss-20b | pollinations | GPT-OSS 20B open-weights, tier anonim |
qwen3-8b | Free.ai | Qwen 3 8B, model open-weight gratis |
Pemetaan model saat failover — setiap provider mengenal nama model yang berbeda, jadi model UI dipetakan otomatis:
| Model UI | uncloseai | pollinations | Free.ai |
|---|---|---|---|
qwen3.8-27b | turboderp/Qwen3.8-27B-exl3 | openai | qwen7b |
gpt-oss-20b | turboderp/Qwen3.8-27B-exl3 | openai | qwen7b |
qwen3-8b | turboderp/Qwen3.8-27B-exl3 | openai | qwen3-8b |
Catatan uncloseai. Provider ini memakai vLLM/Qwen yang suka menaruh proses berpikir di dalam
content. Server dan klien mengirimchat_template_kwargs.enable_thinking=falseagar jawaban bersih.Catatan provider. Endpoint gratis mudah kena rate-limit (429) bila banyak permintaan datang dari satu IP dalam waktu singkat — terutama dari IP datacenter. Failover berurutan di
directChat()danserver.jsmengurangi hal ini. Nama model upstream sengaja tidak ditampilkan di UI.
Aktifkan mode lewat tombol Gambar/Video di composer, atau kartu saran "Buat gambar/ilustrasi video" di layar sambutan. Prompt yang dikirim menjadi deskripsi media.
| Mode | Provider | Hasil |
|---|---|---|
| Gambar | https://api.a0.dev/assets/image | Gambar (WEBP), gratis tanpa API key, CORS aktif |
| Ilustrasi video | provider yang sama | Gambar dengan animasi Ken Burns (.media-burns) |
Kartu media punya tiga status: memuat, siap, dan gagal. Saat gagal, kotak galat menampilkan tombol "Coba lagi" yang memakai seed baru — mengulang URL yang sama hanya akan mengembalikan hasil gagal/cache yang sama.
Penting. Tidak ada provider video gratis yang menyajikan video dari URL GET, jadi mode video memakai gambar + animasi, bukan video sungguhan. Sejak Sep 2026
image.pollinations.aimemblokir tier anonim (402INSUFFICIENT_BALANCE/ 429Queue full for IP) dangen.pollinations.aimewajibkan API key, sehingga endpoint itu tidak lagi dipakai.
Variabel berikut dibaca server.js. Semuanya opsional untuk pemakaian dasar.
| Variabel | Default | Deskripsi |
|---|---|---|
PORT | 12000 | Port HTTP server |
UPSTREAM | https://hermes.ai.unturf.com,https://qwen.ai.unturf.com,https://text.pollinations.ai,https://api.free.ai | Daftar upstream OpenAI-compatible, dipisah koma (failover berurutan) |
UPSTREAM_PREFIX | (kosong) | Prefix path upstream, bila API berada di sub-path |
DEFAULT_MODEL | qwen3.8-27b | Model default bila klien tidak mengirim model |
MODELS_LIST | qwen3.8-27b,gpt-oss-20b,qwen3-8b | Daftar model yang dilayani /api/models |
API_KEY | (kosong) | Opsional, dipakai bila upstream butuh Bearer token |
ALLOW_ORIGIN | * | Origin yang diizinkan untuk CORS |
USE_SSE | 1 | 1 = minta streaming, 0 = JSON biasa |
FORCE_NO_STREAM | 1 | 1 = paksa stream:false demi keandalan |
MODELS_TTL | 300 | Masa cache daftar model (detik) |
DEBUG_LOG | (kosong) | Set 1 untuk mencatat setiap request di konsol |
| Endpoint | Metode | Deskripsi |
|---|---|---|
/ | GET | UI statis (index.html) |
/api/models | GET | Daftar model gratis aktif (MODELS_LIST), di-cache MODELS_TTL detik |
/api/chat | POST | Proxy ke upstream OpenAI-compatible dengan failover berurutan |
/MarbelAI.apk | GET | Mengunduh APK release (saat disajikan server.js) |
Contoh permintaan chat:
curl -X POST http://localhost:12000/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.8-27b",
"messages": [{ "role": "user", "content": "Halo, siapa kamu?" }]
}'
Contoh respons /api/models:
{
"object": "list",
"data": [
{ "id": "qwen3.8-27b", "object": "model" },
{ "id": "gpt-oss-20b", "object": "model" },
{ "id": "qwen3-8b", "object": "model" }
]
}
docker build -t marbel-ai .
docker run -p 10000:10000 \
-e PORT=10000 \
marbel-ai
Buka http://localhost:10000. Image sudah menyetel UPSTREAM, DEFAULT_MODEL,
dan MODELS_LIST secara default.
| Platform | Cara pakai |
|---|---|
| GitHub Pages | Frontend statis memanggil provider CORS langsung dari browser — tanpa backend, berjalan terus. Lihat Demo. Untuk backend sendiri, tambahkan ?frontend=<URL>. |
| Render | Jadikan render.yaml sebagai Blueprint. |
| Railway | Pakai railway.json; set PORT dan UPSTREAM di variabel lingkungan. |
| Docker | Lihat bagian Docker di atas. |
| Android (APK) | Lihat bagian Aplikasi Android. |
APK adalah pembungkus WebView Capacitor dari UI yang sama. Aset web
dipaketkan di dalam APK (webDir: www), jadi aplikasi berjalan mandiri tanpa
backend terpisah.
MarbelAI.apk — build release, sudah ditandatangani, siap dibagikan.MarbelAI-debug.apk — build debug untuk pengujian (dihasilkan
./build-apk.sh, tidak di-commit).Instal di perangkat Android (aktifkan "Instal dari sumber tidak dikenal"):
adb install -r MarbelAI.apk
Prasyarat: JDK 17+, Node.js 18+, dan Android SDK (platform 35 + build-tools 35).
export ANDROID_HOME=/path/ke/Android/Sdk
./build-apk.sh # APK debug
./build-apk.sh release # APK release
# atau: npm run apk
Hasil build ada di android/app/build/outputs/apk/. Skrip ini menyalin aset web
ke www/ dan menghasilkan ikon launcher (build-icon.py).
Detail aplikasi: applicationId ai.marbel.app, minSdk 23, targetSdk 35,
versionCode 2, versionName 1.1.0, izin INTERNET.
Keamanan keystore. Build release ditandatangani memakai
android/marbel-release.keystoremelaluiandroid/keystore.properties. Kedua berkas itu tidak di-commit (lihat.gitignore). Untuk rilis nyata, buat keystore sendiri:keytool -genkeypair -v -keystore android/marbel-release.keystore \ -alias marbel -keyalg RSA -keysize 2048 -validity 10000
start-servers.sh menjalankan dua instance server dengan auto-restart.
./start-servers.sh # port 12000 & 12001 + auto-restart (foreground)
./start-servers.sh ensure # pastikan server hidup; start di background bila belum
./start-servers.sh watchdog # sekali jalan: pastikan server hidup, lalu keluar
./start-servers.sh status # cek status
./start-servers.sh stop # hentikan semua (launcher + server)
./start-servers.sh 7000 8000 # port khusus (override)
/tmp/marbel-logs/server-<port>.log~/.marbelai-autostart.sh (di-wire ke ~/.profile) memanggil
ensure saat login, dengan auto-detect path proyek ($MARBEL_PROJECT_DIR >
~/project > /workspace/project)MarbelAIv2.1/
├── index.html Markup UI
├── app.js Frontend: chat, ensemble, media, thread, tema
├── styles.css Gaya dan tema (gelap/terang)
├── server.js Server statis + proxy OpenAI-compatible + failover
├── start-servers.sh Launcher dua server + auto-restart
├── build-apk.sh Skrip build APK
├── build-icon.py Generator ikon launcher Android
├── capacitor.config.json Konfigurasi Capacitor
├── android/ Proyek Android (Capacitor)
├── MarbelAI.apk APK release siap instal
├── docs/screenshots/ Gambar untuk README ini
├── Dockerfile Image Docker
├── render.yaml Blueprint Render
├── railway.json Konfigurasi Railway
├── AGENTS.md Catatan teknis repo untuk kontributor
├── LICENSE Lisensi MIT
└── package.json Metadata + skrip start/apk
| Gejala | Penyebab umum | Solusi |
|---|---|---|
| Semua model gagal / "Terjadi kesalahan saat menghubungi server" | Provider gratis sedang sibuk (rate-limit 429) | Tunggu sebentar lalu kirim ulang; failover berurutan sudah berjalan |
| Provider menolak dari IP datacenter/lokal | uncloseai mudah kena 429 dari IP non-perangkat | Wajar di lingkungan uji; di perangkat nyata normal |
| Jawaban berisi proses berpikir | Provider tidak menghormati enable_thinking | Sudah dikirim otomatis; bila tetap muncul, ganti model |
| Kartu media gagal memuat | Provider gambar sedang sibuk/memblokir tier anonim | Tekan "Coba lagi" (memakai seed baru) |
| GitHub Pages tidak menemukan backend | Halaman statis memang mode langsung | Tidak perlu backend; bila ingin backend sendiri pakai ?frontend=URL |
| APK gagal memanggil model | Provider menolak permintaan dari IP perangkat | Aplikasi otomatis beralih ke proxy cadangan https://marbel-ai.onrender.com |
| Build APK gagal | ANDROID_HOME belum diset atau SDK kurang | Set ANDROID_HOME; pastikan platform 35 + build-tools 35 dan JDK 17+ |
Didistribusikan di bawah Lisensi MIT. Copyright 2026 Antono4.
Dibuat dengan ❤️ — AI gratis untuk semua.