nokode - Jika LLM Bisa Melakukan Semuanya, Mengapa Kita Harus Menulis Kode? (Eksperimen Aplikasi Web)
(github.com/samrolken)- Eksperimen membangun server web tanpa logika aplikasi sama sekali, sehingga LLM menangani semua permintaan
- Server hanya menerima permintaan HTTP lalu bertanya ke LLM “apa yang harus dilakukan?”, dan LLM mengerjakan sisanya
- Server menjalankan fungsi CRUD hanya dengan tiga alat: database, webResponse, dan updateMemory
- LLM secara mandiri melakukan perancangan skema SQL, pembuatan HTML·JSON, hingga penerapan umpan balik, lalu mewujudkan aplikasi manajemen kontak dasar
- Kecepatan respons 30~60 detik, biaya 100~1000 kali lebih tinggi dibanding aplikasi web tradisional, serta ada masalah konsistensi UI dan memori
- Meski begitu, eksperimen ini menunjukkan kemungkinan membuat aplikasi CRUD lengkap yang berjalan tanpa kode, sehingga mengisyaratkan bahwa kode itu sendiri bisa jadi hanyalah konsep transisional
Latar belakang
- Berawal dari gagasan khayalan (Shower Thought) bahwa “suatu hari nanti kita tidak perlu lagi menulis kode”
- Di masa depan, LLM mungkin dapat memproses input secara real-time dan menghasilkan video 120fps, sehingga komputasi murni berbasis niat tanpa aplikasi maupun kode menjadi mungkin
- Dalam kenyataannya ini masih berada di ranah fiksi ilmiah, tetapi sebagai eksperimen akhir pekan, penulis memutuskan untuk menguji langsung sejauh mana hal itu mungkin dengan teknologi saat ini
- Hipotesis eksperimen ini sejak awal memang memperkirakan kegagalan
- Saat sebagian besar AI berfokus pada arah menghasilkan kode (misalnya Claude Code, Cursor, Copilot, dll.),
proyek ini dibuat untuk menguji sudut pandang lain: “bagaimana jika pembuatan kode dihilangkan sepenuhnya?”
- Saat sebagian besar AI berfokus pada arah menghasilkan kode (misalnya Claude Code, Cursor, Copilot, dll.),
- Hasilnya, dibuatlah server HTTP tanpa route, controller, maupun business logic sama sekali, yang bekerja dengan menanyakan ke LLM untuk setiap permintaan: “apa yang harus dilakukan?”
- Tujuan eksperimen ini adalah membuktikan “seberapa jauh sebenarnya masa depan itu masih berada”
Ringkasan proyek
- nokode adalah eksperimen yang menguji struktur di mana semua permintaan ditangani oleh LLM, dengan membangun server web tanpa logika aplikasi
- Server hanya menerima permintaan HTTP lalu bertanya ke LLM “apa yang harus dilakukan?”, dan LLM mengerjakan sisanya
- Tujuannya adalah memverifikasi apakah LLM bisa menjalankan logika aplikasi secara langsung tanpa menghasilkan kode lebih dulu
- Objek eksperimennya adalah aplikasi manajemen kontak (contact manager), yang mencakup fungsi CRUD dasar (input, lihat, ubah, hapus)
Konfigurasi sistem
- Backend hanya terdiri dari 3 alat
- database: menjalankan SQL di SQLite, dan LLM merancang sendiri skemanya
- webResponse: menghasilkan respons dalam format yang sesuai seperti HTML, JavaScript, JSON, dan sebagainya
- updateMemory: menyimpan umpan balik pengguna dalam Markdown untuk dirujuk pada permintaan berikutnya
- Sebagai contoh, permintaan ke
/contactsmenghasilkan halaman HTML, sedangkan permintaan ke/api/contactsmenghasilkan respons JSON - Setiap halaman menyertakan widget umpan balik, sehingga permintaan seperti “buat tombolnya lebih besar” atau “ganti ke tema gelap” bisa langsung diterapkan
Hasil eksperimen
- Secara fungsional berhasil berjalan
- Pengiriman formulir, penyimpanan data, tampilan UI, dan respons API semuanya berjalan normal
- Bahkan tanpa contoh, LLM dapat menghasilkan skema database yang sesuai, SQL yang aman, API bergaya REST, layout responsif, validasi formulir, dan penanganan error
- Masalah performa
- Membutuhkan 30~60 detik per permintaan, sehingga 300~6000 kali lebih lambat dibanding aplikasi web biasa (10~100ms)
- Biaya $0.01~0.05 per permintaan, sehingga 100~1000 kali lebih mahal
- Ada ketidakkonsistenan warna dan layout UI, tidak mampu mengingat status sebelumnya, dan kesalahan langsung terjadi jika SQL yang dihasilkan salah
- Upaya optimasi prompt seperti “⚡ THINK QUICKLY” justru memperlambat
Kesimpulan dan implikasi
- LLM memang memiliki kemampuan untuk menjalankan logika aplikasi secara langsung
- Permasalahannya terletak pada keterbatasan performa seperti kecepatan, biaya, konsistensi, dan keandalan
- Namun, keterbatasan ini lebih merupakan wilayah perbaikan kuantitatif daripada masalah kualitatif
- Kecepatan inferensi meningkat sekitar 10 kali setiap tahun
- Biaya terus menurun
- Perluasan panjang konteks berpotensi memperbaiki memori
- Tingkat kesalahan juga menunjukkan tren menurun
- Pada akhirnya, era “AI menulis kode” mungkin justru lebih jauh daripada era “AI mengeksekusi langsung”
- Saat ini yang tersisa hanyalah kode tingkat infrastruktur seperti konfigurasi HTTP, definisi alat, dan koneksi DB,
yang menunjukkan kemungkinan transisi jangka panjang menuju “komputasi yang hanya terdiri dari niat dan eksekusi”
Cara menjalankan
- Setelah
npm install, atur penyedia LLM dan API key di file.env - Jalankan
npm startlalu akseshttp://localhost:3001(permintaan pertama membutuhkan 30~60 detik) - Dengan mengubah
prompt.md, jenis aplikasi atau fiturnya dapat diganti- Anda bisa mencoba berbagai rute seperti
/game,/dashboard,/api/stats - Masukkan umpan balik seperti “make this purple”, “add a search box” untuk langsung menerapkannya
- Anda bisa mencoba berbagai rute seperti
- Biaya per permintaan berada di kisaran $0.001~0.05, tergantung model
- Dirilis dengan lisensi MIT
2 komentar
Persoalannya mungkin sampai sejauh mana komputasi bisa menjadi lebih cepat dan murah.
Jika di masa depan server rata-rata menjadi 100 ribu kali lebih cepat daripada sekarang, tetapi biaya operasional maupun biaya pemasangannya tetap sama, itu juga tampaknya bisa menjadi pendekatan yang tepat.
Seiring komputasi menjadi lebih murah, seperti dulu kita beralih dari bahasa mesin ke C, lalu dari C ke node js atau Python, mungkin ke depannya kita juga akan beralih ke llm.
Banyak hal akan berubah, dan menurut saya itu akan cukup menarik. Akan muncul banyak peluang juga.
Opini Hacker News
Saya juga punya pemikiran serupa
Saya pertama kali memikirkan ini saat ChatGPT 3.5 muncul
Suatu hari AI mungkin bisa sepenuhnya menggantikan program, tetapi inti sebenarnya adalah menemukan abstraksi (abstraction) yang tepat
Misalnya, seperti perpindahan dari CVS ke Git yang membuka era microservices, abstraksi yang baik punya kekuatan untuk mengubah masalah secara mendasar
Agar LLM bisa menemukan abstraksi semacam ini sendiri, ia perlu belajar lewat interaksi jangka panjang dengan dunia nyata
Jika ditambahkan alat yang memungkinkan LLM mengedit file kode secara langsung, kecepatan respons dan konsistensi tampaknya akan meningkat besar
Kode pada akhirnya akan berperan seperti penyimpanan memori (memory)
Mengirim permintaan HTTP langsung ke LLM mirip cache miss, dan mekanisme umpan balik yang memicu pembaruan kode juga bisa dipertahankan
Masih banyak ruang untuk optimasi, tetapi secara realistis metode coding tradisional sepertinya tetap lebih efisien
Ini terdengar seperti pertanyaan, “jika perilaku non-deterministik dimungkinkan, mengapa harus bersikeras deterministik?”
Tetapi kebanyakan orang mungkin tidak menginginkan webapp yang bekerja berbeda setiap saat
Kode deterministik punya keterbatasan dalam menangani masalah yang kompleks, dan pendekatan yang fleksibel seperti manusia mungkin lebih cocok
Tetapi di masa depan LLM akan memiliki kemampuan output dan penyimpanan yang lebih kaya
Misalnya, LLM bisa langsung membuat tautan yang saat diklik akan melakukan kueri ulang secara internal, atau bekerja dengan mengelola database sementara
Pengalaman pengguna terus berubah karena update otomatis, A/B testing, perubahan UX, dan sebagainya
Menariknya, pendekatan seperti ini bisa berjalan hanya dengan context window tanpa alat tambahan
Pada Juli 2025 saya sempat membuat POC
Eksperimen ini dengan baik menunjukkan bagaimana konsep kode boilerplate bisa berubah
Jika beberapa instance dijalankan bersamaan di sandbox dan hasil terbaik dipilih lewat evaluasi internal, itu menjadi semacam meta reinforcement learning
Namun menerjemahkan niat pengguna ke output deterministik itu sulit, dan sebaliknya aplikasi tradisional kurang fleksibel
Pada akhirnya, kuncinya adalah bagaimana mengimplementasikan evaluasi niat (intent evaluation) secara stabil
Membuat metode evaluasi yang baik sendiri sama rumitnya dengan membuat model AI
Menangani permintaan dengan cara tradisional jauh lebih hemat biaya daripada langsung memakai LLM
Secara kasar, menghasilkan 10 token dengan model 7 miliar parameter memerlukan lebih dari 100 GFLOPs
Pemborosan listriknya besar
Jika bekerja di enterprise IT, inefisiensi manusia juga tidak kalah besar
Bahkan inefisiensi pun bisa menjadi tren
Mungkin saja cukup menaruh LLM di port 443 lalu menyuruhnya, “kamu adalah server HTTPS sekaligus app server” ;)
Apakah kita benar-benar perlu webapp? Bukankah cukup berbicara dengan komputer lewat suara?
“Tunjukkan foto yang kuambil saat liburan tahun lalu, hapus awannya, lalu kirim ke temanku”
“Setel timer olahraga, tapi jangan masukkan jumping jack”
“Buatkan beat techno gaya Detroit”
“Carikan pasangan kencan untuk malam ini, saya lebih suka rambut hitam”
Saya membayangkan dunia di mana semua hal diproses lewat ucapan seperti itu
Pada akhirnya umat manusia mungkin akan terbelah antara mereka yang menerimanya dan mereka yang menolaknya
Tanda-tandanya sudah terlihat, misalnya pada kebangkitan kembali piringan hitam vinyl
Bahkan antarmanusia pun sering kali teks lebih disukai
Bisa untuk to-do, belanja, sampai manajemen jadwal, dan sepenuhnya dikustomisasi sesuai kebutuhan saya
Tugas kompleks bisa cukup diekspresikan lewat suara, tetapi untuk pekerjaan sederhana yang berulang UI lebih efisien
Misalnya saat mengatakan “belikan saya celana”, untuk memilih satu dari 30 hasil pada akhirnya tetap diperlukan antarmuka visual
Saya juga mengunggah PoC serupa ke GitHub
Pada tahap awal, model ‘desain’ yang lambat digunakan untuk membuat tema aplikasi dan skema DB, lalu model yang lebih cepat menangani respons setelahnya
Saya mencoba menaruh logika di DB dengan PostREST, tetapi kegagalan pembuatan skema dan kueri yang salah terlalu sering terjadi
Saya menjaga konsistensi UI dengan library CSS, dan membuatnya mengingat halaman sebelumnya
Pendekatan seperti ini tampaknya bisa dimanfaatkan sebagai App Bench untuk mengevaluasi apakah LLM mampu membuat aplikasi lengkap dalam sekali jalan