14 Mei 2026

AI Assistant Journey: Dari Nanobot, PicoClaw, Hingga...

Setelah kecewa dengan Nanobot dan PicoClaw yang boros memori dan penuh bug, penulis membangun AI assistant ringan berbasis Ruby yang hanya memakan 50-70 MB RAM, tanpa dependensi eksternal, dan mampu memenuhi semua kebutuhan pribadinya.

Waktu baca: ~ 3 menit

Sejak OpenClaw rilis dan viral, banyak claw dan bot lain yang bermunculan. Dua di antaranya adalah Nanobot dan PicoClaw.

Saya tidak langsung join the hype, karena... belum ada use case-nya.

Beberapa waktu belakangan ini, saya mulai nemu beberapa use case di kehidupan sehari-hari. Beberapa di antaranya:

  • Integrasi dengan aplikasi Wang: aplikasi pencatatan keuangan yang saya kembangkan sendiri untuk mencatat keuangan keluarga. Dengan AI Assistant, proses bulk insert transaksi jadi lebih gampang, nggak perlu repot develop UI-nya lagi.
  • Rangkuman pengeluaran harian dan analisis transaksi harian
  • Reminder tagihan tiap tanggal tertentu
  • Reminder untuk membersihkan rantai motor! Ini yang saya sering lupa
  • Mencatat todo
  • Info Spoiler One Piece dari Reddit

Karena sudah ada use case-nya, saatnya memutuskan mau pakai claw atau bot yang mana

Constraint: Memory Usage Harus Kecil

Itu adalah batasan utamanya. Kenapa? Karena saya mau memanfaatkan server yang ada ketimbang menyewa server tambahan.

Adanya AI Assistent ini tidak boleh mengganggu fungsi utama dari server-server ini. Jadi, AI Assistant ini sifatnya "nebeng" di server.

Pilihan pertama saya jatuh pada Nanobot. Saya coba instal pakai Docker, tapi wow, reserved memory-nya saja 256 MB, agak bertolak belakang dengan slogannya "The Ultra-Lightweight Personal AI Agent". Jadi, saya skip.

Saya lalu beralih ke opsi kedua: PicoClaw. Konon, ini adalah versi Go-nya nanobot. Yang mana berarti hasilnya berupa single binary dan memory consumption-nya jauh lebih rendah ketimbang nanobot.

Secara fitur, PicoClaw ini cukup oke. Tapi ada beberapa hal yang cukup menyebalkan:

  • Struktur file config berubah-ubah terus. Dari models jadi model_list, dari providers jadi provider_list, dsb.
  • Integrasi dengan Telegram masih buggy. Sudah set cron job di topic tertentu, malah dikirim ke topic General. Coba di-fix pakai bantuan AI dan berhasil, tapi entah dengan session-nya. Saya sudah terlanjur malas melakukan prompting karena untuk fix ini saja perlu beberapa kali prompting. Mau pahami codebase-nya pun pasti memakan waktu yang lumayan lama.
  • First chat setelah beberapa jam kadang lama sekali balasnya, dan saya ragu kendalanya ada di server.
  • Restrict to workspace yang annoying. Kadang tidak bisa menghapus file di dalam direktori workspace sendiri. Tidak masuk akal.

Baik Nanobot maupun PicoClaw, konfigurasi mereka sama: sama-sama kompleks untuk kebutuhan saya yang sederhana.

Jadi, saya kepikiran, kenapa saya tidak vibe coding sendiri saja?

Rubot: The Ruby Bot

MVP Rubot saya kembangkan dalam waktu dua hari saja. Memory usage-nya waktu itu hanya 30 MB. Cukup ringan, karena constraint utama rubot adalah: never install external dependencies, just use Ruby standard library.

Goal-nya sederhana saja. Kalau mau pakai Rubot, cukup instal Ruby, lalu jalankan bin/rubot -C telegram untuk menjalankan Rubot dengan Telegram sebagai channel-nya. Tidak perlu menginstal dependensi lagi.

Saat ini, channel yang didukung baru Telegram karena channel itu yang benar-benar saya pakai.

Oh iya, Rubot juga didesain supaya bisa self-learn kalau dia kita omeli, haha. Caranya, Rubot juga sebisa mungkin akan melakukan parsing terhadap pesan kita dan mengelompokkannya ke dalam 3 section di memory: facts, preferences, context. Logikanya masih sangat sederhana, tapi saya rasa sudah sangat cukup untuk kebutuhan saya sehari-hari.

Hingga saat saya menulis ini, semua kebutuhan saya di atas sudah bisa terpenuhi oleh Rubot.

Tidak ada lagi reserved memory seperempat GB.

Tidak ada lagi hal-hal menyebalkan yang saya alami di PicoClaw.

Tidak ada lagi config bejibun.

So far, saya sangat puas dengan Rubot.

Saat ini, reponya masih privat. Belum ada rencana untuk dibuka untuk publik dalam waktu dekat, karena saya rasa masih ada beberapa hal yang perlu ditingkatkan lagi, baik dari sisi fitur maupun keamanan.

Ruby: The Language I Love

Saya bisa dibilang cukup terinspirasi oleh sosok Aaron Patterson, seorang engineer di Shopify yang selalu ingin menulis semuanya dalam bahasa Ruby.

Sintaks Ruby yang elegan sangat memudahkan saya untuk memahami maksud dari sebuah kode, tanpa harus mikir keras. Coba saja baca salah satu kode untuk mengekstrak chat ini.


def extract(message)
return [] if skip_message?(message)

items = call_extractor(message)
return [] if items.values.all?(&:empty?)

stored = []
items.each do |section, facts|
next if facts.empty?
# Capitalize section name to match MEMORY.md conventions
section_name = section.capitalize
facts.each do |fact|
next if duplicate?(section_name, fact)
@memory.append(section_name, fact)
stored << { section: section_name, fact: fact }
end
end
stored
end

Kode ini 100% dibuat oleh AI, dan saya masih dapat dengan mudah memahaminya dalam satu kali baca.

Membuat Rubot menggunakan bahasa Ruby bagi saya adalah double win. Dari sisi memori, hanya menghabiskan sekitar 50 sampai 70 MB.

Dari sisi maintainability, sangat mudah dibaca dan di-maintain karena sintaks Ruby yang elegan. Dua hal ini jadi sangat penting bagi saya pribadi.

Untuk AI Assistant dengan usage yang normal, Ruby saja sudah sangat cukup, karena usernya juga satu orang aja, saya sendiri.

Penutup

Jadi, itu saja perjalanan saya berkecimpung di dunia AI Assistant ini.

Rubot akan selalu saya kembangkan kalau memang ada use case yang belum terjangkau. Saya juga akan meminta AI untuk mengaudit source code-nya secara rutin.

Terima kasih sudah membaca. Sampai jumpa di tulisan selanjutnya!

#Ruby #AI #Rubot