Giato
Asisten coding AI di VS Code — jalan lokal dengan Ollama, atau pakai model cloud pilihan Anda.
Local-first AI coding agent for VS Code. Bring your own model: Ollama, Qwen, Gemma, Kimi, DeepSeek, OpenAI, Claude, Gemini, and any OpenAI-compatible endpoint.

Kenapa Giato?
- Local-first. Default-nya Ollama: kode Anda tetap di mesin Anda. Cocok dengan model lokal seperti Qwen3 dan Gemma.
- Bebas pilih model. Ganti provider kapan saja tanpa mengubah cara kerja Anda.
- Agent, bukan sekadar chat. Giato bisa membaca kode, mencari, mengedit file, menjalankan build/test, lalu memperbaiki sendiri kalau gagal — dengan persetujuan Anda untuk aksi berisiko.
- Paham proyek Anda. Membaca
GIATO.md / AGENTS.md / CLAUDE.md dan mengingat konvensi proyek antar sesi.
- Nyaman dipakai. Tampilan mengikuti tema VS Code (gelap/terang) dan rapi di sidebar sempit maupun panel lebar.
Mulai dalam 2 menit
Opsi A — Lokal & gratis (disarankan)
Pasang Ollama, lalu unduh sebuah model:
ollama pull qwen3:8b
Pasang Giato dari Marketplace, lalu buka panel Giato (Ctrl+Shift+L / Cmd+Shift+L).
Pilih model di bagian atas panel. Selesai — mulai bertanya.
Tips: qwen3 mendukung tool calling, jadi mode agent bekerja penuh. Model tanpa dukungan tool (mis. gemma3) tetap bisa dipakai untuk chat, penjelasan, dan refactor; Giato otomatis memakai mode yang lebih sederhana.
Opsi B — Cloud
Buka Settings Giato (ikon roda gigi di panel), pilih provider, dan masukkan API key. Key disimpan di Secret Storage VS Code, bukan di file settings.
Opsi C — 9Router / endpoint OpenAI-compatible
Pilih provider Custom (OpenAI-compatible), isi Base URL (mis. http://127.0.0.1:28128/v1) dan nama model (mis. model Gemini yang Anda atur di 9Router). API key boleh dikosongkan kalau endpoint Anda tidak memintanya.
Provider yang didukung
| Jenis |
Provider |
Mode agent (tool calling) |
| Lokal |
Ollama (Qwen3, Llama, Gemma, DeepSeek, dll.) |
Ya, untuk model yang mendukung tools (mis. Qwen3) |
| Cloud |
OpenAI, DeepSeek, Groq, Qwen (Alibaba), Kimi (Moonshot), GLM (Zhipu), Mistral, Together AI |
Ya |
| Cloud |
Anthropic Claude, Google Gemini, Cohere, Hugging Face |
Mode sederhana |
| Kustom |
Endpoint OpenAI-compatible: 9Router, OpenRouter, LiteLLM, LM Studio, vLLM, dan sejenisnya |
Ya |
Qwen dan Kimi memakai endpoint resmi mereka. Untuk endpoint regional (mis. Qwen internasional), gunakan provider Custom dengan Base URL yang sesuai.
Mode Agent
Giato bekerja seperti engineer, bahkan dengan model kecil: analisis → rencana (todo) → kerjakan → verifikasi → laporan.
- Analisis dulu: membaca kode dan, untuk bug, mereproduksi error sebelum mengubah apa pun. Edit sebelum membaca ditolak otomatis.
- Rencana: untuk tugas banyak langkah, agent membuat checklist yang tampil dan diperbarui langsung di chat.
- Verifikasi: setelah mengubah kode agent wajib menjalankan tes/build. Perintahnya dideteksi dari proyek Anda (
npm test, php artisan test, pytest, cargo test, dan sejenisnya). Kalau gagal, ia memperbaiki akar masalahnya, bukan mengubah tesnya.
- Standar engineering: sebelum mulai, agent menerima playbook ringkas sesuai tugas dan stack proyek Anda: CRUD, arsitektur & clean code (layering, SOLID, design pattern secukupnya), keamanan (OWASP: validasi input, query terparameter, XSS/CSRF, hash password, secret di environment, otorisasi), debugging, testing, database, desain API, frontend, serta Laravel, Node.js, React/Next.js, dan Python. Playbook yang tidak terpilih bisa dimuat model lewat
get_playbook.
- Review otomatis: untuk fitur besar, agent menjalankan
review_code (pemindai rahasia hardcoded, SQL injection, XSS, konfigurasi tidak aman, mass assignment, sisa debug, file terlalu besar) dan wajib memperbaiki temuan HIGH.
- Melanjutkan proyek: untuk "lanjutkan project ini", agent mendapat briefing: struktur folder, README, commit terakhir, perubahan yang belum di-commit, TODO/FIXME, dan rencana yang belum selesai.
- Cek halaman web: setelah mengubah view/template/CSS/JS, agent memeriksa halaman asli lewat
http_get (hanya localhost), karena tes lolos belum membuktikan halaman tampil benar.
- Pengaman proses: agent yang berhenti terlalu cepat (belum verifikasi, todo belum selesai, jawaban kosong) didorong kembali bekerja, maksimal dua kali.
| Tool |
Fungsi |
read_file, list_directory, search_files, get_outline |
Menjelajahi dan membaca kode |
edit_file, create_file, overwrite_file |
Mengubah kode (meminta persetujuan sesuai mode) |
run_command, get_diagnostics |
Build, test, dan membaca error |
git_status, git_diff, git_log, git_commit |
Review perubahan dan ringkasan PR |
update_todos |
Checklist kerja yang tampil di chat |
review_code, get_playbook |
Review keamanan/kualitas dan playbook engineering |
http_get |
Cek halaman web di server lokal (status, judul, teks, aset rusak, halaman error) |
remember, recall |
Memori proyek lintas sesi |
Contoh yang bisa Anda minta:
Perbaiki bug timezone di src/utils/date.ts dan jalankan tesnya
Review perubahan saya sebelum commit
Buatkan ringkasan PR untuk branch ini
Kontrol keamanan: atur giato.agent.mode ke ask (tanya dulu, default), auto-safe, atau manual-only. Perintah shell berbahaya diblokir, dan aksi yang mengubah file, git, atau jaringan mengikuti kebijakan di giato.policy.*.
Memahami proyek Anda
- File instruksi proyek — buat
GIATO.md (atau AGENTS.md / CLAUDE.md) di root workspace berisi konvensi, perintah build/test, dan catatan arsitektur. Giato membacanya otomatis.
- Memori — fakta penting disimpan di
.giato/memory.md dan dipakai lagi di sesi berikutnya. Anda bisa mengelolanya lewat @memory.
- Percakapan panjang — riwayat lama diringkas otomatis, jadi sesi panjang tidak kehabisan konteks.
Posisi panel: kiri, kanan, atau di editor
- Dock di kanan, tetap terlihat sambil membuka kode: secara bawaan Giato menempel di kanan (setting
giato.location = secondarySidebar; ketik Giato: Move Chat to the Left Side Bar untuk memindahkannya ke kiri). Giato menempel di Secondary Side Bar seperti Copilot Chat, tidak bergantung pada file yang sedang dibuka. Butuh VS Code 1.106 atau lebih baru; di versi lama, seret ikon Giato ke kanan secara manual. Percakapan ikut pindah.
- Sidebar kiri atau kanan (manual): seret ikon Giato di Activity Bar ke sisi kanan. Tampilkan/sembunyikan Secondary Side Bar dengan
Ctrl+Alt+B / Cmd+Option+B.
- Tab di area editor: klik ikon di bar judul panel Giato, atau jalankan Giato: Open Chat in Editor. Chat terbuka sebagai tab yang bisa diletakkan di grup editor mana pun (kiri atau kanan kode) dan lebih lega untuk diff dan jawaban panjang.
- Tersinkron: sidebar dan tab editor bisa dibuka bersamaan; keduanya menampilkan percakapan dan proses yang sama.
Profil provider
Simpan beberapa endpoint dan API key sekaligus (mis. Ollama di PC, Ollama di server, 9Router, Gemini) di Settings → Profil Provider, lalu pindah dari header panel tanpa mengetik ulang. Setiap profil bisa diubah, dinonaktifkan, atau dihapus. API key disimpan terenkripsi di penyimpanan rahasia VS Code (bukan di settings.json) dan tidak pernah dikirim kembali ke panel. Tombol Deteksi model mengambil daftar model dari endpoint (Ollama, Custom, OpenAI). Di header, ketuk nama model untuk berganti profil atau model, dan muat ulang daftarnya dari menu itu; aksi lain (unduh model, ekspor chat, cek pembaruan) ada di menu …. Memilih Ollama langsung mengisi alamat lokal http://localhost:11434.
Meninjau perubahan agent
Setiap file yang diubah atau dibuat agent muncul di kartu Perubahan di chat, lengkap dengan jumlah baris (+12 −3 atau file baru). Saat agent bekerja, file dibuka di editor dan baris yang berubah disorot sebentar (matikan lewat giato.agent.showEdits). Per file tersedia Lihat perubahan (diff sebelum/sesudah), Urungkan, dan Terima, atau semuanya sekaligus. Di mode ask, kartu persetujuan tetap muncul sebelum perubahan ditulis. Urungkan hanya bisa selama sesi masih terbuka, dan Giato bertanya dulu kalau file sudah Anda ubah lagi setelah agent.
Riwayat chat
Riwayat dikelompokkan per proyek (proyek yang sedang dibuka paling atas) dan menampilkan jam terakhir dipakai; chat yang sedang dibuka diberi tanda. Setiap chat bisa diganti namanya, diarsipkan (pindah ke bagian Arsip, tetap bisa dicari dan tetap diingat Giato), atau dihapus (selalu ditanya dulu). Saat chat lama dibuka kembali, Giato ingat isinya, rencana kerja terakhir, dan file yang sudah dibaca, jadi "lanjut" meneruskan dari tempat berhenti.
Database & keamanan .env
Minta saja: "baca database, ada berapa user?", "tunjukkan struktur tabel orders". Giato membaca struktur dari Prisma, migrasi Laravel, dan file SQL (tanpa koneksi), dan isi dari PostgreSQL, MySQL/MariaDB, atau SQLite lewat klien psql / mysql / sqlite3 yang sudah ada di komputer Anda. Koneksi diambil dari .env / .env.local (DATABASE_URL, DB_* Laravel, POSTGRES_*, MYSQL_*), hasilnya berupa tabel rapi. Hanya membaca: query yang mengubah data ditolak, sesi database dibuka read-only, dan kolom sensitif (password, token, api key) disembunyikan.
.env tetap aman: file .env masih bisa dibaca, tetapi nilai rahasianya diganti [disembunyikan] sebelum sampai ke AI (nama variabel, host, port, nama database tetap terlihat). Kata sandi koneksi tidak pernah ditampilkan atau dikirim ke model, dan file kunci (id_rsa, *.pem) tidak dibaca. Pengaturan: giato.security.protectSecrets (aktif secara default).
Akses folder
Folder proyek yang terbuka selalu bisa dibaca dan diubah. Untuk folder lain (mis. Downloads atau proyek lain) buka Settings → Agent → Akses folder dan pilih: hanya proyek, tanya dulu (default), atau semua folder boleh dibaca. Saat Anda menempel path seperti /Users/me/Downloads/data.xlsx, Giato langsung membaca isinya (Excel, CSV, PDF, teks) dan bertanya sekali bila foldernya belum diizinkan; izin bisa disimpan dan dicabut di panel yang sama. Folder di luar proyek hanya dibaca, tidak pernah diubah, dan kunci/kredensial (.ssh, .aws, *.pem, ...) tidak pernah dibuka.
Skills & riset web
Giato membawa playbook bawaan yang dipilih otomatis sesuai tugas: keamanan, debugging, CRUD, arsitektur, testing, database, API, frontend, code review, refactor, performa, DevOps/Docker/CI, git, dokumentasi, perencanaan tugas besar, upgrade versi, skrip & otomasi, desain UI (ungu Giato), analisis log, dan riset web, plus playbook per stack (Laravel, React, Python, Node).
Anda bisa menambah skill sendiri per proyek, formatnya sama dengan yang dipakai agent lain: .giato/skills/<nama>/SKILL.md atau .giato/skills/<nama>.md (folder .claude/skills dan .agents/skills juga dibaca):
---
name: deploy-staging
description: Cara rilis ke staging; pakai saat diminta deploy atau rilis
---
1. npm run build
2. ...
Untuk skill sendiri (bukan per proyek), buka Settings → Agent → Skill kustom dan tambahkan file .md: Giato memeriksanya dulu (file dengan karakter tersembunyi, kunci/token, atau data biner ditolak; kata-kata berisiko seperti "abaikan aturan", "tanpa konfirmasi", curl | sh, atau membaca .env ditampilkan sebagai peringatan), menampilkan isinya, lalu Anda memutuskan. Skill hanya teks petunjuk: tidak menjalankan kode dan tidak bisa menimpa aturan keamanan. Bisa dimatikan, dibaca, atau dihapus kapan saja.
Hanya satu baris deskripsi yang selalu dikirim ke model; isinya dimuat saat tugas cocok atau saat model memintanya. Skill proyek hanya panduan: tidak bisa menimpa aturan keamanan atau konfirmasi.
Untuk error asing atau pertanyaan versi, agent bisa memakai web_search dan web_fetch (halaman publik saja; alamat lokal dan jaringan privat ditolak, ukuran dan waktu dibatasi, isi halaman diperlakukan sebagai data). Keduanya mengikuti kebijakan Network di pengaturan, jadi bisa diminta konfirmasi dulu.
Diagram (Mermaid)
Minta alur, sequence, ERD, atau diagram kelas, mis. "buatkan flowchart alur login". Giato menjawab dengan blok Mermaid yang langsung digambar sebagai diagram sungguhan dengan warna tema Anda. Tersedia tombol Kode (lihat/salin sumbernya), perbesar (zoom 25%–600%, geser dengan drag, Ctrl/Cmd + scroll), SVG / PNG untuk mengunduh diagram, dan Minta perbaiki bila sintaksnya salah. Kesalahan umum seperti label berkurung tanpa tanda kutip diperbaiki otomatis sebelum digambar.
Membuat gambar
Minta saja, mis. "buatkan logo kedai kopi". Giato mencari sendiri model pembuat gambar di profil Anda (model Gemini flash/pro image lebih dulu, lalu gpt-image, imagen, dall-e), termasuk di daftar model 9Router. Kalau tidak ada model yang namanya "image", Giato benar-benar mencoba model Gemini biasa di endpoint itu (banyak router membiarkannya menggambar langsung), dan mengingat model yang berhasil. Ini berjalan otomatis walau model chat Anda adalah combo. Tidak ada yang perlu diatur; Settings → Agent → Pembuatan gambar hanya untuk memaksa pilihan tertentu. Gambar disimpan di folder generated-images/ proyek dan tampil di chat. Anthropic Claude dan Ollama tidak punya model gambar, jadi mereka memakai model gambar dari profil lain. Kalau tidak ada model gambar di profil mana pun, Giato menjelaskan apa yang dicek. Membuat gambar biasanya berbayar di sisi provider, jadi Giato meminta persetujuan Anda dulu (mode ask).
Gambar & lampiran
Tempel (Ctrl/Cmd+V), seret, atau pilih gambar (screenshot UI, pesan error, desain) lalu minta Giato mencocokkannya dengan kode: ia mendeskripsikan yang terlihat, mencari kode terkait, membandingkan, lalu memperbaikinya.
- Batas: maksimal 4 gambar per pesan (PNG, JPEG, WEBP, GIF; SVG ditolak), 5 MB per gambar, 12 MB total; plus 1 file per pesan (lihat bagian dokumen di bawah). Pesan maksimal 100.000 karakter.
- Kompres otomatis: gambar besar diperkecil ke sisi terpanjang 1600 px sebelum dikirim.
- Validasi ganda: ekstensi memeriksa ulang tipe (dari byte file, bukan nama), ukuran, dan jumlah. Pesan ditolak dengan alasan yang jelas dan isi ketikan Anda dikembalikan.
- Model harus bisa melihat: untuk Ollama, Giato bertanya langsung ke server; gambar ke model tanpa vision diblok dengan saran model yang terpasang (mis.
qwen2.5vl, gemma3, llava). Claude, Gemini, GPT-4o dan sejenisnya mendukung gambar.
- Privasi: dengan Ollama gambar diproses lokal; dengan provider cloud, kotak lampiran memberi tahu bahwa gambar akan dikirim ke provider. Riwayat chat tidak menyimpan isi gambar.
- Endpoint tak dikenal (Custom / 9Router / combo): Giato mengirim gambar uji kecil dan memeriksa apakah model menjawab warnanya dengan benar, jadi Anda tahu sebelum mengirim jika gateway menjatuhkan gambar atau berpindah ke model tanpa vision. Jalankan manual lewat Giato: Test Image Reading (Vision).
- Konten lampiran dianggap data: instruksi yang tertulis di dalam gambar atau file tidak akan dituruti agent.
Excel, CSV, dan PDF
Lampirkan file .xlsx, .csv, .tsv, atau .pdf (maks. 10 MB), atau taruh di proyek lalu minta Giato membacanya. Giato mengubahnya jadi teks yang bisa dipahami model:
- Tabel (Excel/CSV): ringkasan kolom (tipe, rentang angka, sel kosong, nilai berbeda) ditambah contoh baris. Tanggal Excel dan hasil rumus yang tersimpan ikut terbaca.
- PDF: teks per halaman. PDF hasil scan (tanpa teks) tidak bisa dibaca karena belum ada OCR; Giato akan bilang terus terang.
- Yang tidak dibaca: format sel, grafik, gambar di dalam file, dan file
.docx/.pptx.
- Data mentah jadi sistem: minta, misalnya, "ini data mentah dari klien, buatkan kamus data, README, dan impor ke sistem". Giato membaca profil data, menandai masalah kualitas data, mendokumentasikan, lalu membuat migrasi dan impor yang aman dijalankan ulang.
- Membuat Excel/PDF/PowerPoint/Word: Giato menulis skrip pembuatnya (openpyxl, python-pptx, reportlab, dan sejenisnya, memakai yang sudah ada di proyek Anda), menjalankannya setelah Anda setuju, lalu membuka kembali hasilnya untuk dicek. Ia tidak bisa melihat tampilan akhirnya, jadi buka filenya sendiri untuk memastikan.
- Keamanan: jenis file ditentukan dari isinya (bukan nama), arsip dibatasi terhadap zip bomb, dan skrip di dalam PDF tidak pernah dijalankan.
Perintah di Chat
| Perintah |
Fungsi |
/plan <tujuan> |
Buat rencana kerja bertahap |
/fix, /lint, /compile |
Perbaiki error, lihat diagnostics, jalankan build |
/run <perintah> |
Jalankan perintah di workspace |
@outline, @grep <kata> |
Struktur kode dan pencarian di codebase |
@git status / @git commit |
Integrasi Git |
@search <query>, @browse <url> |
Pencarian web dan baca halaman |
@browser <tujuan> |
Kontrol browser otonom (opsional, lihat di bawah) |
/help |
Daftar semua perintah |
Pintasan Keyboard
| Windows / Linux |
macOS |
Aksi |
Ctrl+Shift+L |
Cmd+Shift+L |
Buka Chat |
Ctrl+Shift+E |
Cmd+Shift+E |
Jelaskan kode terpilih |
Ctrl+Shift+R |
Cmd+Shift+R |
Refactor kode terpilih |
Ctrl+Shift+D |
Cmd+Shift+D |
Buat dokumentasi |
Ctrl+Shift+T |
Cmd+Shift+T |
Pakai template prompt |
Ctrl+Shift+V |
Cmd+Shift+V |
Code review |
Ctrl+Shift+G |
Cmd+Shift+G |
Buat pesan commit |
Pengaturan penting
Buka Settings lalu cari Giato.
| Setting |
Default |
Keterangan |
giato.provider |
ollama |
Provider AI yang aktif |
giato.model |
gemma3:4b |
Model Ollama |
giato.apiUrl |
http://localhost:11434 |
Alamat server Ollama |
giato.ollama.numCtx |
0 (otomatis) |
Ukuran konteks model lokal. Turunkan jika VRAM terbatas, naikkan untuk proyek besar |
giato.agent.mode |
ask |
ask, auto-safe, atau manual-only |
giato.agent.nativeToolCalling |
true |
Pakai tool calling native bila didukung |
giato.agent.maxSteps |
15 |
Batas langkah agent per permintaan |
giato.custom.baseUrl |
— |
Base URL untuk provider Custom / 9Router |
giato.enableInlineCompletion |
false |
Saran kode inline (eksperimental) |
Privasi & Keamanan
- Lokal secara default. Dengan Ollama, kode tidak keluar dari komputer Anda.
- Langsung ke provider. Dengan provider cloud, data dikirim langsung ke provider yang Anda pilih — tidak lewat server kami.
- API key aman. Disimpan lewat Secret Storage VS Code.
- Penyamaran rahasia (upaya terbaik). Pada sebagian jalur ke provider cloud, pola rahasia umum (API key, bearer token, private key) disamarkan. Ini bukan jaminan: jangan memasukkan rahasia ke chat atau lampiran.
- Persetujuan Anda. Edit file dan perintah berisiko meminta konfirmasi sesuai
giato.agent.mode.
- Tanpa telemetri. Giato tidak punya server, tidak mengirim telemetri atau analitik, dan pengembang tidak menerima data Anda.
- Syarat & Ketentuan dan Kebijakan Privasi ada di Settings → Legal (dalam bahasa Indonesia). Giato meminta persetujuan Anda satu kali sebelum pesan pertama, dan meminta lagi bila isinya berubah.
Pemecahan Masalah
Daftar model kosong / "Ollama tidak terdeteksi"
Pastikan Ollama berjalan (ollama serve) dan giato.apiUrl benar. Cek dengan curl http://localhost:11434/api/tags.
Agent tidak mengedit file, hanya menjawab
Model Anda kemungkinan tidak mendukung tool calling (mis. gemma3). Coba qwen3:8b atau model lain yang mendukung tools, atau gunakan provider cloud.
Model lokal lambat atau kehabisan memori
Turunkan giato.ollama.numCtx (mis. 8192) atau pakai model yang lebih kecil. Mode agent memakai konteks lebih besar (16384) dari chat biasa.
Error 401 / 403 dari provider cloud
API key salah atau belum aktif. Buka Settings Giato, masukkan ulang key, lalu tekan Test API Key.
Memakai 9Router tetapi model tidak muncul
Pastikan Base URL berakhiran /v1, 9Router berjalan, dan nama model sama persis dengan yang ada di 9Router.
Browser Agent (opsional)
Untuk @browser, jalankan Giato Agent Server (komponen opsional berbasis Python + Playwright) di komputer Anda. Ekstensi akan terhubung otomatis ke http://127.0.0.1:7420. Fitur lain Giato tidak membutuhkannya.
Changelog & Lisensi
Riwayat perubahan ada di tab Changelog. Dirilis di bawah lisensi MIT.
| |