Di suatu titik antara prompt pertama dan email pertama dari App Review, agen coding AI berhenti menjadi mainan dan menjadi alat yang kamu ikut kirim. Panduan ini membahas cara memakai OpenCode untuk berpindah dari satu keadaan ke keadaan lain: memasangnya di Mac yang masih bersih, memilih apa yang perlu dibayar untuk model yang berpikir, menjalankan model di mesinmu sendiri dengan Ollama, memberi agen tangan sungguhan lewat server MCP, mengajarinya kebiasaanmu lewat skills, lalu mengantar aplikasi iPhone melewati TestFlight dan App Review tanpa kehilangan waktu sepekan untuk urusan dokumen.
Saya tidak punya latar belakang coding. Saya menjalankan perusahaan IT kecil di Jerman, dan saya membangun perangkat lunak dengan agen AI. Dua hasilnya sudah tayang di App Store musim gugur ini: Stash, yang mengingat tempat kamu menyimpan barang, dan PingAtlas, yang mengukur latensi jaringan dari perangkatmu sendiri. Keduanya muncul di panduan ini hanya saat benar-benar berguna sebagai contoh, dan tidak di tempat lain.
Semua yang ada di bawah dicek terhadap dokumentasi resmi, catatan rilis, halaman harga, dan App Store itu sendiri pada 7 November 2026. Coding AI bergerak cepat: OpenCode merilis setidaknya sepuluh rilis versi 2 hanya antara 20 dan 30 Oktober, Ollama dan MiniMax sama-sama merombak paket mereka sejak akhir Agustus, dan Apple menulis ulang sebagian pedoman peninjauannya setidaknya dua kali tahun ini. Angka yang mudah berubah ditandai di tempatnya muncul. Cek dulu sebelum kamu membeli apa pun.
Pengungkapan: Stash dan PingAtlas adalah aplikasi saya sendiri, diterbitkan oleh perusahaan saya, Graham Miranda UG (haftungsbeschränkt). Keduanya gratis dan tanpa iklan. Artikel ini berisi satu tautan afiliasi: tautan Z.ai GLM Coding Plan di Bagian 2 memberi kamu diskon 10% dan membayar komisi kepada saya jika kamu berlangganan. Tim OpenCode di Anomaly, Ollama, Apple, Expo, Z.ai, dan semua perusahaan lain yang disebut di sini tidak mensponsori, meninjau, atau menyetujui artikel ini.
TL;DR — Seluruh perjalanan dalam sepuluh poin
- OpenCode adalah agen coding sumber terbuka (MIT) yang gratis yang bekerja dengan hampir semua model: langganan cloud, API bayar per token, atau model yang berjalan di Mac-mu sendiri. Versi terkininya 2.2.6 (6 November 2026), dengan aplikasi terminal, aplikasi desktop, antarmuka web dan ponsel, serta mode ACP yang berjalan di dalam Xcode 27.
- Kamu membayar modelnya, bukan agennya. “Paket coding” adalah langganan bulanan tetap untuk waktu model. Bagi sebagian besar orang yang baru mulai, OpenCode Go ($10 per bulan) plus Ollama (gratis secara lokal, $20 per bulan untuk kredit cloud Pro) adalah susunan yang saya rekomendasikan: murah, tidak terikat satu model, retensi nol secara default untuk sebagian besar model, dan tidak ada wilayah abu-abu dalam syarat layanan siapa pun.
- Alternatifnya nyata. ChatGPT Plus dan Pro, GitHub Copilot, serta Z.ai GLM Coding Plan semuanya tersambung ke OpenCode lewat provider bawaan. Langganan Claude kini berfungsi lagi melalui provider Claude Agent baru di OpenCode 2.2.3, tetapi Anthropic belum mendukung jalur itu secara publik, jadi baca Bagian 2 sebelum kamu mengandalkannya.
- Ollama adalah satu mesin untuk model lokal dan cloud.
ollama launch opencodemenyambungkan keduanya, model lokal butuh jendela konteks minimal 64K, dan Mac 32 GB bisa menjalankan model coding yang mumpuni sepertiqwen3.8:27b(unduhan 18 GB). - Server MCP memberi agen tangan. Untuk pekerjaan aplikasi, daftar pendeknya adalah jembatan MCP milik Xcode sendiri (
xcrun mcpbridge), XcodeBuildMCP, server MCP Expo, Context7 untuk dokumentasi terkini, dan Sentry untuk crash. Tambahkan hanya yang kamu pakai: setiap server memakan konteks. - Skills memberi agen panduan kerjamu. Satu skill adalah folder yang berisi berkas
SKILL.md. OpenCode membacanya dari.opencode/skillsdan juga dari.claude/skillsdan.agents/skills, sehingga skill yang ditulis untuk agen lain juga berfungsi. Expo menerbitkan 23 skill resmi, dan App Store Connect CLI (asc) hadir dengan lebih dari dua puluh. - Biarkan agen mengurus dokumennya, bukan pengirimannya. The
ascCLI dan skill-nya bisa mengunggah build, mengelola TestFlight, menyinkronkan metadata dan tangkapan layar, serta memeriksa status peninjauan. Tolak perintah submit di izin OpenCode dan tekan tombolnya sendiri. - Aturan Apple 2026 penting untuk aplikasi buatan AI. Aplikasi tiruan di kategori yang sudah padat kini ditolak (pedoman 4.3(b), Juni), fitur tersembunyi atau tidak aktif dilarang (2.5.19 baru, Oktober), build memerlukan Xcode 26 atau lebih baru, dan mulai April 2027 aplikasi yang dibangun dengan SDK iOS 27.1 perlu tangkapan layar iPhone Duo.
- Biaya tahun pertama: $99 jika kamu menjalankan semuanya secara lokal dan hanya membayar Apple, sekitar $419 untuk susunan yang saya rekomendasikan (Apple + OpenCode Go + Ollama Pro dengan tagihan tahunan), dan sekitar $1,779 untuk susunan kelas berat. Semua harga belum termasuk PPN.
- Aturan yang paling penting: “selesai” adalah klaim, bukan fakta. Jalankan di iPhone sungguhan, dalam mode pesawat, dalam mode gelap, dengan ukuran teks terbesar, dan VoiceOver aktif. Baru percaya.
Sekilas perjalanannya
| Tahap | Yang kamu lakukan | Yang dilakukan OpenCode | Alat |
|---|---|---|---|
| 1. Siapkan | Pasang, pilih paket coding, hubungkan model | Belum ada | OpenCode, OpenCode Go, Ollama |
| 2. Ajari | Tulis AGENTS.md, tambahkan skill, hubungkan server MCP | Membacanya setiap sesi | AGENTS.md, skill, MCP |
| 3. Rencanakan | Tulis brief, debat rencananya | Mengubah brief menjadi rencana dan peta jalan | plan agen, /goal |
| 4. Bangun | Tinjau setiap diff, uji di perangkat | Menulis kode dalam potongan kecil, mem-build, menjalankan tes, mengambil tangkapan layar | build agen, Xcode MCP, XcodeBuildMCP atau Expo MCP |
| 5. Beta | Undang penguji, baca masukan | Mengarsipkan, mengunggah, mengelola grup TestFlight | Xcode, asc atau EAS |
| 6. Administrasi | Jawab pertanyaan hukum dan privasi dengan jujur | Menyusun draf metadata, mengaudit aliran data, mengubah ukuran tangkapan layar | asc skill |
| 7. Kirim | Kamu tekan “Kirim untuk Ditinjau” | Memeriksa status peninjauan, menyortir penolakan | App Store Connect |
| 8. Luncurkan | Tanggapi pengguna, rencanakan pembaruan | Melokalkan, menulis catatan rilis, menyortir crash | asc, Sentry, situs web kamu |

Daftar isi
- Bagian 1 — Apa Itu OpenCode pada November 2026, dan Mengapa Saya Merekomendasikannya
- Bagian 2 — Paket Coding, Dijelaskan (dan Dua yang Saya Rekomendasikan)
- Bagian 3 — Ollama: Satu Mesin untuk Model Lokal dan Cloud
- Bagian 4 — Cara Menggunakan OpenCode: Pasang dan Hubungkan Modelmu, Langkah demi Langkah
- Bagian 5 — Agen, Perintah, Izin, dan Mode Goal: Membuat OpenCode Jadi Milikmu
- Bagian 6 — Server MCP: Memberi Tangan kepada Agen
- Bagian 7 — Skill: Tulis Playbook-mu Sekali Saja
- Bagian 8 — Membangun Aplikasi: Dari Ide ke Build yang Kamu Percaya
- Bagian 9 — Menerbitkan ke App Store: Biarkan OpenCode Urus Administrasinya, Lalu Tekan Kirim Sendiri
- Bagian 10 — Peluncuran: Listing, Tangkapan Layar, ASO, dan Kehidupan Setelah Disetujui
- Bagian 11 — Berapa Biayanya: Empat Anggaran Tahun Pertama
- Bagian 12 — Lima Belas Kesalahan yang Harus Dihindari
- Bagian 13 — Setup Mana yang Harus Kamu Pilih? Enam Skenario
- Pertanyaan yang sering diajukan
- Kesimpulan
Bagian 1 — Apa Itu OpenCode pada November 2026, dan Mengapa Saya Merekomendasikannya
OpenCode adalah agen coding AI sumber terbuka. Kamu menjalankannya di folder proyek, jelaskan apa yang kamu inginkan, dan ia bekerja seperti seorang developer: membaca berkasmu, membuat rencana, mengedit kode, menjalankan perintah, membaca galat, dan terus berjalan sampai pekerjaan selesai atau ia membutuhkanmu. Proyek ini diterbitkan dengan lisensi MIT oleh Anomaly, tim di baliknya, dan ia tidak peduli model apa yang kamu berikan.
Halaman depan proyek ini mengklaim lebih dari 220.000 bintang GitHub, 1.089 kontributor, dan 22 juta pengembang per bulan. Itu angka dari proyek itu sendiri dan berubah setiap minggu, tetapi angka itu menjelaskan mengapa OpenCode menjadi alternatif agnostik model yang paling dikenal dibanding agen buatan para pembuat model sendiri, Claude Code dan Codex.
Di mana ia berjalan
OpenCode bukan lagi satu aplikasi. Sejak penulisan ulang 2.0, sebuah layanan latar belakang berjalan di mesinmu dan setiap antarmuka berbicara dengannya, jadi sesi yang kamu mulai di satu tempat muncul di tempat lain.
| Antarmuka | Apa itu | Cocok untuk |
|---|---|---|
| Terminal (TUI) | Aplikasi terminal layar penuh yang klasik | Kerja cepat dengan papan ketik, sesi SSH, server |
| Aplikasi desktop | Aplikasi Electron untuk macOS (Apple silicon dan Intel), Windows (x64 dan ARM64), serta Linux (.deb, .rpm, AppImage), dengan tab, diff, terminal, dan peramban bawaan | Orang yang tidak hidup di terminal |
| Web dan ponsel | opencode pair mencetak tautan sekali pakai (kedaluwarsa setelah lima menit) yang membuka sesi lokalmu di peramban; 2.2.6 menambahkan komposer yang ramah ponsel dan tablet |
Memeriksa tugas panjang dari sofa |
| Di dalam Xcode 27 | OpenCode berbicara dengan Agent Client Protocol, jadi opencode acp dapat ditambahkan sebagai agen di pengaturan Intelligence Xcode |
Pengembang Swift native yang ingin tetap di Xcode |
| SDK dan skrip | opencode run untuk tugas sekali jalan, plus SDK JavaScript |
Otomasi dan CI |
Apa yang berubah sejak 2.0
OpenCode 2.0 adalah pembangunan ulang dari nol: menurut pengumuman tim pada Juli, runtime berpindah dari Bun ke Node.js untuk memangkas penggunaan memori, aplikasi desktop berpindah dari Tauri ke Electron, API didesain ulang, dan OpenCode mulai berjalan sebagai layanan secara bawaan. Versi 2.0.0 dirilis pada 11 September 2026. Rilis-rilis sejak itu sebagian besar menambahkan fitur yang penting untuk proyek nyata yang panjang:
| Versi | Tanggal | Apa yang ditambahkan |
|---|---|---|
| 2.2.0 | 27 Okt | Plugin desktop eksperimental, aplikasi desktop yang diperbarui, API gambar dan keputusan untuk plugin |
| 2.2.1 | 29 Okt | Mode tujuan (/goal <objective>, dengan jeda, lanjutkan, dan hapus), opt-in prompt terjadwal, pembuatan gambar |
| 2.2.2 | 29 Okt | Pembuatan gambar aktif secara bawaan bila penyedia yang terhubung mendukungnya; pemilih worktree dari cabang Git |
| 2.2.3 | 30 Okt | The Claude Agent penyedia (lebih lanjut di Bagian 2) |
| 2.2.4 | 30 Okt | Penyiapan Claude Agent terpandu, jadwal yang berjalan di bawah opencode serve, terminal desktop persisten |
| 2.2.5 | 30 Okt | Pintasan worktree dan mode shell, buffer pemadatan berbasis persentase |
| 2.2.6 | 6 Nov | opencode run --worktree untuk eksekusi berskrip, dock komposer seluler, koneksi MCP bersama |
Sumber: changelog OpenCode, diperiksa 7 November 2026. Kemungkinan sudah ada versi yang lebih baru saat kamu membaca ini.
Mengapa inilah agen yang saya rekomendasikan
- Ia tidak setia pada model mana pun. OpenCode terhubung ke langganan, API bayar-per-token, dan model lokal melalui satu
/connectperintah. Saat model yang lebih baik dirilis bulan depan, kamu mengubah satu baris di berkas konfigurasi, bukan seluruh alur kerjamu. - Izinnya bekerja seperti firewall. Setiap tindakan (membaca, menyunting, menjalankan perintah shell, memuat skill, memanggil alat MCP) melewati daftar berurutan
allow,tanyadandenyaturan di mana kecocokan terakhir yang menang. “Jangan pernah menjalankangit push” dan “jangan pernah mengirim ke App Store” masing-masing satu baris. - Ia mendukung format semua orang. Ia membaca
AGENTS.md(dan beralih keCLAUDE.md), memuat skill dari.claude/skillsdan.agents/skillsserta folder miliknya sendiri, dan terhubung ke server MCP mana pun. Ekosistem buatan agen lain juga berfungsi di sini. - Ia ada di mana pun kamu berada. Terminal di server, aplikasi desktop di Mac, browser di ponsel, atau di dalam Xcode.
- Gratis. OpenCode gratis, dan bahkan menyertakan kumpulan model gratis bergilir yang bisa kamu pakai tanpa akun.
Kapan bukan pilihan terbaik
Jujur dulu: OpenCode bukan skor tertinggi di papan peringkat coding, karena ia bukan satu model. Harness yang memuncaki daftar itu adalah pasangan vendor: Claude Code dengan model terbaik Anthropic, Codex dengan model OpenAI. Keduanya disetel bersama dan sangat bagus. Saya membandingkan dua puluh delapan di antaranya dalam perbandingan harness coding AI, dan jika kamu sudah membayar salah satu langganan itu dan menyukainya, tidak ada apa pun di panduan ini yang mengharuskanmu pindah.
Ada juga sisi kasarnya. OpenCode merilis versi hampir setiap hari, jadi banyak hal bergerak di bawah kakimu. Dokumentasi versi 1 yang lama masih ada di docs.opencode.ai (dengan spanduk yang mengarah ke v2), dan banyak panduan pihak ketiga, termasuk halaman OpenCode milik Ollama sendiri, masih menampilkan alamat pemasang v1. Beberapa fitur terbaru ditandai eksperimental. Dan pengelola paket Windows tidak didukung untuk alat baris perintah v2; pengguna Windows mendapat aplikasi desktop atau zip mandiri.
Bagian 2 — Paket Coding, Dijelaskan (dan Dua yang Saya Rekomendasikan)
OpenCode gratis. Model yang berpikir tidak. Ada tiga cara membayarnya, dan sebagian besar kebingungan soal “paket coding AI” berasal dari mencampuradukkannya.
- Jalankan sendiri. Model bobot terbuka di Mac-mu sendiri lewat Ollama. Kamu membayar dengan perangkat keras dan kesabaran, bukan uang. Kodemu tidak pernah meninggalkan mesin.
- Berlangganan paket coding. Biaya bulanan tetap membeli jatah pemakaian, biasanya diukur dalam jendela lima jam dan mingguan. Di sinilah OpenCode Go, Ollama Pro, GLM Coding Plan, serta langganan ChatGPT dan Claude berada.
- Bayar per token. Bawa kunci API dari penyedia mana pun dan bayar tepat sesuai pemakaian. Ideal untuk masalah sulit sesekali; berbahaya untuk sesi debugging panjang tanpa peringatan anggaran.
Paket coding yang berfungsi di OpenCode (November 2026)
| Paket | Harga bulanan (USD) | Yang kamu dapat | Cara terhubung ke OpenCode |
|---|---|---|---|
| Model gratis OpenCode | $0 | Kumpulan model gratis waktu terbatas yang bergilir | Bawaan, tanpa akun |
| Ollama, lokal | $0 | Model bobot terbuka apa pun yang muat di Mac-mu | Terdeteksi otomatis, atau ollama launch opencode |
| OpenCode Go ⭐ | $10 · Go Plus $40 · Go Teams $20 per anggota | 32 model terbuka, termasuk GLM-5.3, GLM-5.3-Flash, Kimi K3 dan K3.1 Pro, MiniMax M3.1 Flash, DeepSeek V4.1 Flash, dan Qwen3.8 Max | /connect → OpenCode Go → tempel kuncimu |
| Ollama Pro / Max ⭐ | $20 ($200 setahun) · Max $100 | Kredit $60 (Pro) atau $300 (Max) untuk model cloud per bulan, plus pemakaian lokal tanpa batas | Sama seperti Ollama lokal; model cloud muncul bersama model lokal |
| GLM Coding Plan (Z.ai) | Lite $18 · Pro $80 · Max $168 (diskon 20% triwulanan, 30% tahunan) | GLM-5.3 dan GLM-5.3-Flash, keduanya dengan konteks 1 juta token | /connect → penyedia Z.AI Coding Plan |
| MiniMax M Plan | Go $22 · Explore $55 · Build $132 (dua bulan gratis dengan tagihan tahunan) | MiniMax M3.1 Flash, plus model gambar, audio, dan (mulai Explore) video | Penyedia paket coding MiniMax, dengan kunci M Plan |
| ChatGPT | Plus $20 · Pro mulai $100 | Keluarga GPT-6 OpenAI melalui paket ChatGPT-mu | /connect → OpenAI → “Masuk dengan ChatGPT” |
| GitHub Copilot | Pro $10 · Pro+ $39 · Max $100 | Kumpulan model Copilot, diukur dalam GitHub AI Credits | /connect → GitHub Copilot → login perangkat |
| Claude | Pro $20 · Max mulai $100 | Model Anthropic lewat Claude Code | /connect → Claude Agent (OpenCode 2.2.3+, Claude Code terpasang); lihat catatan di bawah |
| Bayar per token | Yang kamu pakai | API penyedia mana pun, termasuk gateway bayar-sesuai-pakai milik OpenCode sendiri | /connect → penyedia → kunci API |
Harga daftar per 7 November 2026, tanpa PPN. ⭐ = yang direkomendasikan panduan ini. Harga, kuota dan daftar model berubah terus, jadi periksa halaman tiap vendor sebelum kamu berlangganan. Harga GLM berasal dari cuplikan 24 September dan judul Z.ai “paket mulai $18”; keanggotaan Kimi (mulai $19) tidak disertakan karena saya tidak bisa memastikan jalur resmi OpenCode untuknya.

Cara batasannya sebenarnya bekerja
Harga di judul tidak bercerita banyak. Jatahnya yang kamu jalani sehari-hari.
- OpenCode Go memberi setiap model jatah dolar bulanannya sendiri, dan kamu bisa menghabiskan 20% darinya dalam jendela lima jam mana pun dan 50% dalam seminggu. Pada paket $10, misalnya, GLM-5.3-Flash mendapat $60 sebulan, DeepSeek V4.1 Flash $100 dan Kimi K3 $15, jadi model murah dan efisien bertahan jauh lebih lama daripada model kelas berat. Saat kamu mencapai batas, permintaan diblokir kecuali kamu menyalakan Extra Usage, yang beralih ke kredit bayar-sesuai-pakai. Model gratis tetap berjalan dalam kedua kondisi.
- Ollama beralih ke kredit: Pro mencakup pemakaian cloud $60 sebulan dan Max $300, keduanya ditagih dengan tarif per token, dan kredit yang tidak terpakai tidak terbawa ke bulan berikutnya. Pro mengizinkan tiga permintaan sekaligus, Max sepuluh. Harga turun di luar pukul 12:00–18:00 UTC pada hari kerja dan sepanjang akhir pekan, yang cocok untuk malam hari Eropa. Model lokal tidak terbatas di semua paket, termasuk yang gratis.
- Paket GLM Coding memakai kredit per jendela lima jam dan mingguan, dan pemakaian di luar jam sibuk (di luar pukul 14:00–18:00 waktu Tiongkok pada hari kerja) memakan setengah kredit.
- ChatGPT dan Copilot mengukur lewat sistem mereka sendiri: ChatGPT dalam perkiraan pesan lima jam per model, Copilot dalam AI Credits. Di dalam OpenCode, login ChatGPT tidak menampilkan biaya per permintaan karena pemakaian dihitung terhadap paketmu, dan OpenCode membatasi konteks masukan untuk mereka secara default (500.000 token pada model GPT terbaru).
Privasi dan penyimpanan data
Prompt-mu berisi kodemu. Ke mana perginya itu penting, terutama untuk pekerjaan klien di bawah ketentuan perlindungan data UE.
- OpenCode Go memblokir endpoint berbayar yang melatih data kamu secara default. Sebagian besar model (GLM, Kimi, MiniMax, Qwen, MiMo dan lainnya) disajikan tanpa penyimpanan; beberapa (Grok, model GPT Luna, Claude Haiku dan dua model promosi gratis) menyimpan log selama 30 hari. Model “Contributor” yang didiskon memang melatih prompt-mu dan harus dinyalakan dengan sengaja. Wilayah default adalah Eropa dan Amerika Serikat, dan model DeepSeek mengharuskan kamu memilih ikut routing global, dengan perjanjian tanpa penyimpanan yang berlaku hingga 30 November 2026.
- Ollama Cloud mengatakan terus terang: “Data prompt atau respons tidak pernah dicatat atau dijadikan bahan pelatihan.” Model berjalan terutama di Amerika Serikat, dengan kapasitas limpahan yang mungkin dirutekan ke Eropa.
- Model gratis OpenCode adalah kesepakatan yang berbeda: dokumentasi mencatat bahwa sebagian model gratis mungkin memakai datamu untuk meningkatkan model. Tidak masalah untuk eksperimen, bukan untuk kode klien. Setel
OPENCODE_DISABLE_FREE_MODELS=1untuk menyembunyikannya. - Model lokal tidak pernah meninggalkan mesinmu. Untuk apa pun di bawah perjanjian pemrosesan data yang ketat, itu tetap jawaban paling bersih.
Persoalan Claude
Langganan Claude mengalami tahun yang bergejolak di alat pihak ketiga. Pada Januari, Anthropic memperketat pemeriksaannya sehingga login Claude Pro dan Max berhenti berfungsi di harness seperti OpenCode, dan pada Maret OpenCode menghapus opsi loginnya atas permintaan Anthropic. Pada 30 Oktober, OpenCode 2.2.3 menghadirkan kembali langganan lewat jalur berbeda: penyedia bawaan Claude Agent yang menjalankan Claude Code yang terpasang di mesinmu (versi 2.1.248 atau lebih baru) melalui Agent SDK resmi Anthropic, setelah kamu login dengan claude auth login.
Fakta yang perlu kamu tahu sebelum memakainya:
- OpenCode tidak membaca login tersimpan Claude Code;
claudeprogram yang mengirim permintaannya. - Alat, pengaturan, dan lainnya milik Claude Code,
CLAUDE.mdberkas, hook, server MCP dan skill milik Claude Code dimatikan. Claude bekerja melalui alat dan prompt izin OpenCode sebagai gantinya. - Dokumentasi Agent SDK Anthropic menyatakan pengembang pihak ketiga tidak boleh menawarkan login claude.ai atau batas langganan di produk mereka kecuali Anthropic telah menyetujuinya. Saat artikel ini ditulis, Anthropic belum berkomentar secara publik tentang penyedia OpenCode, dan tidak ada yang bisa memastikan apakah itu membahayakan akunmu.
Saran saya: jika kamu sudah membayar Claude dan ingin mencobanya, pakai untuk proyek pribadi dan pantau pernyataan resmi. Untuk pekerjaan bisnis, gunakan kunci API Anthropic, satu-satunya jalur yang disebut dokumentasi Anthropic.
Yang saya rekomendasikan, dan alasannya
Mulai dengan OpenCode Go dan Ollama. Ini alasannya:
- Harga. $10 sebulan membeli akses ke 32 model terbuka yang kuat. Tambahkan Ollama Pro seharga $20 jika kamu ingin ruang cloud lebih; lewati jika Mac-mu menjalankan model lokal dengan baik.
- Pilihan tanpa keterikatan. Go dan Ollama Cloud membawa keluarga bobot terbuka yang sama (GLM, Kimi, MiniMax, DeepSeek dan lainnya), jadi kamu bisa membandingkan model pada proyekmu sendiri alih-alih memercayai papan peringkat.
- Privasi secara default. Tanpa penyimpanan untuk sebagian besar model Go, kebijakan tanpa pencatatan di Ollama, dan opsi untuk sepenuhnya lokal untuk pekerjaan sensitif.
- Tanpa zona abu-abu. Keduanya dirancang tepat untuk penggunaan ini, di dalam OpenCode.
- Cadangan lokal itu gratis. Saat jendela lima jam habis pada pukul 23.00, model lokal di Ollama membuatmu tetap jalan mengerjakan tugas-tugas kecil.
Kapan memilih yang lain. Kalau kamu sudah membayar ChatGPT Plus atau Copilot, hubungkan itu dulu; tidak ada biaya tambahan. Kalau GLM akan jadi andalan harianmu, jatah GLM Coding Plan bisa lebih masuk akal daripada batas per model milik Go, dan kamu bisa dapatkan diskon 10% untuk GLM Coding Plan lewat tautan afiliasiku (tautan afiliasi, lihat pengungkapan di bagian atas). Kunci Coding Plan dan kunci API Z.ai standar tidak bisa saling tukar, jadi pilih penyedia Coding Plan di /connect. Dan kalau pekerjaanmu menuntut puncak tertinggi papan peringkat, model frontier lewat kunci API untuk tugas tersulit adalah uang yang layak dibelanjakan.
Bagian 3 — Ollama: Satu Mesin untuk Model Lokal dan Cloud
Ollama menjalankan model bobot terbuka di komputermu sendiri dan menyajikannya lewat API lokal yang sederhana. Sejak tahun lalu ia juga menjalankan model yang lebih besar di cloud miliknya sendiri, lewat aplikasi yang sama dan API yang sama, jadi bagi OpenCode model cloud tampak persis seperti model lokal. Itulah seluruh daya tariknya: satu mesin, satu penyiapan, dan pergantian antara “pribadi dan gratis” serta “besar dan cepat” yang cukup lewat nama model.
Pasang Ollama (langkah demi langkah)
- Unduh dari ollama.com/download. Di Mac, buka berkas unduhannya dan seret Ollama ke Applications. Di Windows, jalankan penginstalnya. Di Linux, perintah satu baris resminya adalah:
curl -fsSL https://ollama.com/install.sh | sh - Jalankan. Buka aplikasinya, atau ketik
ollamadi terminal. Sejak versi 0.40.15 (awal November), menjalankanollamatanpa argumen akan membuka peluncur sambutan. - Masuk kalau kamu ingin memakai model cloud. Aplikasi akan memandumu saat penyiapan. Model lokal berfungsi tanpa akun; pemakaian cloud-mu ada di ollama.com/settings/usage.
- Tarik model untuk memastikan semuanya berfungsi:
ollama pull qwen3.8:27b ollama run qwen3.8:27b "Say hello in Swift"
Hubungkan Ollama ke OpenCode
Ada tiga opsi, dari yang paling mudah sampai yang paling fleksibel.
Opsi 1: biarkan OpenCode menemukannya. OpenCode v2 memeriksa alamat Ollama lokal bawaan saat mulai dan menambahkan setiap model yang bisa menulis teks ke /models. Tanpa akun, tanpa konfigurasi. Model yang hanya untuk embedding dilewati.
Opsi 2: biarkan Ollama yang menyiapkannya.
ollama launch opencode # siapkan OpenCode untuk Ollama lalu jalankan
ollama launch opencode --config # siapkan saja, jangan mulai sesi
ollama launch sudah berfungsi dengan OpenCode v2 sejak Ollama 0.40.12 (27 Oktober). Perintah ini tidak menimpa ~/.config/opencode/opencode.json, jadi pengaturanmu sendiri tetap berlaku. Satu keanehan: model yang kamu tentukan hanya di konfigurasi OpenCode tidak muncul di pemilih peluncur Ollama.
Opsi 3: arahkan OpenCode ke server Ollama di tempat lain. Kalau Ollama berjalan di Mac mini di dalam lemari atau di sebuah server, tambahkan sebagai penyedia beserta alamatnya. Bagian /v1 di akhir itu penting:
{
"$schema": "https://opencode.ai/config.json",
"providers": {
"ollama": {
"settings": {
"baseURL": "https://ollama.example.com/v1",
"apiKey": "{env:OLLAMA_API_KEY}" // optional, sent as a bearer token
}
}
}
}
Pengaturan yang merusak sebagian besar penyiapan lokal: panjang konteks
FAQ Ollama menyebut jendela konteks bawaannya 4.096 token. Panduan OpenCode milik Ollama sendiri meminta setidaknya 64K, karena system prompt agen, definisi alat, dan isi berkas sudah memenuhi jendela kecil sebelum pekerjaan apa pun dimulai. Atur di server Ollama, bukan di OpenCode:
# Kalau kamu menjalankan servernya sendiri:
OLLAMA_CONTEXT_LENGTH=65536 ollama serve
# Kalau kamu memakai aplikasi Mac: setel variabel untuk launchd, lalu keluar dan buka lagi Ollama
launchctl setenv OLLAMA_CONTEXT_LENGTH 65536
Lalu periksa apakah pengaturannya sudah berlaku: ollama ps menampilkan ukuran konteks setiap model yang dimuat dan apakah model itu berjalan di GPU. Jendela yang lebih besar memakai memori lebih banyak, jadi di Mac 32 GB, 64K adalah batas atas yang masuk akal untuk model 27 miliar parameter.
Model lokal mana yang cocok untuk Mac-mu
Aturan praktis yang berguna dari peringkat BenchLM November: sebuah model butuh kira-kira ukuran unduhannya ditambah 20% untuk konteks, dan Mac bisa memberikan sekitar tiga perempat memori terpadunya ke GPU. Dalam praktiknya, jaga ukuran unduhan di bawah sekitar 60% memori Mac-mu.
| Memori Mac-mu | Model yang dicoba lebih dulu | Unduhan | Konteks | Cocok untuk |
|---|---|---|---|---|
| 16 GB | gemma4:12b atau gemma4:e4b |
7.7 GB / 6.6 GB | 256K / 128K | Penjelasan, pengeditan kecil, pesan commit. Terlalu kecil untuk sesi agen yang panjang; gunakan model cloud untuk membangun |
| 24–32 GB | qwen3.8:27b (juga sebagai 27b-mlx untuk Apple silicon) |
18 GB | 256 ribu | Titik optimal lokal untuk coding dengan agen |
| 24–32 GB | qwen3-coder:30b |
19 GB | 256 ribu | Coder mixture-of-experts dengan hanya sekitar 3 miliar parameter aktif, jadi cepat |
| 24–32 GB | gpt-oss:20b |
14 GB | 128K | Model bobot terbuka OpenAI yang lebih kecil; menyisakan ruang paling banyak |
| 64 GB | Model yang sama pada presisi lebih tinggi, seperti qwen3.8:27b-q8_0 |
30 GB | 256 ribu | Jawaban lebih baik, ruang untuk konteks besar |
| 96–128 GB | gpt-oss:120b atau devstral-2:123b |
65 GB / 75 GB | 128K / 256K | Kualitas model besar tanpa cloud |
Ukuran dan jendela konteks dari pustaka Ollama pada 7 November 2026. Kecepatan bergantung pada bandwidth memori chip kamu sama seperti pada ukuran memorinya. Untuk sisi perangkat keras, lihat panduan MacBook untuk LLM lokal.
Ollama Cloud: model yang tidak bisa ditampung Mac kamu
Model coding bobot terbuka terkuat saat ini jauh terlalu besar untuk laptop. Ollama Cloud menjalankannya untukmu. Di aplikasi atau CLI, model-model itu membawa tag :cloud dan tidak mengunduh apa pun:
ollama run glm-5.3:cloud
ollama run minimax-m3.1-flash:cloud
Bagian katalog cloud yang relevan untuk coding pada 7 November:
| Model | Pembuat | Konteks | Rating penggunaan Ollama | Catatan |
|---|---|---|---|---|
glm-5.3 |
Z.ai | 1 juta | Tinggi | Unggulan Z.ai; kuat pada tugas agentic panjang |
glm-5.3-flash |
Z.ai | 1 juta | Sedang | Multimodal secara native, 18B parameter aktif; model build default yang bagus |
kimi-k3.1-pro |
Moonshot AI | 1 juta | Sangat tinggi | Entri terbaru (diperbarui 4 November), multimodal, model paling mumpuni dari Moonshot |
kimi-k2.7-code |
Moonshot AI | 256 ribu | Tinggi | Disesuaikan untuk coding dan lebih ringan dalam token berpikir |
minimax-m3.1-flash |
MiniMax | 976K | Sedang | Membaca gambar; $0.15 input dan $0.60 output per juta token |
deepseek-v4.1-flash |
DeepSeek | 1 juta | Sedang | Dibuat untuk kecepatan dan throughput; membaca gambar |
mistral-large-4 |
Mistral | 1 juta | Tinggi | Lab Eropa, bobot terbuka |
gemma4 |
256 ribu | Rendah | Cukup murah untuk helper dan subagen |
Rating itu adalah singkatan Ollama’ untuk seberapa cepat sebuah model menghabiskan kreditmu. Jika kamu ingin membandingkan model-model besarnya dengan benar, perbandingan saya Kimi K3 versus Fable 5.1 versus GLM-5.3 dan GLM-5.3-Flash versus MiniMax M3 lebih mendalam.

Pola routing yang akan saya’ tiru
Kamu tidak’ harus memilih satu model. Beri setiap jenis pekerjaan model termurah yang bisa melakukannya dengan baik:
- Perencanaan (kesalahan termahal terjadi di sini): model terkuatmu.
- Membangun: model cepat dan mumpuni seperti GLM-5.3-Flash atau MiniMax M3.1 Flash.
- Menelusuri basis kode, membaca dokumentasi, menulis tes dan pesan commit: model lokal. Tidak ada biaya dan kodemu tidak ke mana-mana.
Bagian 4 menunjukkan persis cara menyiapkannya di konfigurasi OpenCode’.
Mode hanya-lokal untuk proyek sensitif
Jika sebuah proyek tidak boleh sama sekali menyentuh model cloud, jadikan itu pengaturan, bukan janji. Ollama bisa mematikan fitur cloud-nya sepenuhnya (tambahkan "disable_ollama_cloud": true untuk ~/.ollama/server.json, atau setel OLLAMA_NO_CLOUD=1, lalu mulai ulang), dan model cloud gratis OpenCode’ bisa disembunyikan dengan OPENCODE_DISABLE_FREE_MODELS=1. Lalu hubungkan hanya penyedia lokal di proyek itu.
Catatan jujur tentang Ollama
- Model lokal lebih lambat dan lebih lemah dalam pemakaian alat multi-langkah yang panjang dibandingkan model cloud besar. Mereka unggul pada tugas yang terbatas.
- Cloud tetap komputer orang lain’. Kebijakan tanpa-log Ollama’ memang bagus, tetapi kodemu tetap meninggalkan mesinmu, sebagian besar ke Amerika Serikat.
- Kredit bisa habis. Kredit Pro senilai $60 bisa bertahan lama di GLM-5.3-Flash dan jauh lebih singkat pada model dengan rating “extra high”.
- Jawaban lambat tidak’ selalu karena modelnya. Setiap permintaan cloud lebih dulu menempuh perjalanan pulang-pergi lewat Wi-Fi, router, dan internet yang lebih luas. Jika respons terasa lambat, periksa koneksinya sebelum menyalahkan model: aplikasi saya sendiri, PingAtlas, mengukur waktu pulang-pergi dari iPhone, iPad, atau Mac kamu ke kota-kota dan ke layanan seperti GitHub, dan saya menjelaskan sisa jalurnya di apa yang terjadi di dalam router kamu.
Bagian 4 — Cara Menggunakan OpenCode: Pasang dan Hubungkan Modelmu, Langkah demi Langkah
Ini susunan yang akan saya’ berikan ke teman. Butuh sekitar dua puluh menit, sebagian besar untuk unduhan.
Langkah 0 — Yang kamu butuhkan lebih dulu
- Mac dengan Apple silicon, jika kamu ingin membangun aplikasi iPhone secara native. Xcode 27.1 (dirilis 15 Oktober, dengan Swift 6.4 dan SDK iOS 27.1) membutuhkan macOS Tahoe 26.6 atau lebih baru. Jika kamu membangun dengan Expo, layanan cloud-nya bisa membangun aplikasi iOS dari Windows atau Linux, tetapi kamu’ tetap ingin iPhone untuk pengujian.
- Xcode dari Mac App Store, dibuka sekali agar bisa memasang komponennya.
- Git. Tombol undo-mu yang sebenarnya.
- Node.js, hanya jika kamu’ akan memakai Expo: SDK 58 membutuhkan Node 22.13 atau lebih baru, 24.3 atau lebih baru, atau 26 ke atas (rilis bernomor ganjil seperti 23 dan 25 tidak’ didukung).
- Paket coding dari Bagian 2, atau Ollama dari Bagian 3.
Langkah 1 — Pasang OpenCode
Di macOS atau Linux:
curl -fsSL https://opencode.ai/v2/install | bash
Lebih suka aplikasi? Unduh versi desktop untuk macOS, Windows, atau Linux dari opencode.ai/download. Aplikasi terminal dan desktop berbagi layanan latar belakang serta sesi yang sama. Di Windows, pakai aplikasi desktop atau zip mandiri; manajer paket Windows tidak’ didukung untuk v2.
Dua jebakan yang perlu diketahui:
- Panduan lama memakai penginstal lama.
opencode.ai/install(tanpa/v2/) masih muncul di banyak tutorial, termasuk beberapa dokumen resmi mitra. Pakai/v2/installalamat di atas. - pengguna mise perlu mise 2026.10.9 atau lebih baru, kalau tidak mereka’ akan mendapat OpenCode 1.
Langkah 2 — Hubungkan modelmu
Buka OpenCode di folder proyek dan jalankan /connect:
mkdir -p ~/code/my-first-app && cd ~/code/my-first-app
git init
opencode
Lalu, tergantung apa yang kamu bayar:
| Kamu punya | Di /connect, pilih |
Lalu |
|---|---|---|
| OpenCode Go | OpenCode Go | Tempel API key dari OpenCode Console |
| Ollama | Tidak ada; model lokal muncul sendiri | Atau jalankan ollama launch opencode |
| ChatGPT Plus atau Pro | OpenAI → Masuk dengan ChatGPT | Masuk di browser |
| GitHub Copilot | GitHub Copilot | Selesaikan login perangkat |
| Claude Pro atau Max | Claude Agent (bukan “Anthropic”, yang dipakai untuk API key) | Jalankan claude auth login di terminal dulu; baca catatan di Bagian 2 |
| GLM Coding Plan | Provider Z.AI Coding Plan | Tempel key Coding Plan kamu, bukan API key standar |
| API key | Nama provider | Tempel key-nya |
Langkah 3 — Pilih model kamu
Jalankan /models lalu pilih. Model OpenCode Go bernama opencode-go/<model-id>; model Ollama lokal muncul di bawah provider Ollama. Salin ID persisnya dari /models ke config kamu, karena nama dan tag bisa berubah.
Langkah 4 — Tambahkan konfigurasi proyek
Pengaturan bawaan sudah jalan, tapi proyek aplikasi pantas punya berkas config yang menjalankan tiga tugas: mengarahkan tiap agen ke model yang tepat, menjauhkan agen dari apa pun yang tidak bisa dibatalkan, dan menghubungkan server MCP kamu. Simpan ini sebagai opencode.jsonc di akar proyek, lalu ganti dengan ID model /models yang ditampilkan:
{
"$schema": "https://opencode.ai/config.json",
// The model new sessions start with
"model": "opencode-go/glm-5.3-flash",
"agents": {
// Planning: your strongest model, because a bad plan costs the most later
"plan": { "model": "opencode-go/glm-5.3" },
// Building: fast and capable
"build": { "model": "opencode-go/glm-5.3-flash" },
// Read-only exploring: local, free, private
"explore": { "model": "ollama/qwen3.8:27b" }
},
// Rules are checked in order and the LAST match wins
"permissions": [
{ "action": "shell", "resource": "*", "effect": "ask" },
{ "action": "shell", "resource": "git status *", "effect": "allow" },
{ "action": "shell", "resource": "git diff *", "effect": "allow" },
{ "action": "shell", "resource": "git log *", "effect": "allow" },
{ "action": "shell", "resource": "xcodebuild -list *", "effect": "allow" },
{ "action": "shell", "resource": "asc * list *", "effect": "allow" },
{ "action": "shell", "resource": "asc review status *", "effect": "allow" },
{ "action": "shell", "resource": "git push *", "effect": "deny" },
{ "action": "shell", "resource": "asc publish appstore *","effect": "deny" },
{ "action": "shell", "resource": "* --submit *", "effect": "deny" },
{ "action": "shell", "resource": "* --confirm *", "effect": "deny" }
],
"mcp": {
"servers": {
// Apple's bridge to the Xcode project you have open (Part 6)
"xcode": { "type": "local", "command": ["xcrun", "mcpbridge"] },
// Headless builds, simulator control and screenshots (Part 6)
"XcodeBuildMCP": { "type": "local", "command": ["npx", "-y", "xcodebuildmcp@latest", "mcp"] },
// Up-to-date library documentation
"context7": { "type": "remote", "url": "https://mcp.context7.com/mcp" }
}
}
}
Apa yang kamu tempel, dengan kata sederhana:
- Setiap perintah shell minta izin dulu, kecuali beberapa yang read-only. Read-only
ascquery (apa pun yang menampilkan daftar, plus status review) diizinkan, jadi agen bisa memeriksa build dan progres review tanpa mengganggu kamu. - Beberapa hal diblokir total: push kode, memublikasikan atau mengirim aplikasi untuk review, dan mengonfirmasi tindakan destruktif di App Store Connect. Itu kamu kerjakan sendiri, dengan sengaja. Mengunggah build ke TestFlight tetap diizinkan (setelah minta izin), karena itu tidak mengirim apa pun untuk review.
- Pengaturan bawaan OpenCode sudah minta izin sebelum membaca
.envberkas. Biarkan tetap aktif. - Izin hanyalah pagar pengaman, bukan sandbox. Model yang gigih bisa menemukan cara lain untuk melakukan sesuatu. Jauhkan kredensial produksi, kunci penandatanganan, dan kunci Admin App Store Connect kamu dari mesin tempat agen berjalan tanpa pengawasan.
Langkah 5 — Tulis AGENTS.md sebelum menulis kode
OpenCode membaca AGENTS.md di akar proyek kamu di awal setiap sesi, plus satu berkas pribadi di ~/.config/opencode/AGENTS.md kalau kamu membuatnya. Perintah /init bisa menyusun drafnya dengan memindai repositori kamu. Ini kebiasaan paling efektif dalam pengembangan berbantuan AI, dan aku menulis tentang seluruh sistemnya di panduan vibe coding. Untuk aplikasi iPhone, isinya harus memuat aturan produk sekaligus perintahnya:
# Catatan untuk agen coding
## Aplikasi ini apa
Satu kalimat. Kalau sebuah perubahan tidak melayaninya, perubahan itu tidak perlu ada.
## Yang tidak bisa ditawar
- Berjalan offline. Fitur jaringan menurun dengan mulus.
- Tanpa analitik, iklan, atau SDK pelacak. Tanya dulu sebelum menambah dependensi APA PUN.
- Tanpa rahasia di bundel aplikasi. Key yang berbayar disimpan di server.
- Tanpa fitur tersembunyi, dorman, atau khusus debug di build rilis
(pedoman App Review 2.5.19). Menu debug dikompilasi keluar dari Release.
- Jangan pernah mengirim data pribadi ke layanan AI pihak ketiga tanpa
layar persetujuan di dalam aplikasi (pedoman 5.1.2(i)).
- Aksesibilitas: Dynamic Type, label VoiceOver, target sentuh 44 x 44 pt,
mode terang dan gelap di setiap layar.
- Setiap string yang dilihat pengguna dilokalkan, termasuk widget,
notifikasi, dan prompt izin.
## Perintah
- Build dan jalankan: pakai alat XcodeBuildMCP (build_run_sim), scheme "MyApp"
- Tes: test_sim
- Jangan pernah menjalankan asc publish atau apa pun dengan --submit.
## Definisi selesai
- Build tanpa peringatan, tes lulus
- Diperiksa dengan screenshot + snapshot_ui di simulator
- Berjalan dalam mode pesawat, mode gelap, dan pada ukuran teks terbesar
Langkah 6 — Sesi nyata pertamamu
- Mulai dalam mode plan. Beralih ke
planagen (tidak bisa mengedit berkas proyek kamu) dan minta ia berdebat dengan brief kamu: “Baca AGENTS.md dan BRIEF.md. Daftar alur pengguna, kasus tepi yang belum aku pikirkan, dan layar yang aku lewatkan. Lalu beri tahu aku apa yang harus dipotong.” - Simpan rencana itu sebagai peta jalan. Minta ia menuliskannya
ROADMAP.mdsebagai daftar periksa potongan kecil yang utuh dari ujung ke ujung. - Bangun satu potongan setiap kali bersama
buildagen. Satu layar, satu fitur, bekerja dari ujung ke ujung. - Tinjau diff-nya, jalankan, lalu lakukan commit. Setiap potongan berakhir dengan commit. Kalau ada langkah yang salah,
/undomembatalkan langkah terakhir agen dari snapshot OpenCode; Git adalah jaring pengaman yang lebih besar. - Mulai sesi baru untuk potongan berikutnya. Sesi bersih yang membaca ulang AGENTS.md dan ROADMAP.md biasanya lebih pintar daripada sesi panjang yang penuh asumsi usang.
Bagian 5 — Agen, Perintah, Izin, dan Mode Goal: Membuat OpenCode Jadi Milikmu
Setelah dasar-dasarnya berjalan, empat fitur mengubah OpenCode dari obrolan dengan terminal menjadi bengkel yang pas untuk proyekmu.
Agen bawaan
| Agen | Jenis | Fungsinya |
|---|---|---|
build |
Utama | Bawaan. Mengedit berkas, menjalankan perintah, mengerjakan pekerjaannya |
plan |
Utama | Menjelajah dan merencanakan tanpa mengedit berkas proyekmu (ia boleh menulis berkas rencananya sendiri) |
general |
Subagen | Riset dan tugas bertahap; tidak bisa memulai subagen lain |
explore |
Subagen | Mencari dan membaca kode atau halaman web; tidak bisa mengedit apa pun |
Agen utama adalah yang kamu ajak bicara. Subagen diluncurkan oleh agen utama untuk tugas yang terfokus, supaya konteks sesi utama tetap bersih.
Tulis subagenmu sendiri: pengritik App Review
Agen kustom adalah berkas Markdown di .opencode/agents/ (atau ~/.config/opencode/agents/ untuk setiap proyek). Front matter mengonfigurasi agen dan bagian isinya menjadi instruksinya. Yang ini meninjau aplikasimu seperti App Review meninjaunya, dan tidak bisa mengubah apa pun saat melakukannya:
---
description: Meninjau aplikasi dan metadatanya terhadap Pedoman App Review Apple sebelum pengiriman
mode: subagent
model: opencode-go/glm-5.3
permissions:
- action: edit
resource: "*"
effect: deny
- action: shell
resource: "*"
effect: deny
---
Kamu adalah spesialis App Review yang skeptis. Tinjau kode saat ini dan
berkas di metadata/ lalu daftarkan masalahnya, yang paling serius lebih dulu, dengan berkas dan baris:
- Crash, teks placeholder, tautan mati, akun demo yang hilang (2.1)
- Apa pun yang terlihat seperti salinan kategori aplikasi yang sudah padat (4.3(b))
- Fitur tersembunyi, dorman, atau tak terdokumentasi, menu debug, feature flag (2.5.19)
- Data yang keluar dari perangkat dan tidak ada di kebijakan privasi atau label privasi
- Data pribadi yang dikirim ke layanan AI mana pun tanpa persetujuan eksplisit (5.1.2(i))
- Pembuatan akun tanpa penghapusan akun di dalam aplikasi (5.1.1(v))
- Tangkapan layar atau deskripsi yang menjanjikan fitur yang tidak ada di build
Jangan perbaiki apa pun. Laporkan saja.
Simpan sebagai .opencode/agents/appstore-reviewer.md, lalu tanyakan: “Gunakan subagen appstore-reviewer untuk meninjau semua perubahan sejak tag rilis terakhir.”
Perintah kustom untuk pekerjaan yang berulang
Perintah adalah templat prompt yang kamu jalankan dengan slash. Taruh di .opencode/commands/; $ARGUMENTS diganti dengan apa pun yang kamu ketik setelah perintah, dan ` !command ` menyisipkan keluaran perintah shell sebelum prompt dikirim. Yang ini menyusun catatan rilis App Store:
---
description: Menyusun catatan "What's New" App Store dari commit sejak tag terakhir
agent: build
---
Berikut commit sejak rilis terakhir:
!`git log $(git describe --tags --abbrev=0)..HEAD --oneline`
Tulis catatan "What's New" untuk versi $ARGUMENTS dalam bahasa Inggris yang polos dan ramah,
di bawah 400 karakter, hanya perubahan yang terlihat pengguna. Simpan ke
metadata/en-US/release_notes.txt dan tunjukkan teksnya kepadaku.
Simpan sebagai .opencode/commands/whats-new.md lalu jalankan dengan /whats-new 1.2.0. Satu peringatan dari dokumentasi OpenCode layak diulang: blok-blok ! itu berjalan di luar sistem izin agen, jadi hanya taruh perintah yang kamu percaya di dalamnya.
Buku resep izin untuk proyek aplikasi
Konfigurasi di Bagian 4 sudah jadi awal yang baik. Beberapa aturan lain yang perlu diketahui:
- Aturan per agen diletakkan di bawah
agents.<id>.permissionsdan ditambahkan setelah aturan global, jadi kamu bisa, misalnya, membiarkan hanyabuildagen tertentu menjalankanxcodebuild. - Alat MCP juga termasuk aksi, yang dinamai
<server>_<tool>. Aturan seperti{ "action": "XcodeBuildMCP_*", "resource": "*", "effect": "ask" }membuat setiap panggilan XcodeBuildMCP bertanya lebih dulu. - Skill bisa dibatasi bersama
skillaction:allowmenampilkan dan memuat skill dengan bebas,tanyamenampilkannya tetapi bertanya sebelum memuat,denymenyembunyikannya sepenuhnya. - Saat beberapa sumber daya diperiksa sekaligus, mana pun
denymenang, lalu mana puntanya.
Mode Goal, worktree, dan jadwal
Tiga fitur yang lebih baru mengubah cara tugas panjang terasa:
- Mode tujuan (2.2.1):
/goal Buat setiap layar lolos audit VoiceOver dan perbaiki yang gagalmenjaga sesi tetap bekerja menuju tujuan sampai ditinjau, denganpause,resumedanclear. Cocok untuk tugas besar dan membosankan: pemeriksaan aksesibilitas, lokalisasi, cakupan tes. - Worktree: mulai sesi di worktree Git terpisah dari layar sesi baru (atau
⌘⌥Odi aplikasi desktop), sehingga eksperimen tidak bisa menyentuh branch utama kamu. Jalankan skrip memakaiopencode run --worktree=<name>sejak 2.2.6. Buang worktree itu kalau eksperimennya gagal. - Prompt terjadwal (opt-in, eksperimental):
/schedulemenjalankan prompt sesuai jadwal saatopencode servesedang berjalan, misalnya “jalankan tes dan rangkum kegagalan” setiap malam.
Bagian 6 — Server MCP: Memberi Tangan kepada Agen
Sendirian, agen coding bisa membaca berkas dan menjalankan perintah shell. MCP, Model Context Protocol, adalah cara standar untuk memberinya lebih banyak hal: proyek Xcode yang sedang berjalan, simulator yang bisa ia ketuk dan tangkap layarnya, laporan crash kamu, dokumentasi terkini, layanan build kamu. Setiap server MCP menyediakan sekumpulan alat, dan agen memutuskan kapan memanggilnya.
Ada biayanya, dan dokumentasi OpenCode menyatakannya dengan gamblang: “Alat MCP memakan konteks model, jadi tambahkan hanya server yang kamu butuhkan.” Setiap server yang terhubung menambahkan deskripsi alat ke setiap permintaan. Sepuluh server yang jarang kamu pakai membuat setiap jawaban lebih lambat dan kurang fokus.
Pilihan utama pengembang aplikasi
| Server | Apa yang diberikannya kepada agen | Tambahkan ke OpenCode | Perlu diketahui |
|---|---|---|---|
| Xcode (Apple) | Proyek Xcode kamu yang terbuka: build, tes, dan lainnya, lewat Xcode itu sendiri | opencode mcp add xcode -- xcrun mcpbridge |
Di Xcode → Settings → Intelligence, atur Izinkan Agen Eksternal Menggunakan Alat Xcode untuk Selalu atau Saat Xcode terbuka. Buka proyeknya di Xcode sebelum kamu memberi prompt; Xcode menunjukkan saat agen terhubung |
| XcodeBuildMCP | Build headless, menjalankan simulator dan perangkat, tangkapan layar, ketuk dan geser, snapshot aksesibilitas, tes, debugging LLDB | opencode mcp add XcodeBuildMCP -- npx -y xcodebuildmcp@latest mcp |
Sumber terbuka (MIT), dikelola oleh Sentry sejak mengakuisisi proyek ini pada Februari. Butuh macOS 14.5+, Xcode 16+ dan Node 18+. Hanya alat simulator yang aktif secara bawaan |
| Expo | Build EAS, alur kerja dan pengiriman, dokumen Expo, simulator cloud, data crash dan umpan balik dari TestFlight dan toko aplikasi | opencode mcp add expo --url https://mcp.expo.dev/mcp, lalu opencode mcp auth expo |
Butuh akun Expo dan SDK terbaru. Sebagian alat butuh paket Expo berbayar. Alat simulator lokal butuh npx expo install expo-mcp --dev dan SDK 54+ |
| Context7 | Dokumentasi terkini yang spesifik versi untuk library dan framework | opencode mcp add context7 --url https://mcp.context7.com/mcp |
Mencegah model mengarang API yang berubah bulan lalu |
| Sentry | Crash dan error nyata milikmu | opencode mcp add sentry --url https://mcp.sentry.dev/mcp, lalu opencode mcp auth sentry |
Masuk lewat OAuth |
| Playwright | Peramban sungguhan yang bisa dikendalikan agen | opencode mcp add playwright -- npx @playwright/mcp@latest |
Untuk versi web aplikasimu dan landing page-mu |
| Firebase | Proyek Firebase, aturan keamanan dan konfigurasimu | opencode mcp add firebase -- npx -y firebase-tools@latest mcp |
Bertanya sebelum mengubah apa pun di proyekmu |
Periksa apa yang terhubung dengan opencode mcp list, dan nyalakan atau matikan server untuk satu sesi dengan /mcps.
Jika kamu mendesain di Figma, server MCP-nya juga bisa memberi frame dan variabel ke agen. Saya bahas jebakan khusus OpenCode (server remote versus server desktop) di panduan saya untuk membangun aplikasi dari nol dengan AI.
Jembatan MCP Xcode vs XcodeBuildMCP
Keduanya tumpang tindih, dan bekerja baik bersama:
- Server Xcode sendiri (
xcrun mcpbridge) bekerja lewat aplikasi Xcode yang sedang kamu buka. Itu punya Apple, ia memahami proyekmu seperti Xcode, dan butuh Xcode yang berjalan. - XcodeBuildMCP membungkus alat command-line Apple (
xcodebuild,simctl,devicectl), jadi ia berjalan headless. Kekuatan sesungguhnya ada di loop verifikasi:build_run_simuntuk build dan menjalankan,screenshotuntuk melihat,snapshot_uiuntuk membaca pohon aksesibilitas,tapdantype_textuntuk memakai aplikasi, dantest_simuntuk menjalankan tes. Jalankanxcodebuildmcp initsekali di proyekmu untuk memasang dua skill pendampingnya.
Di berkas konfigurasi
Server yang sama bisa berada di opencode.jsonc (Bagian 4 punya contoh lengkapnya), yang lebih baik untuk tim karena pengaturannya ikut berpindah bersama repositori:
"mcp": {
"servers": {
"expo": { "type": "remote", "url": "https://mcp.expo.dev/mcp" },
"sentry": { "type": "remote", "url": "https://mcp.sentry.dev/mcp" },
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": { "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}" }
},
"playwright": { "type": "local", "command": ["npx", "@playwright/mcp@latest"], "disabled": true }
}
}
Dua detail dari dokumen MCP OpenCode: rahasia dimasukkan sebagai {env:NAME} (bentuk $NAME biasa tidak diperluas), dan "disabled": true membuat server tetap terkonfigurasi tanpa menyambungkannya.

Kapan alat baris perintah lebih unggul daripada server MCP
Aturan saya: kalau ada alat baris perintah yang bagus, coba dulu lewat skill sebelum menambah server. Agen sudah tahu cara menjalankan perintah, CLI tidak memakan konteks sampai dipakai, dan output-nya bisa disaring sebelum sampai ke model. Untuk pekerjaan aplikasi, tiga CLI ini sudah mencakup banyak hal:
ghuntuk GitHub: issue, pull request, rilis.ascuntuk App Store Connect: build, TestFlight, metadata, tangkapan layar, status peninjauan (Bagian 9).easuntuk layanan build dan submit Expo.
Keamanan MCP dalam empat aturan
- Pasang server dari pembuatnya atau dari proyek yang bisa kamu baca. Server adalah kode yang berjalan di mesinmu dengan izinmu.
- Anggap output alat sebagai tidak tepercaya. Halaman web, komentar issue, atau laporan crash bisa berisi instruksi yang ditujukan ke agenmu. Biarkan tindakan berisiko pada
tanya. - Batasi alat berdasarkan namanya. Setiap alat MCP adalah aksi izin bernama
<server>_<tool>, jadi kamu bisa mengizinkan yang hanya-baca dan membuat sisanya bertanya. - Hapus yang tidak kamu pakai. Itu memakan konteks, dan satu hal lebih sedikit yang bisa salah.
Bagian 7 — Skill: Tulis Playbook-mu Sekali Saja
AGENTS.md memberi tahu agen proyekmu itu apa. Skill mengajarkannya cara kamu mengerjakan tugas tertentu: merilis build, menulis migrasi, menyiapkan tangkapan layar, mengaudit privasi. Skill adalah folder berisi SKILL.md berkas dengan deskripsi singkat di bagian atas dan instruksi di bawahnya, plus skrip atau berkas referensi yang dibutuhkannya. Formatnya adalah standar terbuka yang dipakai bersama oleh OpenCode, Claude Code, Codex, dan lainnya, karena itu skill yang ditulis untuk satu agen biasanya juga jalan di agen lain.
Cara OpenCode memakai skill
- Di setiap langkah, OpenCode menunjukkan ke model daftar skill yang boleh dipakai: hanya ID, nama, dan deskripsi tiap skill. Instruksinya sendiri tidak dimuat, jadi seratus skill hampir tidak memakan biaya.
- Saat sebuah tugas cocok, model memanggil
skillalat dengan ID skill itu, dan OpenCode memeriksa izinmu. - OpenCode menambahkan instruksinya ke percakapan, bersama path folder skill dan daftar maksimal sepuluh berkas pendukungnya.
- Berkas pendukung hanya dimuat saat instruksinya meminta. Daftar periksa panjang atau skrip tetap di disk sampai dibutuhkan.
Kamu juga bisa memuatnya sendiri dengan menyebutnya di prompt: @app-store-release.
Di mana OpenCode mencari
| Cakupan | Folder |
|---|---|
| Proyekmu | .opencode/skills/ |
| Proyekmu (dipakai bersama agen lain) | .claude/skills/ dan .agents/skills/ |
| Semua proyek di mesinmu | ~/.config/opencode/skills/ |
| Semua proyek (bersama) | ~/.claude/skills/ dan ~/.agents/skills/ |
| Di tempat lain | Path atau katalog HTTP yang tercantum dalam skill array di opencode.jsonc |
ID sebuah skill berasal dari nama foldernya, bukan memberi nama di front matter-nya, dan peka huruf besar-kecil: .opencode/skills/app-store-release/SKILL.md memiliki ID app-store-release. Jika dua sumber mendefinisikan ID yang sama, yang muncul lebih akhir dalam urutan ini menang: bawaan, .claude/skills, .agents/skills, folder global kamu, folder proyek kamu .opencode/skills, lalu entri konfigurasi eksplisit. Skill tanpa deskripsi tidak diiklankan ke model sama sekali.
Tulis skill pertamamu: daftar periksa rilis App Store
Buat .opencode/skills/app-store-release/SKILL.md:
---
name: App Store release
description: Prepare an iOS release. Bumps the version and build number, runs the release checklist, archives, uploads to TestFlight with asc and drafts What's New notes. Use when asked to "ship", "release" or "send to TestFlight".
---
# App Store release
1. Check `git status`. If the working tree isn't clean, stop and say so.
2. Bump the marketing version and build number (ask which version if it isn't given).
3. Work through references/release-checklist.md. Every item must pass.
4. Archive and export the IPA with scripts/archive.sh.
5. Upload: `asc builds upload --app "$ASC_APP_ID" --ipa build/MyApp.ipa`
6. Draft What's New notes from the commits since the last tag and save them
to metadata/en-US/release_notes.txt.
7. NEVER submit for review. Report that the build is uploaded, then stop.
Taruh daftar periksa di references/release-checklist.md dan skrip arsip di scripts/archive.sh di sebelahnya. Saat berikutnya kamu bilang “ship 1.2.0 to TestFlight”, agen menemukan skill itu dari deskripsinya dan mengikuti langkahmu alih-alih berimprovisasi.

Skill yang layak dipasang untuk pekerjaan aplikasi
| Set skill | Isinya | Pasang |
|---|---|---|
| Skill Expo (resmi) | 23 skill: 16 untuk Expo SDK (Router, UI native, @expo/ui, sistem desain, upgrade, modul native, dan lainnya) dan 7 untuk layanan Expo, termasuk eas-app-stores untuk membangun dan mengirim ke TestFlight, App Store, dan Google Play |
npx skills add expo/skills |
| Skill App Store Connect CLI | Lebih dari dua puluh asc skill: alur rilis, orkestrasi TestFlight, sinkronisasi metadata dengan pemeriksaan batas karakter, terjemahan listing, pipeline tangkapan layar, penyiapan signing, kesehatan pengiriman, triase crash, audit ASO |
asc install-skills, atau npx skills add rorkai/app-store-connect-cli-skills |
| Skill XcodeBuildMCP | Dua skill yang mengajari agen alat dan CLI XcodeBuildMCP | xcodebuildmcp init |
| skills.sh | Direktori terbuka skill komunitas milik Vercel; OpenCode tercantum di antara agen yang didukung | npx skills add <owner/repo> |
Jika OpenCode tidak menampilkan skill yang sudah kamu pasang, cocokkan lokasi yang dipakai installer dengan folder di atas, atau salin folder skill itu ke .opencode/skills/.
Keamanan skill
Skill adalah instruksi plus, sering kali, skrip yang akan dijalankan agen. Baca skill pihak ketiga sebelum memasangnya, sama seperti kamu membaca skrip shell dari internet. Utamakan skill dari orang yang membuat alatnya (Expo untuk Expo, asc maintainer untuk asc), biarkan skill yang tidak dikenal dalam mode tanya dengan aturan izin, dan ingat bahwa deny menyembunyikan skill dari model sepenuhnya.
Bagian 8 — Membangun Aplikasi: Dari Ide ke Build yang Kamu Percaya
Alatnya sudah siap. Sekarang bagian yang menentukan apakah ada orang yang mengunduh hasilnya.
Pilih ide yang akan diloloskan App Review
AI membuat pembuatan aplikasi jadi murah, dan Apple menyadarinya. Pada 9 Juni, Apple menulis ulang pedoman 4.3(b), aturan spam-nya: aplikasi yang pada dasarnya sama dengan yang sudah berlimpah di toko kini ditolak, dan Apple menyebut aplikasi kencan, senter, wallpaper, timer, dan ramalan sebagai kategori yang menuntut pengalaman yang benar-benar berbeda atau lebih baik. Aplikasi baru yang asal jadi bisa dihapus, aplikasi lama di kategori itu bisa ditarik jika tidak diperbaiki atau tidak menarik pengguna, dan pengiriman berulang semacam ini bisa membuat keanggotaan developer-mu dicabut.
Jadi sebelum prompt pertama, satu uji: bisakah kamu sebutkan dalam satu kalimat apa yang aplikasimu lakukan yang tidak dilakukan hasil teratas untuk kata kunci pencarian utamanya? Kalau kamu tidak bisa, agen akan membangunnya dengan indah dan App Review akan mengembalikannya.
Kecil dan spesifik mengalahkan besar dan generik. Dua aplikasi saya sendiri sengaja sempit cakupannya:
- Stash mengingat di mana kamu meletakkan barang: foto tempatnya, pilih ruangan, simpan, lalu cari berdasarkan nama, ruangan, atau catatan suara yang sudah ditranskripsikan.
- PingAtlas mengukur waktu pulang-pergi jaringan dari iPhone, iPad, atau Mac kamu sendiri ke 202 kota, 278 tujuan publik, 109 game dan 32 layanan online, tanpa akun atau layanan pengukuran jarak jauh.
Satu tugas masing-masing. Itulah yang membuatnya bisa dibangun oleh satu orang dengan agen, dan bisa dijelaskan dalam satu kalimat di halaman App Store.
Pilih stack kamu
| SwiftUI + Xcode 27.1 | Expo SDK 58 (React Native 0.88) | |
|---|---|---|
| Berjalan di | iPhone, iPad, Mac, Apple Watch, dan Vision Pro | iPhone, iPad, Android dan web dari satu basis kode |
| Bahasa | Swift 6.4 | TypeScript |
| Butuh Mac? | Ya | Bukan untuk membangun atau mengirim (cloud Expo yang melakukannya); ya untuk alat simulator iOS lokal |
| Perkakas agen | jembatan MCP Xcode, XcodeBuildMCP, OpenCode di dalam Xcode lewat ACP | Server MCP Expo, 23 skill resmi, sebuah @expo/agent-cli eksperimental serta expo command:ps keluaran yang dapat dibaca mesin untuk agen |
| Baru musim gugur ini | SDK iOS 27.1, simulator iPhone Duo (dengan beberapa batasan pada ekstensi) | Dibangun dengan SDK iOS 27; aplikasi beralih ke siklus hidup scene UIKit, siap untuk iPhone Duo; dukungan App Intents dalam tahap alfa; macOS tidak didukung di SDK 58 |
| Terbaik untuk | Aplikasi khusus Apple yang menginginkan fitur platform terbaru | Satu orang yang merilis ke iPhone dan Android, dengan versi web |
Kalau kamu suka merilis versi web lebih dulu (saya suka), keluaran web Expo memungkinkan kamu menaruh demo yang berfungsi di depan orang sebelum versi App Store ada. Situs Stash’s melakukan hal serupa dengan demo peramban dibangun di sekitar rumah contoh: orang bisa mencoba idenya sebelum memasang apa pun.
Siklus build yang berhasil
Agen menulis dengan cepat. Yang membuat hasilnya bisa dipercaya adalah siklus di sekelilingnya:
- Ringkasan. Satu halaman
BRIEF.md: janji dalam satu kalimat, tiga cerita pengguna, daftar layar. - Rencana. The
planagen mengubahnya menjadiROADMAP.md: irisan vertikal kecil, masing-masing satu fitur yang berjalan dari ujung ke ujung. - Bangun satu irisan. The
buildagen mengimplementasikannya dan menulis tesnya. - Verifikasi seperti pengguna. Dengan XcodeBuildMCP agen bisa membangun dan menjalankan aplikasi di simulator, mengambil tangkapan layar, membaca pohon aksesibilitas dengan
snapshot_ui, menelusuri alurnya dan menjalankan tes. Dengan Expo, alat MCP lokal melakukan hal yang sama untuk simulator. Minta agen membandingkan apa yang dilihatnya dengan apa yang kamu minta. - Tinjau seperti App Review. Jalankan
appstore-reviewersubagen dari Bagian 5. - Baca diff-nya sendiri. Setiap baris yang akan dirilis.
- Commit, centang kotaknya, mulai sesi baru.
Untuk proses mekanis besar (menambahkan label aksesibilitas di mana-mana, melokalkan setiap string, menaikkan cakupan tes) gunakan mode goal: /goal Lokalkan setiap string yang dilihat pengguna ke bahasa Jerman, termasuk widget, notifikasi dan permintaan izin.
Tiga templat prompt yang layak diadaptasi:
Satu bagian: Implementasikan irisan 4 dari ROADMAP.md (pencarian). Baca AGENTS.md dulu. Tulis tes unit dulu, baru kodenya. Build dan jalankan di simulator, ambil tangkapan layar layar hasil dan periksa terhadap ringkasan. Tunjukkan diff-nya dan daftar setiap asumsi yang kamu buat.
Bug: Di iPhone dengan ukuran Dynamic Type terbesar, keyboard menutupi tombol Save di layar Add. Reproduksi di simulator, ambil tangkapan layar, jelaskan penyebabnya dalam dua kalimat, perbaiki, dan periksa setiap formulir lain untuk masalah yang sama.
Tinjauan sebelum commit: Tinjau semua perubahan sejak commit terakhir sebagai reviewer iOS senior yang skeptis: crash, kehilangan data, kebocoran privasi, label aksesibilitas yang hilang, string dan warna yang di-hard-code, apa pun yang merusak penggunaan offline. Daftar bernomor, yang paling serius duluan. Jangan perbaiki apa pun dulu.
Pelajaran dari dua aplikasi kecil
Stash dan lokalisasi. Stash 1.1.0 (28 Oktober) menambahkan sepuluh bahasa ke bahasa Inggris: Spanyol, Prancis, Jerman, Italia, Portugis Brasil, Belanda, Polandia, Jepang, Korea dan Mandarin Sederhana. Aplikasi mengambil salah satunya dari perangkat dan membiarkanmu menggantinya di Pengaturan → Bahasa, dan catatan rilis menyebutkan bahwa widget, pengingat dan prompt izin sistem juga diterjemahkan. Detail terakhir itulah pelajarannya: lokalisasi adalah pekerjaan agen yang ideal, tapi string yang dilupakan agen berada di luar layar utama, di widget, notifikasi, string tujuan izin dan pemformatan tanggal. Sebutkan di AGENTS.md dan semuanya akan dikerjakan.
PingAtlas dan klaim yang jujur. Deskripsi App Store PingAtlas membuat janji yang spesifik: balasan yang hilang tampil sebagai “Tidak ada balasan”, bukan sebagai 0 ms; tidak ada GPS dan tidak ada izin lokasi; tidak ada iklan, tidak ada analitik dan tidak ada akun; hasilnya tetap di perangkat kecuali kamu mengekspornya; dan pemeriksaan situs web hanya memakai permintaan HEAD. Janji seperti ini semestinya ada di AGENTS.md sebagai hal yang tidak bisa ditawar, karena itulah juga yang tertulis di label privasimu. Label PingAtlas berbunyi “Data Tidak Dikumpulkan”, dan itu hanya benar selama kodenya setuju. Subagen reviewer ada di sana untuk menyadari hari ketika kodenya tidak lagi setuju.
Cakupan yang terbatas adalah fitur. PingAtlas berukuran 1,9 MB saat diunduh. Stash, dengan foto, catatan suara, sinkronisasi dan widget, sekitar 65 MB. Lebih banyak fitur berarti lebih banyak yang harus diuji, lebih banyak yang harus dijelaskan di kebijakan privasi dan lebih banyak yang dipertanyakan App Review. Mulailah dari versi terkecil yang tetap menepati janji.

Aksesibilitas sejak hari pertama
Label Nutrisi Aksesibilitas milik Apple memungkinkanmu mendeklarasikan dukungan untuk sembilan fitur di halaman App Store-mu: VoiceOver, Kontrol Suara, Teks Lebih Besar, Antarmuka Gelap, Dibedakan Tanpa Warna Saja, Kontras Memadai, Gerakan Dikurangi, Takarir dan Deskripsi Audio. Saat ini sifatnya sukarela, tapi Apple bilang lama-lama kamu harus menyediakannya untuk mengirim aplikasi dan pembaruan baru. Kamu hanya boleh mendeklarasikan sebuah fitur kalau orang bisa menyelesaikan semua tugas umum aplikasimu dengannya, termasuk pembukaan pertama, masuk, pembelian dan pengaturan.
Tak satu pun dari listing milikku sendiri yang mendeklarasikannya, dan justru celah seperti itulah yang ingin ditangkap panduan ini. Agen bisa mengerjakan sebagian besar auditnya: XcodeBuildMCP snapshot_ui membaca pohon aksesibilitas, jadi /goal Buat setiap layar sepenuhnya bisa dipakai dengan VoiceOver dan pada ukuran teks terbesar, lalu daftar apa pun yang tidak bisa kamu perbaiki adalah pekerjaan satu sore yang realistis.
Bagian 9 — Menerbitkan ke App Store: Biarkan OpenCode Urus Administrasinya, Lalu Tekan Kirim Sendiri
Membangun adalah bagian yang menyenangkan. Menerbitkan adalah proyek tersendiri, dan di situ pengembang pemula kehilangan waktu seminggu. Kabar baiknya untuk 2026: hampir semuanya sekarang bisa diskrip, artinya agen bisa melakukan pengetikannya sementara kamu mengambil keputusan.
Apa yang berubah di Apple pada 2026
| Kapan | Apa yang berubah | Apa yang harus dilakukan |
|---|---|---|
| 31 Jan 2026 | Pertanyaan rating usia baru menjadi wajib untuk pembaruan | Jawab semuanya untuk setiap aplikasi sebelum kamu mengirim |
| 28 Apr 2026 | Unggahan harus dibangun dengan Xcode 26 atau yang lebih baru dan SDK 26 | Pakai Xcode 26 atau 27 |
| 9 Jun 2026 | Pedoman 4.3(b) ditulis ulang: aplikasi tiruan dan asal-asalan ditolak atau dihapus | Bedakan (Bagian 8) |
| 9 Sep 2026 | Unggahan harus menyasar iOS 13 atau yang lebih baru | Tidak ada, untuk aplikasi baru mana pun |
| 15 Okt 2026 | Xcode 27.1 (Swift 6.4, SDK iOS 27.1; butuh macOS Tahoe 26.6+) dan Expo SDK 58 | Perbarui toolchain-mu |
| 16 Okt 2026 | Panduan baru 2.5.19 melarang fitur tersembunyi, tidak aktif atau tak terdokumentasi; aturan lebih ketat untuk aplikasi yang menyembunyikan tujuannya saat peninjauan | Pastikan menu debug dan feature flag tidak ikut dikompilasi ke build rilis |
| Berlaku | Pedoman 5.1.2(i): beri tahu orang dan dapatkan izin mereka sebelum membagikan data pribadi ke AI pihak ketiga (ditambahkan November 2025) | Tambahkan layar persetujuan kalau aplikasimu memanggil layanan AI |
| Sekarang | Tangkapan layar: satu set untuk iPhone dengan Dynamic Island (layar sedang) wajib, ditambah iPad 13 inci kalau aplikasimu berjalan di iPad | Rencanakan ukuran tangkapan layar kamu (Bagian 10) |
| April 2027 | iPhone Duo tangkapan layar yang diwajibkan untuk aplikasi yang dibangun dengan SDK iOS 27.1 atau lebih baru | Mulai rancang untuk layar kedua sekarang |
| Sukarela, untuk sekarang | milik Apple | Nyatakan apa yang benar-benar kamu dukung |
Pasal baru 2.5.19 inilah yang menggigit aplikasi buatan AI. Agen suka tambahan yang terasa membantu: layar debug tersembunyi, feature flag yang dibiarkan mati, menu uji di balik tekan lama. Rumusan baru Apple blak-blakan: “Jangan sertakan fitur tersembunyi, tidak aktif, atau tidak terdokumentasi dalam aplikasi kamu.” Menurut laporan 9to5Mac tentang perubahan ini, mencoba menyembunyikan fitur seperti itu, misalnya lewat obfuscation kode, bisa berujung pada penghapusan aplikasi dan pemutusan akun developer kamu. Tulis aturan ini di AGENTS.md dan minta subagen reviewer mencarinya sebelum setiap pengiriman.

Alur kerjanya, langkah demi langkah
- Daftar ke Apple Developer Program. Biayanya $99 per tahun (€99 di Jerman). Perusahaan mendaftar sebagai organisasi, yang memerlukan nomor D-U-N-S. Mulai lebih awal; verifikasi bisa memakan waktu berhari-hari. Daftar di sini.
- Nyatakan status pedagang EU kamu. Di bawah Digital Services Act milik EU, setiap developer wajib menyatakan apakah mereka pedagang. Jika kamu menerbitkan sebagai bisnis, alamat, nomor telepon, dan email kamu muncul di halaman produk di setiap negara EU. Apple mencabut ribuan aplikasi dari storefront EU pada Februari 2025 karena tidak mencantumkannya.
- Buat kunci API App Store Connect. Di App Store Connect, buka Pengguna dan Akses → Integrasi → App Store Connect API lalu buat kunci tim. Hanya Account Holder yang bisa meminta akses API pada awalnya. Beri kunci itu peran paling lemah yang cukup untuk pekerjaannya (Apple’s ikhtisar peran menunjukkan apa yang bisa dilakukan masing-masing), unduh
.p8berkasnya sekali saja, lalu simpan di tempat yang aman dan di luar repositori kamu. - Pasang App Store Connect CLI dan masuk.
ascadalah alat command-line sumber terbuka (MIT) untuk App Store Connect API, dibuat untuk skrip dan agen: ia mencetak tabel di terminal dan JSON saat program lain membaca keluarannya.
brew install asc # or: curl -fsSL https://asccli.sh/install | bash
asc auth login --name "MyApp" --key-id "ABC123" --issuer-id "DEF456" \
--private-key ~/keys/AuthKey_ABC123.p8 --network
asc auth status --validate
Lalu pasang skill-nya (asc install-skills) agar OpenCode tahu cara memakainya.
- Buat catatan aplikasi. Di App Store Connect, pilih Aplikasi → + → Aplikasi Baru, dan pilih bundle ID kamu dengan hati-hati, karena nilainya tidak pernah berubah (milik Stash adalah
network.grahammiranda.stash, milik PingAtlasnetwork.grahammiranda.pingatlas). Skillascasc mencakup satu yang melakukan ini lewat otomasi peramban, tetapi ini pekerjaan dua menit yang layak dikerjakan manual sekali. - Beresi soal signing. Untuk aplikasi native, signing otomatis Xcode menangani sertifikat dan profil. Untuk Expo, EAS mengelola kredensial untuk kamu. Skill
asc-signing-setupmencakup bundle ID, kapabilitas, sertifikat, dan profil kalau kamu lebih suka menuliskannya sebagai skrip. - Build dan unggah. Native: arsipkan di Xcode (atau biarkan agen melakukannya dengan skill
asc-xcode-build), lalu unggah:
asc builds upload --app "123456789" --ipa build/MyApp.ipa
Expo: eas build --platform ios, lalu eas submit -p ios, yang mengunggah build ke App Store Connect (tidak mengirimnya untuk review). Mengunggah aman didelegasikan; mengirim untuk review tidak.
- Uji dulu dengan TestFlight. Penguji internal (hingga 100 orang di tim kamu) mendapat build tanpa peninjauan. Penguji eksternal (hingga 10.000, lewat email atau tautan publik) memerlukan Beta App Review singkat untuk build pertama. Build tetap dapat diuji selama 90 hari. Agen dapat mengelola grup dengan
asc testflight groups list --app "123456789"danasc-testflight-orchestrationskill. Berikan aplikasi itu kepada lima orang dengan iPhone berbeda selama seminggu; mereka akan menemukan crash yang tidak kamu temukan. - Tulis metadata, lalu biarkan agen memeriksanya. Simpan listing kamu dalam berkas di repositori (
metadata/en-US/…) lalu terapkan dengan dry run lebih dulu:
asc metadata apply --app "123456789" --version "1.0.0" --dir ./metadata --dry-run
The asc-metadata-sync skill memeriksa batas karakter Apple sebelum apa pun diunggah. Bagian 10 membahas apa yang harus ditulis.
- Buat tangkapan layar. Minimal satu, maksimal sepuluh, untuk setiap ukuran yang diwajibkan, dalam format PNG atau JPEG tanpa transparansi.
asc-shots-pipelinedapat mengambilnya dari simulator, membingkainya, dan mengunggahnya denganasc screenshots upload. Bagian 10 memuat ukurannya. - Jawab pertanyaan privasi, rating usia, dan kepatuhan dengan jujur. Inilah bagian yang tidak boleh kamu delegasikan secara buta:
- Label privasi. Dalam ketentuan Apple, data dihitung sebagai terkumpul ketika data meninggalkan perangkat dan disimpan lebih lama daripada waktu yang dibutuhkan untuk menangani permintaan. Data yang hanya diproses di perangkat tidak dihitung. Menyinkronkan konten orang ke server kamu tetap dihitung, meskipun hanya mereka yang bisa melihatnya. Minta agen mengaudit setiap panggilan jaringan dan SDK, lalu isi sendiri labelnya dari tabelnya.
- Kebijakan privasi harus ditautkan di App Store Connect dan dapat diakses di dalam aplikasi, dan harus menjelaskan aplikasi ini, bukan hanya perusahaan kamu.
- AI pihak ketiga (pedoman 5.1.2(i)): jika data pribadi dikirim ke layanan AI, beri tahu dan minta izin lebih dulu.
- Penghapusan akun (pedoman 5.1.1(v)): jika orang bisa membuat akun, mereka harus bisa menghapusnya di dalam aplikasi.
- Rating usia, kepatuhan ekspor, dan Accessibility Nutrition Labels. Jika aplikasi kamu hanya memakai enkripsi bawaan iOS, seperti HTTPS, setel
ITSAppUsesNonExemptEncryptiondi Info.plist kamu setelah memeriksa panduan Apple, agar kamu tidak ditanya pada setiap unggahan.
- Kirim sendiri. Tambahkan versi untuk ditinjau dan kirimkan di halaman aplikasi di App Store Connect, atau jalankan
asc publish appstore … --submit --confirmdari terminal kamu sendiri (aturan izin di Bagian 4 mencegah agen menjalankannya). Lalu biarkan agen memantau:asc review status --app "123456789".
Peninjauan: apa yang diharapkan
Apple menyatakan bahwa rata-rata 90% pengajuan ditinjau dalam waktu kurang dari 24 jam, dan lebih dari 40% masalah yang tidak terselesaikan berasal dari pedoman 2.1, App Completeness: crash, konten placeholder, informasi tidak lengkap, dan tautan rusak. Jika kamu ditolak, baca pesannya dua kali, perbaiki masalah yang sebenarnya, dan balas di App Store Connect. asc-submission-health membantu mendiagnosis penghambat, dan agen pandai menyusun balasan yang tenang dan spesifik. Kirim sendiri.
Bagian 10 — Peluncuran: Listing, Tangkapan Layar, ASO, dan Kehidupan Setelah Disetujui
Aplikasi yang disetujui dengan listing lemah seperti toko tanpa papan nama. Inilah sisa pekerjaannya.
Listing, kolom demi kolom
| Kolom | Batas | Yang efektif |
|---|---|---|
| Nama aplikasi | 30 karakter | Merek plus manfaat. “Stash — Temukan Cepat” memberi tahu orang asing untuk apa aplikasi ini |
| Subjudul | 30 karakter | Manfaatnya dalam kata-kata sederhana. PingAtlas memakai “Ping kota, game & layanan” |
| Kata kunci | 100 karakter | Dipisahkan koma, tanpa spasi. Jangan ulangi kata yang sudah ada di nama atau subjudul; kata itu tetap dihitung |
| Teks promosi | 170 karakter | Bisa diubah tanpa peninjauan ulang, jadi pakai untuk musim dan berita |
| Deskripsi | 4.000 karakter | Apa fungsinya, untuk siapa, dan apa yang tidak dilakukannya dengan data orang. Jelas dan spesifik |
| Yang baru | Per versi | Perubahan nyata dalam kata-kata manusia; /whats-new perintah dari Bagian 5 yang membuat drafnya |
| Tangkapan layar | 1 sampai 10 per ukuran | Ceritakan berurutan; kebanyakan orang tidak pernah menggulir melewati tiga yang pertama |
Dua aturan saat membiarkan agen menulis semua ini: suruh ia memakai hanya fitur yang ada di dalam kode (dan menyebutkan berkas tempat masing-masing berada), lalu simpan hasilnya di repositori supaya setiap perubahan ditinjau seperti kode. asc-aso-audit skill kemudian bisa memeriksa celah kata kunci secara offline sebelum apa pun tayang.
Ukuran tangkapan layar pada November 2026
| Perangkat | Wajib? | Ukuran potret (piksel) |
|---|---|---|
| iPhone dengan Dynamic Island, layar sedang | Ya | 1179 × 2556 atau 1206 × 2622 |
| iPhone dengan Dynamic Island, layar besar | Opsional | 1260 × 2736, 1290 × 2796, atau 1320 × 2868 |
| iPad, layar 13 inci | Ya, jika aplikasimu berjalan di iPad | 2064 × 2752 atau 2048 × 2732 |
| iPhone Duo (layar luar / dalam) | Mulai April 2027, untuk aplikasi yang dibangun dengan SDK iOS 27.1 atau lebih baru | 1398 × 2034 / 2007 × 2853 |
Kalau tampilanmu sama di semua ukuran dan bahasa, kamu hanya perlu resolusi wajib yang tertinggi; App Store Connect mengecilkannya untuk perangkat yang lebih kecil. Tangkapan layar tidak boleh mengandung transparansi.

Lokalkan listing-nya, bukan hanya aplikasinya
Kalau aplikasinya berbicara beberapa bahasa, listing-nya juga harus begitu. asc-localize-metadata skill menerjemahkan teks listing dan asc-metadata-sync memeriksa setiap bahasa terhadap batas karakter Apple, yang biasanya jadi tempat subtitle bahasa Jerman hasil terjemahan manual meleset. Mintalah penutur asli membaca hasilnya; terjemahan mesin sekarang sangat bagus, tetapi teks di toko aplikasi adalah pemasaran, dan pemasaran butuh telinga manusia.
Setelah disetujui
- Minta penilaian saat momennya tepat. Prompt penilaian sistem Apple muncul paling banyak tiga kali setahun per orang, jadi jangan buang kesempatan itu saat peluncuran pertama. Mintalah tepat setelah sesuatu berjalan baik.
- Gunakan teks promosi untuk momen tertentu. Musim pindahan, bersih-bersih musim semi, akhir pekan bermain gim. Bisa diubah tanpa peninjauan.
- Pantau crash sejak hari pertama. The
asc-crash-triageskill meninjau crash dan masukan TestFlight; server MCP Expo bisa mengambil crash, masukan, dan ulasan (balasan perlu konfirmasimu); server MCP Sentry membawa masuk error produksi. - Rilis pembaruan kecil sesering mungkin. Stash tayang pada 23 September, merilis desain ulang pada 2 Oktober, dan menambah sepuluh bahasa di versi 1.1.0 pada 28 Oktober. Rilis versi yang sudah berfungsi, lalu perbaiki di depan publik.
- Beri aplikasimu rumah di web. Halaman sederhana dengan demo, kebijakan privasi yang ditulis untuk aplikasi itu, dan, kalau kamu di Jerman, sebuah Impressum. Panduan aplikasi dari nol milik saya membahas halaman hukum bagi pengembang Jerman dan UE.
Bagian 11 — Berapa Biayanya: Empat Anggaran Tahun Pertama
OpenCode gratis. Ollama gratis di perangkat kerasmu sendiri. Satu-satunya biaya yang tidak bisa kamu hindari untuk aplikasi iPhone adalah keanggotaan Apple; selebihnya tergantung berapa banyak waktu model yang ingin kamu beli.
| Anggaran | Isinya | Tahun pertama (USD) |
|---|---|---|
| Hanya lokal | Apple Developer Program; OpenCode; Ollama dengan model lokal di Mac milikmu sendiri (32 GB atau lebih) | $99 |
| Pemula | Hanya lokal + OpenCode Go ($10 per bulan) | $219 |
| Disarankan | Starter + Ollama Pro dengan tagihan tahunan ($200) | $419 |
| Daya | Apple + OpenCode Go Plus ($40 per bulan) + Ollama Max ($100 per bulan) | $1,779 |
Harga daftar per 7 November 2026, di luar PPN, tanpa diskon promosi. Ganti dengan pilihanmu sendiri: GLM Coding Plan Lite alih-alih Go berbiaya $216 per tahun dengan tagihan bulanan (sekitar $151 dengan tagihan tahunan), bukan $120; ChatGPT Plus $240 per tahun. Tambahan opsional: biaya sekali bayar $25 dari Google Play jika kamu merilis di Android, paket Expo berbayar jika kebutuhanmu melebihi paket gratis, dan berapa pun biaya situs webmu.

Namun biaya sebenarnya tidak ada di daftar itu: waktu malammu. AI mempersingkat pengetikan, bukan pemikiran, dan pemikiran adalah bagian terbesar dari pekerjaan.
Bagian 12 — Lima Belas Kesalahan yang Harus Dihindari
- Membiarkan agen mengirim untuk ditinjau. Tolak di pengaturan izin. Kamu yang menekan tombolnya.
- Menyimpan kunci API Admin di tempat agen berjalan tanpa pengawasan. Gunakan peran paling rendah yang memadai, lalu simpan kunci penandatanganan dan kredensial produksi di tempat lain.
- Membuat salinan dari sesuatu yang sudah ada. Panduan 4.3(b) kini menyebut kategori secara keseluruhan. Temukan dulu perbedaanmu dalam satu kalimat.
- Merilis fitur tambahan yang tersembunyi. Layar debug, feature flag yang tidak aktif, dan menu pengujian melanggar panduan 2.5.19. Keluarkan semuanya dari build rilis lewat kompilasi.
- Label privasi yang terdengar masuk akal tetapi tidak akurat. Jika data meninggalkan perangkat dan menetap di server, data itu dianggap terkumpul, meskipun hanya pengguna yang bisa melihatnya.
- Mengirim data pribadi ke layanan AI tanpa bertanya. Panduan 5.1.2(i) mewajibkan pengungkapan dan izin.
- Rahasia di dalam bundel aplikasi. Apa pun di dalam aplikasi bisa diekstrak. Kunci yang bernilai uang disimpan di server.
- Menghubungkan setiap server MCP yang kamu temukan. Masing-masing memakan konteks pada setiap permintaan. Tambahkan yang kamu pakai.
- Memasang skill dan server yang belum kamu baca. Itu instruksi dan kode yang berjalan dengan izinmu.
- Percaya pada “selesai”. Jalankan di iPhone sungguhan, offline, dalam mode gelap, dengan ukuran teks terbesar, dan VoiceOver aktif.
- Memakai model promosi gratis untuk kode klien. Sebagian mungkin memakai datamu untuk meningkatkan model. Nonaktifkan untuk proyek klien.
- Lupa panjang konteks Ollama. Dengan pengaturan bawaan, agen kehabisan ruang sebelum mulai. Setel 64K di server.
- Membiarkan dependensi menumpuk. Setiap paket adalah kode yang tidak kamu baca dan pembaruan yang harus kamu kelola. Buat agen bertanya dulu.
- Sesi yang panjang dan berantakan. Mulai dari awal untuk setiap potongan, dan gunakan worktree untuk eksperimen.
- Menjanjikan roadmap-mu. Tangkapan layar dan deskripsi menunjukkan apa yang dilakukan build ini. Ide sebaiknya di situs webmu, diberi label sebagai ide.
Bagian 13 — Setup Mana yang Harus Kamu Pilih? Enam Skenario
1. “Saya belum pernah menulis kode dan saya punya Mac.”
Aplikasi desktop OpenCode, OpenCode Go, dan Ollama untuk tugas-tugas kecil. Expo jika kamu juga ingin Android; SwiftUI jika hanya peduli iPhone. Jaga perintah shell di tanya, commit setelah setiap langkah yang berhasil, dan mulai dengan aplikasi yang hanya punya satu tugas.
2. “Kode saya tidak boleh pernah meninggalkan mesin saya.”
OpenCode hanya dengan Ollama lokal. Nonaktifkan fitur cloud Ollama, setel OPENCODE_DISABLE_FREE_MODELS=1, dan jangan hubungkan penyedia cloud apa pun di proyek itu. Harapkan bantuan yang lebih lambat dan sederhana, dan beri agen tugas yang lebih kecil. Mac dengan 64 GB atau lebih membuat ini jauh lebih nyaman.
3. “Saya sudah membayar ChatGPT, Copilot, atau Claude.”
Hubungkan dulu yang sudah kamu punya. ChatGPT Plus dan Pro serta GitHub Copilot berfungsi lewat proses masuk bawaan tanpa biaya tambahan. Claude berfungsi lewat penyedia Claude Agent; baca Bagian 2 sebelum kamu bergantung padanya untuk pekerjaan bisnis. Tambahkan OpenCode Go nanti jika kamu ingin model terbuka juga.
4. “Saya ingin iPhone dan Android dari satu basis kode.”
Expo SDK 58, server MCP Expo, skill resmi Expo, dan EAS untuk build dan unggahan di cloud. Kamu bisa membangun dan mengunggah aplikasi iOS tanpa Mac, meskipun kamu tetap akan ingin punya satu (dan sebuah iPhone) untuk pengujian.
5. “Saya hanya peduli pada platform Apple dan ingin semuanya native.”
SwiftUI di Xcode 27.1, dengan OpenCode baik di dalam Xcode lewat ACP (Xcode → Settings → Intelligence → Add an Agent…, executable opencode, argument acp) atau di terminalmu dengan MCP bridge milik Xcode dan XcodeBuildMCP. Satu keterbatasan rute di dalam Xcode: tidak ada pemilih model, jadi atur model default kamu di opencode.jsonc dulu.
6. “Saya ingin cepat dan saya siap membayarnya.”
OpenCode Go Plus dan Ollama Max, worktree untuk eksperimen paralel, mode goal untuk pekerjaan mekanis yang panjang, dan model frontier lewat API key untuk masalah yang benar-benar sulit. Pantau pengeluaranmu setiap minggu. Untuk menjalankan beberapa agen berdampingan, perbandingan harness membahas pilihannya.
Pertanyaan yang sering diajukan
Pasang dengan curl -fsSL https://opencode.ai/v2/install | bash (atau unduh aplikasi desktop dari opencode.ai/download), buka terminal di folder proyekmu dan jalankan opencode. Ketik /connect untuk menambah penyedia model, seperti OpenCode Go, login ChatGPT, atau model Ollama lokal, lalu /models untuk memilih model. Tambahkan file AGENTS.md yang menjelaskan proyekmu, mulai di agen plan, dan bangun satu fitur kecil setiap kali sambil meninjau setiap perubahan.
Ya. OpenCode bersumber terbuka di bawah lisensi MIT dan tidak memakan biaya. Ia bahkan menyertakan satu set model gratis yang bergilir dan bisa kamu pakai tanpa akun. Kamu hanya membayar akses model yang kamu pilih untuk ditambahkan, seperti OpenCode Go seharga $10 per bulan, paket Ollama Cloud, langganan ChatGPT atau Copilot yang sudah ada, atau API key bayar per token. Model lokal lewat Ollama gratis.
OpenCode Go adalah paket coding milik OpenCode sendiri: $10 per bulan untuk akses ke 32 model terbuka, termasuk GLM-5.3, Kimi K3, MiniMax M3.1 Flash, dan DeepSeek V4.1 Flash. Setiap model punya jatah dolar bulanan, yang bisa kamu pakai 20% per lima jam dan 50% per minggu. Go Plus berharga $40 per bulan dengan batas lebih tinggi, dan Go Teams $20 per anggota. Sebagian besar model disajikan dengan retensi data nol.
Ya. OpenCode mendeteksi server Ollama lokal secara otomatis dan mendaftarkan modelnya di /models. Kamu juga bisa menjalankan ollama launch opencode, yang berfungsi dengan OpenCode v2 sejak Ollama 0.40.12. Atur panjang konteks Ollama minimal 64K token, karena default 4.096 terlalu kecil untuk agen coding. Model cloud Ollama bekerja dengan cara yang sama setelah kamu masuk.
Jaga ukuran unduhan model di bawah sekitar 60% memori Mac kamu. Di 32 GB, mulai dengan qwen3.8:27b (18 GB), qwen3-coder:30b (19 GB) atau gpt-oss:20b (14 GB). Di 64 GB, pakai model yang sama pada presisi lebih tinggi dengan konteks lebih besar. Di 96 sampai 128 GB, gpt-oss:120b (65 GB) dan devstral-2:123b (75 GB) muat. Di 16 GB, model lokal cocok untuk pekerjaan kecil; pakai model cloud untuk membangun.
Sejak OpenCode 2.2.3 (30 Oktober 2026), ya, lewat penyedia Claude Agent: pasang Claude Code 2.1.248 atau lebih baru, jalankan claude auth login, lalu pilih Claude Agent di /connect. Ia menjalankan program Claude Code resmi lewat Agent SDK milik Anthropic. Anthropic belum menyetujui penggunaan ini secara publik, dan ketentuan Agent SDK-nya membatasi pihak ketiga yang menawarkan login claude.ai, jadi gunakan API key Anthropic untuk pekerjaan bisnis.
Ya, keduanya lewat penyedia bawaan. Untuk ChatGPT Plus atau Pro, jalankan /connect, pilih OpenAI lalu “Sign in with ChatGPT”; pemakaian dihitung terhadap paketmu. Untuk GitHub Copilot, pilih GitHub Copilot dan selesaikan login perangkat; akunmu perlu akses Copilot Chat, yang sudah termasuk dalam paket Copilot gratis.
Server MCP (Model Context Protocol) memberi agen coding alat tambahan, seperti mengendalikan Xcode atau simulator. Untuk pekerjaan iOS, yang paling berguna adalah bridge bawaan Xcode (xcrun mcpbridge), XcodeBuildMCP untuk build, kontrol simulator dan tangkapan layar, server Expo MCP untuk proyek Expo, Context7 untuk dokumentasi terkini, dan Sentry untuk data crash. Setiap server menambah konteks pada setiap permintaan, jadi hubungkan hanya yang kamu pakai.
Skill adalah folder yang berisi SKILL.md file: deskripsi singkat plus instruksi langkah demi langkah, kadang dengan skrip. OpenCode hanya menunjukkan deskripsinya ke model dan memuat instruksi sebuah skill saat tugas membutuhkannya. Ia membaca skill dari .opencode/skills, .claude/skills dan .agents/skills di proyekmu, dan dari folder global. Expo dan App Store Connect CLI menerbitkan set skill resmi.
Ia bisa melakukan hampir semua pekerjaan: mengarsipkan, mengunggah build, mengelola TestFlight, menyinkronkan metadata dan tangkapan layar, serta memeriksa status peninjauan, memakai alat seperti asc CLI atau EAS dari Expo. Agen tidak boleh menekan “Submit for Review”. Blokir perintah submit di izin OpenCode, jawab sendiri pertanyaan privasi dan kepatuhan, lalu kirim versinya sendiri di App Store Connect.
Tidak harus. Dengan Expo, EAS membangun aplikasi iOS kamu di cloud dan mengunggahnya ke App Store Connect dari Windows atau Linux. Untuk pengembangan native dengan Xcode kamu perlu Mac, dan Xcode 27.1 memerlukan macOS Tahoe 26.6 atau lebih baru. Apa pun jalurnya, kamu tetap butuh iPhone asli untuk pengujian, dan kamu perlu keanggotaan Apple Developer Program ($99 setahun) untuk menerbitkan.
Mulai $99 pada tahun pertama jika kamu memakai model lokal dan hanya membayar iuran keanggotaan Apple. Setup yang direkomendasikan dalam panduan ini (OpenCode Go plus Ollama Pro dengan tagihan tahunan) mencapai sekitar $419 untuk tahun pertama termasuk iuran Apple, dan setup bertenaga dengan OpenCode Go Plus dan Ollama Max sekitar $1.779. Harga adalah daftar harga November 2026 tidak termasuk PPN.
Build harus dibuat dengan Xcode 26 atau lebih baru (sejak April), aplikasi tiruan dan aplikasi asal-asalan di kategori jenuh ditolak berdasarkan pedoman 4.3(b) yang ditulis ulang (Juni), fitur tersembunyi, dorman, atau tak terdokumentasi dilarang berdasarkan pedoman baru 2.5.19 (Oktober), dan aplikasi harus menyasar iOS 13 atau lebih baru (September). Tangkapan layar iPhone Duo menjadi wajib pada April 2027 untuk aplikasi yang dibangun dengan SDK iOS 27.1, dan set tangkapan layar iPhone yang diwajibkan sekarang adalah set untuk layar Dynamic Island ukuran sedang (1179 × 2556 atau 1206 × 2622 piksel).
Keduanya adalah dua aplikasi iPhone dan iPad gratis dari Graham Miranda UG, perusahaan penulis. Stash — Find It Fast mengingat di mana kamu meletakkan barang: kamu memotret tempatnya, memilih ruangan, lalu mencarinya lagi nanti, bahkan lewat catatan suara yang ditranskripsikan, dalam 11 bahasa. PingAtlas mengukur waktu pulang-pergi jaringan dari perangkatmu sendiri ke kota, game, dan layanan online, tanpa akun, tanpa iklan, dan tanpa analitik.
Kesimpulan
Pembelajaran cara memakai OpenCode yang baik bukan soal menghafal perintah. Ini soal membangun sistem kecil di sekitar agen: paket coding yang sesuai anggaranmu, Ollama untuk pekerjaan yang sebaiknya tetap di mesinmu, beberapa server MCP yang membuat agen bisa melihat apa yang dibangunnya, skill yang menyimpan playbook-mu, dan izin yang menjaga keputusan tak bisa dibatalkan tetap di tanganmu.
Rekomendasi saya tetap: OpenCode dengan OpenCode Go dan Ollama adalah cara termurah, paling fleksibel, dan paling tidak mengikat untuk membangun aplikasi dengan AI pada akhir 2026. Tambahkan langganan yang sudah kamu bayar, atau model frontier lewat kunci API, saat tugasnya layak. Lalu pakai agen untuk urusan administrasi juga, dan simpan tombol “Submit” untuk dirimu sendiri.
Kalau kamu ingin melihat hasil proses seperti ini dalam skala kecil, kedua aplikasi saya gratis: Stash — Find It Fast untuk barang-barang yang kamu simpan, dan PingAtlas untuk mengecek seberapa dekat internet sebenarnya dari tempatmu duduk. Setelah itu, bangun aplikasimu sendiri.
Sedang membangun dengan OpenCode? Saya ingin mendengar paket coding mana yang akhirnya kamu pilih, model lokal mana yang mendapat tempat di Mac-mu, dan server MCP atau skill mana yang tak bisa kamu tinggalkan. Koreksi dan bukti tandingan diterima; artikel ini diperbarui saat keadaannya berubah.
Pengungkapan: Stash dan PingAtlas adalah aplikasi saya sendiri, diterbitkan oleh perusahaan saya, Graham Miranda UG (haftungsbeschränkt). Keduanya gratis tanpa iklan. Artikel ini memuat satu tautan afiliasi, yaitu ke GLM Coding Plan dari Z.ai di Bagian 2; jika kamu berlangganan lewat tautan itu, kamu mendapat diskon 10% dan saya menerima komisi. Tidak ada perusahaan yang disebut di sini yang mensponsori, meninjau, atau menyetujui artikel ini.
Terakhir diperbarui: 7 November 2026.



