<h1 align="center">pi-web (Remote Control Your Pi)</h1>

<div align="center">

[![GitHub stars](https://img.shields.io/github/stars/timmygod/pi-web?style=flat&logo=github&label=stars&cacheSeconds=86400)](https://github.com/timmygod/pi-web/stargazers)
[![npm downloads](https://img.shields.io/npm/dw/@timmygod/pi-web-local?label=downloads/wk&color=2ea043&cacheSeconds=86400)](https://www.npmjs.com/package/@timmygod/pi-web-local)
[![license MIT](https://img.shields.io/npm/l/@timmygod/pi-web-local?label=license&color=0a7bbb&cacheSeconds=86400)](../../LICENSE)
[![Telegram](https://img.shields.io/badge/Telegram-Join-26A5E4?logo=telegram&logoColor=white)](https://t.me/+NJvFOTTa0wNjNTc9)
![platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux-555)

[English](../../README.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [中文](README.zh.md) · [日本語](README.ja.md) · **Bahasa Indonesia** · [Bahasa Melayu](README.ms.md) · [Tiếng Việt](README.vi.md) · [ไทย](README.th.md) · [Filipino](README.fil.md) · [မြန်မာ](README.my.md) · [ភាសាខ្មែរ](README.km.md) · [ລາວ](README.lo.md)

</div>

<div align="center">

Kendalikan [pi](https://pi.dev) coding agent Anda dari ponsel, tablet, atau laptop — di mana saja di jaringan Anda, atau dari jarak jauh melalui Tailscale.

Ini adalah PWA penuh, jadi Anda bisa memasangnya dan menggunakannya seperti aplikasi native di perangkat apa pun. Anggap saja sebagai ruang kerja AI pribadi Anda sendiri — seperti Cowork milik Claude, tetapi dengan model yang berbeda — mengobrol lintas model, menulis kode dari ponsel, atau menjadikannya [asisten pribadi](../en/personal-assistant.md) yang hidup di mesin Anda.

Jadikan milik Anda: ganti tema dan font, dan gunakan dalam bahasa Anda sendiri — pi-web hadir dengan banyak bahasa dan Anda bisa menambahkan sendiri. Lebih banyak fitur sedang dalam perjalanan, tetapi tidak akan membengkak: apa pun yang tidak Anda perlukan bisa dimatikan di pengaturan.

</div>

## Mengapa edisi model lokal ini?

pi-web asli tetap menjadi fondasi upstream untuk fitur dan perbaikan yang dibagikan. Edisi ini mempertahankan pengalaman tersebut, lalu menambahkan lapisan keandalan untuk model yang berjalan di mesin Anda sendiri atau di tempat lain di LAN Anda—di mana pembuatan sering lebih lambat, memori terbatas, dan konteks yang panjang dapat menghentikan sesi yang sebenarnya sehat.

| Area | pi-web upstream | Edisi ini |
|------|-----------------|--------------|
| Kebijakan model/runtime | Perilaku pi-web standar | Mode **Auto / Local / Cloud** per sesi, dengan deteksi lokal yang sadar endpoint dan penggantian manual yang persisten |
| Penanganan konteks panjang | Perilaku pemadatan pi normal | Local Mode memampatkan secara proaktif pada **65%** dan memeriksa lagi di dalam loop panggilan alat yang panjang sebelum permintaan penyedia lain |
| Keamanan pemadatan | Ringkasan standar | Titik pemeriksaan bergulir yang terbatas, satu penulisan ulang yang lebih ketat untuk keluaran tidak valid/terbatas, dan deteksi tanpa kemajuan alih-alih pemadatan ulang tanpa akhir |
| Eksekusi yang terganggu | Penanganan worker dan error normal | Pemulihan terbatas untuk overflow konteks, penghentian hanya-pemikiran, dan gangguan transportasi terpilih, dengan pemutus loop yang persisten |
| Penyelamatan manual | Detail konteks standar | **Force Compact** tetap tersedia sebagai jalur pemulihan eksplisit tanpa menghapus percakapan |
| Kompatibilitas dan rilis | Proyek dan jalur rilis asli | Langkah pengamanan khusus lokal tetap berada di belakang Local Mode; Cloud Mode mempertahankan perilaku upstream, dan perubahan upstream ditinjau dan dirilis di sini secara independen |

Ini bukan penulisan ulang atau pengganti untuk upstream. Ini adalah profil operasional yang dipelihara secara sengaja bagi orang-orang yang menginginkan privasi dan kontrol model lokal tanpa menerima sesi berdurasi panjang yang rapuh. Lihat [panduan pengguna](../en/README.md) untuk alur kerja yang berorientasi pada pengguna dan [pengembangan edisi model lokal](../../docs/dev/local-llm-development.md) untuk implementasi dan kebijakan sinkronisasi.

> [!WARNING]
> pi-web saat ini dalam tahap **beta**. Banyak hal akan berubah dan rusak!

> [!TIP]
> Baru di sini? **[Baca panduan pengguna →](../en/README.md)** untuk tur lengkap fitur, langkah pemasangan, dan tips. ([Bahasa lainnya →](../README.md))

## Tangkapan Layar

<div align="center">
  <img src="../assets/pi-web-desktop-screenshot.png" alt="Desktop" width="90%" /><br />
  <em>Desktop</em>
  <br /><br />
  <img src="../assets/pi-web-mobile-screenshot.png" alt="PWA Seluler" width="90%" /><br />
  <em>PWA Seluler</em>
</div>

## Bagaimana Semuanya Bekerja

```
 pi (terminal)                 Peramban (ponsel / tablet / laptop)
      │                                │
      │  menulis JSONL                │  HTTP + SSE
      ▼                                ▼
 ~/.pi/agent/sessions/  ←───  pi-web (server HTTP Go)
                                      │
                    ┌─────────────────┼─────────────────┐
                    │                 │                 │
              pi --mode rpc      fsnotify         tailscale serve
            (pekerja obrolan  (muat ulang       (HTTPS jarak jauh
             per sesi)         langsung)          melalui MagicDNS)
```

- **pi** menulis JSONL percakapan ke `~/.pi/agent/sessions/` saat bekerja.
- **pi-web** adalah server Go yang membaca file-file tersebut, merendernya di peramban, dan mengalirkan pembaruan langsung melalui SSE.
- Pekerja **pi --mode rpc** menangani obrolan yang dimulai dari peramban — satu per sesi, dihentikan setelah 10 menit menganggur.
- **fsnotify** memantau direktori sesi sehingga peramban memuat ulang dalam hitungan milidetik setelah ada keluaran baru.
- **Tailscale Serve** mempublikasikan server localhost sebagai titik akhir HTTPS di tailnet Anda.

## Pemasangan

```bash
pi install npm:@timmygod/pi-web-local@beta
```

Itu saja — perintah ini mengunduh biner yang cocok, menyiapkan mulai-otomatis, dan mendaftarkan perintah `/web`, `/pi-web`, `/remote`, dan `/refresh`.

Setelah terpasang, buka `http://127.0.0.1:31415` di peramban Anda. Dari pi, gunakan `/web` untuk membuka sesi saat ini di peramban secara instan. Jika Tailscale berjalan di mesin Anda, pi-web secara otomatis mempublikasikan titik akhir HTTPS di tailnet Anda — gunakan `/remote` dari pi untuk mendapatkan kode QR dan URL untuk perangkat apa pun di tailnet Anda.

> **Akses jarak jauh di macOS:** Instal dan buka Tailscale secara interaktif, setujui permintaan administrator, lalu masuk. Kemudian jalankan `/pi-web restart`, diikuti dengan `/remote`.

Untuk pemasangan manual, unduhan biner, atau membangun dari sumber, lihat [user-docs/install.md](../en/install.md).

## Integrasi Pi

Setelah `pi install npm:@timmygod/pi-web-local@beta`, Anda mendapatkan:

| Perintah | Fungsinya |
|----------|-----------|
| `/web` | Buka sesi saat ini di peramban Anda (sadar-SSH: melewati peramban dan hanya menampilkan URL) |
| `/pi-web` | Tampilkan status, versi, mulai/hentikan/mulai ulang server, atau perbarui |
| `/remote` | Tampilkan kode QR dan URL untuk akses jarak jauh melalui Tailscale |
| `/refresh` | Tarik pesan baru yang ditulis dari peramban jarak jauh kembali ke sesi terminal |

**Pemberian judul otomatis** sesi sudah terpasang di pi-web dan dikonfigurasi di halaman `/settings`. Ini **aktif secara bawaan** dan memberi nama sesi secara otomatis. Anda dapat memilih:

- **Kapan memberi judul** — sekali per sesi, atau pada setiap pesan baru (bawaan).
- **Model judul** — **heuristik kata bawaan (tanpa AI)** yang gratis dan instan secara bawaan, atau pilih model (mis. yang kecil/cepat) untuk judul yang lebih cerdas yang ditulis oleh model.

Paket ini juga memasang biner pi-web ke `~/.pi/agent/bin/pi-web` dan menyiapkan mulai-otomatis saat login.

## Mulai-Otomatis saat Login

Perintah `pi install npm:@timmygod/pi-web-local@beta` menyiapkan ini secara otomatis:

| OS | Mekanisme |
|----|-----------|
| macOS | launchd plist di `~/Library/LaunchAgents/com.pi-web.plist` |
| Linux | systemd user service di `~/.config/systemd/user/pi-web.service` |

Untuk mengatur token untuk akses jarak jauh, buat `~/.config/pi-web/env`:

```
PI_WEB_TOKEN=token-anda-di-sini
```

Untuk detail lebih lanjut (pengaturan manual, port kustom, binding non-loopback), lihat [user-docs/install.md](../en/install.md).

## Pengembangan

```bash
make setup   # pasang dependensi frontend dan unduh modul Go
make check   # uji frontend/build + uji Go/vet
make build   # setup jika diperlukan, bangun frontend, lalu bangun ./pi-web
```
