Cara Mengatasi Error OpenCode / OpenTUI di VS Code Windows: Failed to Open Library B:/~BUN/root/opentui.dll
Beberapa waktu lalu saya mencoba menjalankan OpenCode AI di terminal VS Code pada Windows. Awalnya berjalan normal ketika VS Code dibuka dengan Run as Administrator, tapi ketika VS Code dibuka seperti biasa, OpenCode gagal berjalan dan menampilkan error seperti ini:
Error: Unexpected error, check log file at C:\Users\...\opencode\log\xxxx.log for more details
Failed to initialize OpenTUI render library: Failed to open library "B:/~BUN/root/opentui-a7anrm45.dll": error code 126
Awalnya error ini cukup membingungkan, karena path yang muncul mengarah ke:
B:/~BUN/root/opentui-a7anrm45.dll
Padahal di komputer saya tidak ada drive B: yang aktif, Bun juga tidak terpasang secara global, dan OpenCode yang digunakan berjalan dari folder user:
%USERPROFILE%\.opencode\bin\opencode.exe
Setelah mencoba beberapa cara, ternyata masalahnya bukan dari project, bukan dari Node.js, dan bukan juga karena instalasi OpenCode yang rusak. Masalahnya ada di environment variable yang digunakan oleh terminal VS Code, terutama TEMP dan TMP.
Masalah yang Terjadi
OpenCode gagal dijalankan dari terminal VS Code biasa:
opencode --print-logs
Log menampilkan error seperti ini:
Failed to initialize OpenTUI render library:
Failed to open library "B:/~BUN/root/opentui-a7anrm45.dll": error code 126
Namun ketika VS Code dibuka sebagai Administrator, OpenCode bisa berjalan normal.
Dari sini terlihat bahwa masalahnya kemungkinan berasal dari perbedaan environment antara:
- VS Code yang dibuka secara normal
- VS Code yang dibuka sebagai Administrator
- PowerShell di luar VS Code
- Environment variable user Windows
Kemungkinan Penyebab
OpenCode menggunakan OpenTUI untuk merender tampilan terminal interaktifnya. Di Windows, OpenTUI perlu memuat native DLL agar tampilan terminalnya bisa berjalan.
Saat OpenCode dijalankan, runtime akan mencoba memuat DLL tersebut. Jika folder temp atau cache runtime yang digunakan oleh proses terminal tidak sesuai, DLL bisa gagal dimuat dan menghasilkan error code 126.
Dalam kasus saya, walaupun TEMP dan TMP terlihat mengarah ke folder temp Windows, VS Code masih bisa mewarisi environment lama atau environment yang tidak konsisten.
Path yang muncul di error:
B:/~BUN/root/opentui-a7anrm45.dll
tidak selalu berarti drive B: benar-benar ada. Path tersebut bisa saja berasal dari bundled runtime yang digunakan secara internal oleh OpenCode. Namun error ini tetap bisa dipicu oleh environment temp yang tidak sesuai atau tidak konsisten.
Solusi yang Berhasil
Solusi yang berhasil adalah memaksa TEMP dan TMP menggunakan folder temp user Windows yang benar.
Jalankan perintah berikut di PowerShell:
[Environment]::SetEnvironmentVariable("TEMP", "$env:LOCALAPPDATA\Temp", "User")
[Environment]::SetEnvironmentVariable("TMP", "$env:LOCALAPPDATA\Temp", "User")
Lalu untuk terminal session yang sedang berjalan, jalankan juga:
$env:TEMP = "$env:LOCALAPPDATA\Temp"
$env:TMP = "$env:LOCALAPPDATA\Temp"
Remove-Item Env:TMPDIR -ErrorAction SilentlyContinue
Setelah itu, coba jalankan kembali OpenCode:
opencode --print-logs
opencode
Dalam kasus saya, OpenCode berhasil berjalan normal tanpa harus membuka VS Code sebagai Administrator.
Cek Value TEMP dan TMP
Untuk memastikan environment variable sudah benar, jalankan:
echo $env:TEMP
echo $env:TMP
echo $env:LOCALAPPDATA
Output yang ideal kurang lebih seperti ini:
C:\Users\NamaUser\AppData\Local\Temp
C:\Users\NamaUser\AppData\Local\Temp
C:\Users\NamaUser\AppData\Local
Jika TEMP atau TMP mengarah ke drive lain, RAM disk, network location, atau path yang tidak biasa, kemungkinan itu yang membuat OpenTUI gagal memuat DLL dengan benar.
Fix Khusus untuk VS Code
Jika OpenCode berhasil setelah mengatur TEMP dan TMP, tapi error muncul lagi saat dijalankan dari VS Code, kita bisa memaksa environment terminal langsung dari settings VS Code.
Buka Command Palette:
Ctrl + Shift + P
Lalu cari:
Preferences: Open User Settings (JSON)
Tambahkan konfigurasi berikut:
"terminal.integrated.env.windows": {
"TEMP": "C:\\Users\\NamaUser\\AppData\\Local\\Temp",
"TMP": "C:\\Users\\NamaUser\\AppData\\Local\\Temp",
"TMPDIR": null
}
Ganti NamaUser dengan nama user Windows masing-masing.
Contohnya bisa seperti ini:
"terminal.integrated.env.windows": {
"TEMP": "C:\\Users\\NamaUser\\AppData\\Local\\Temp",
"TMP": "C:\\Users\\NamaUser\\AppData\\Local\\Temp",
"TMPDIR": null
}
Setelah menyimpan settings, tutup semua proses VS Code:
taskkill /IM Code.exe /F
Kemudian buka kembali VS Code secara normal dan test lagi:
opencode --print-logs
opencode
Cek Apakah Ada Drive B: atau Instalasi Bun
Dalam kasus saya, drive B: tidak benar-benar ada. Tapi untuk memastikan, jalankan:
Get-PSDrive B -ErrorAction SilentlyContinue
Get-Volume -DriveLetter B -ErrorAction SilentlyContinue
subst
net use
Jika ada mapped drive B:, RAM disk, atau virtual drive, bisa jadi hal tersebut berhubungan dengan error ini.
Kita juga bisa mengecek apakah Bun terinstall secara global:
where.exe bun
Jika Bun tidak terpasang, biasanya hasilnya akan seperti ini:
INFO: Could not find files for the given pattern(s).
Artinya error ini belum tentu disebabkan oleh instalasi Bun global. Kemungkinan lebih dekat ke cara runtime internal OpenCode memuat file native DLL.
Cek Lokasi OpenCode Berjalan
Untuk mengecek lokasi binary OpenCode, jalankan:
where.exe opencode
Get-Command opencode -All
Output yang muncul bisa mengarah ke folder user seperti ini:
%USERPROFILE%\.opencode\bin\opencode.exe
Ini berarti OpenCode berjalan dari binary level user, bukan dari npm global atau Bun global.
Kesimpulan
Jika OpenCode gagal berjalan di Windows dengan error seperti ini:
Failed to initialize OpenTUI render library:
Failed to open library "B:/~BUN/root/opentui-a7anrm45.dll": error code 126
dan hanya bisa berjalan ketika VS Code dibuka sebagai Administrator, kemungkinan besar masalahnya ada di environment terminal, terutama TEMP dan TMP.
Solusi yang berhasil di kasus saya adalah:
[Environment]::SetEnvironmentVariable("TEMP", "$env:LOCALAPPDATA\Temp", "User")
[Environment]::SetEnvironmentVariable("TMP", "$env:LOCALAPPDATA\Temp", "User")
Dan untuk VS Code, saya memaksa environment terminal lewat settings.json:
"terminal.integrated.env.windows": {
"TEMP": "C:\\Users\\NamaUser\\AppData\\Local\\Temp",
"TMP": "C:\\Users\\NamaUser\\AppData\\Local\\Temp",
"TMPDIR": null
}
Setelah VS Code direstart, OpenCode bisa berjalan normal tanpa perlu Run as Administrator.
Kesimpulan utamanya: jangan jadikan Run as Administrator sebagai solusi permanen. Kalau sebuah CLI tool hanya bisa berjalan sebagai Administrator, biasanya ada masalah environment atau permission yang perlu dibereskan dari sumbernya.
