<p align="center">
  <img src="src-tauri/icons/logo.png" alt="KKTerm" width="128" />
</p>

<h1 align="center">KKTerm</h1>

<p align="center">
  <strong>หน้าต่างเนทีฟของ Windows หน้าต่างเดียวสำหรับเทอร์มินัล, SSH, SFTP, RDP/VNC และแดชบอร์ด — พร้อม AI ที่สร้างเครื่องมือเล็ก ๆ ของคุณเองได้ตามสั่ง</strong>
</p>

<p align="center">
  <em>เพราะทาสก์บาร์ของคุณไม่ควรหน้าตาเหมือนตู้สล็อตที่ลาสเวกัส</em>
</p>

<p align="center">
  <sub>ตั้งชื่อตาม <strong>乖乖 (Kuāi Kuāi / กวายกวาย)</strong> ขนมข้าวโพดสีเขียวรสมะพร้าวที่แอดมินระบบชาวไต้หวันวางไว้บนเซิร์ฟเวอร์เพื่อให้มันทำงานดี ๆ เราหวังว่าแอปนี้จะได้ที่ทางบนแร็คเช่นกัน</sub>
</p>

<p align="center">
  <strong><a href="https://github.com/ryantsai/KKTerm/releases/latest">ดาวน์โหลด KKTerm รุ่นล่าสุด</a></strong>
</p>

<p align="center">
  <a href="https://github.com/ryantsai/KKTerm/stargazers">
    <img src="https://img.shields.io/github/stars/ryantsai/KKTerm?style=for-the-badge&logo=github&color=ffd33d" alt="GitHub stars" />
  </a>
  <a href="https://github.com/ryantsai/KKTerm/network/members">
    <img src="https://img.shields.io/github/forks/ryantsai/KKTerm?style=for-the-badge&logo=github&color=8a63d2" alt="GitHub forks" />
  </a>
  <a href="https://github.com/ryantsai/KKTerm/releases">
    <img src="https://img.shields.io/github/downloads/ryantsai/KKTerm/total?style=for-the-badge&logo=github&color=0969da" alt="GitHub downloads" />
  </a>
  <a href="https://github.com/ryantsai/KKTerm/issues">
    <img src="https://img.shields.io/github/issues/ryantsai/KKTerm?style=for-the-badge&logo=github&color=2ea043" alt="Open issues" />
  </a>
  <a href="https://github.com/ryantsai/KKTerm/blob/main/LICENSE">
    <img src="https://img.shields.io/github/license/ryantsai/KKTerm?style=for-the-badge&color=blue" alt="MIT License" />
  </a>
  <br />
  <img src="https://img.shields.io/badge/cross%E2%80%91platform-desktop-0078D6?style=flat-square" alt="Cross-platform desktop" />
  <img src="https://img.shields.io/badge/local--first-no%20telemetry-success?style=flat-square" alt="Local-first" />
  <br />
  <sub>
    <a href="README.md">English</a> ·
    <a href="README.zh-TW.md">繁體中文</a> ·
    <a href="README.zh-CN.md">简体中文</a> ·
    <a href="README.ja.md">日本語</a> ·
    <a href="README.ko.md">한국어</a> ·
    <a href="README.fr.md">Français</a> ·
    <a href="README.de.md">Deutsch</a> ·
    <a href="README.es.md">Español</a> ·
    <a href="README.es-MX.md">Español (MX)</a> ·
    <a href="README.it.md">Italiano</a> ·
    <a href="README.pt-BR.md">Português (BR)</a> ·
    <strong>ไทย</strong> ·
    <a href="README.id.md">Bahasa Indonesia</a> ·
    <a href="README.vi.md">Tiếng Việt</a>
  </sub>
</p>

---

## พิตช์ใน 45 วินาที

คุณเป็นแอดมินระบบ / DevOps / คนเล่นโฮมแล็บ / vibe-coder ตอนนี้คุณมี:

- โปรแกรมจำลองเทอร์มินัล
- SSH client แยกต่างหาก (พร้อมรายการโปรไฟล์ที่ใช้เวลาทั้งสุดสัปดาห์กว่าจะสร้างเสร็จ)
- SFTP client จากปี 2007 ที่ไม่รู้ว่ายังอยู่ได้ยังไง
- Remote Desktop ในหน้าต่างที่คุณมักหาไม่เจอเพราะไปอยู่ผิดจอ
- VNC viewer เพื่อเครื่อง Linux เครื่องเดียวนั้น
- แท็บเบราว์เซอร์สำหรับหน้าแอดมินของเราเตอร์
- โปรแกรมจัดการไฟล์ไว้ส่องดิสก์ในเครื่อง และโปรแกรมแก้ไขข้อความเพียงเพื่อล็อกไฟล์เดียวที่คุณ `tail` ดูอยู่ตลอด
- เซสชัน `claude` / `codex` บนเครื่องรีโมตที่หลุดทุกครั้งที่ Wi-Fi จาม
- โพสต์อิตที่จดรหัสผ่านไว้ *(ไม่ต้องห่วง เราไม่บอกใคร)*

**KKTerm คือหน้าต่างเดียวสำหรับทั้งหมดนั้น** เนทีฟบน Windows — *ตั้งใจ ในขณะที่โลกเครื่องมือ dev ที่เหลือออกเวอร์ชัน mac ก่อนและปฏิบัติต่อ OS ของคุณเหมือนเชิงอรรถ* — ในตัวติดตั้งเดียว และปฏิเสธที่จะโทรกลับบ้าน

แถมด้วยอีกสองสามอย่างที่คุณไม่รู้ว่าตัวเองอยากได้:

- **Dashboard** ที่คุณบอก AI ว่า *"สร้าง widget ที่ ping เราเตอร์ของฉันทุก 30 วินาทีให้หน่อย"* แล้วมันก็ปรากฏขึ้นบนกริดของคุณ ในแซนด์บ็อกซ์ของมันเอง
- **SSH pane ที่กลับไปเชื่อมต่อเซสชัน `claude` / `codex` รีโมตของคุณใหม่อัตโนมัติ** หลังจาก Wi-Fi งอแงทุกครั้ง เพื่อให้งานหกชั่วโมงรอดจากการหลุดสาย
- **Workspaces** ที่เก็บโฮมแล็บ งานประจำ และเซิร์ฟเวอร์ของลูกค้ารายนั้นไว้ในกล่องแยกกันที่สลับได้ในคลิกเดียว
- **Install Helper** ที่ค้นหา ติดตั้ง อัปเดต และเปิดเครื่องมือ dev ของ Windows ที่ปกติคุณต้องไล่หาผ่านสิบแท็บเบราว์เซอร์
- **พื้นหลังเคลื่อนไหว 36 แบบ** สำหรับแดชบอร์ด *และเทอร์มินัลของคุณ* (ใช่ รวมถึง `matrix` ด้วย) เพราะเราก็ไม่ได้สูงส่งเกินไป

และส่วนที่ดีที่สุด: ผู้ช่วย AI สามารถเปลี่ยนประโยคเดียวให้กลายเป็นเครื่องมือแดชบอร์ดเล็ก ๆ ที่คุณใช้ต่อจริง ๆ

> ⭐ **ถ้าฟังดูเหมือนแอปที่คุณตั้งใจจะสร้างมาตลอดหกปีที่ผ่านมา — กดดาวให้ repo เพื่อให้เรารู้ว่ามีคนกำลังดูอยู่ มันช่วยได้จริง ๆ**

มีความเห็นว่าควรทำอะไรต่อ? เข้าร่วมเธรดฟีดแบ็กสาธารณะ:
**[KKTerm ควรให้ความสำคัญกับอะไรก่อนสำหรับเวิร์กโฟลว์แอดมินข้ามแพลตฟอร์ม?](https://github.com/ryantsai/KKTerm/discussions/141)**

---

## ทำไมถึงชื่อ "KKTerm"?

เดินเข้าไปในดาต้าเซ็นเตอร์ไต้หวันที่ไหนก็ได้แล้วมองที่ด้านบนของแร็ค ผ่านโรงงาน TSMC, ห้องควบคุมรถไฟฟ้าไทเป, ห้องเซิร์ฟเวอร์ของธนาคาร Cathay, อุปกรณ์ชุมสายของ Chunghwa Telecom — คุณจะเห็นถุงเล็ก ๆ สีเขียวของ 乖乖 (Kuāi Kuāi) ขนมข้าวโพดรสมะพร้าวจากยุค 1960

ชื่อนี้แปลตรงตัวว่า **"เป็นเด็กดี"**, **"อยู่ในโอวาท"** ธรรมเนียมในวงการไอทีนั้นเรียบง่ายและจริงจังสุด ๆ:

- **ต้องเป็นสีเขียว (มะพร้าว)** สีเหลือง (กะหรี่) หมายถึง *วันนี้อยู่บ้านเถอะ*; สีแดง (เผ็ด) ทำให้เซิร์ฟเวอร์โกรธ เขียวเท่านั้น
- **ต้องไม่หมดอายุ** Kuai Kuai ที่หมดอายุกลับทำร้ายคุณ วิศวกรจึงหมั่นเปลี่ยนใหม่
- **ต้องมองเห็นได้** เซิร์ฟเวอร์ต้องรู้ว่ามันอยู่ตรงนั้น
- **ห้ามกิน** ถุงนั้นกำลังปฏิบัติหน้าที่อยู่

ระบบที่ใหญ่ที่สุด น่าเบื่อที่สุด และหมกมุ่นกับ uptime ที่สุดบางระบบในเอเชียทำงานอยู่กับถุงขนมข้าวโพดที่แปะอยู่บนตัวเครื่อง มันได้ผลเพราะคนที่ดูแลมันเชื่อว่ามันได้ผล ซึ่งเป็นคำอธิบายที่ซื่อตรงอย่างน่าทึ่งต่อวัฒนธรรมไอทีส่วนใหญ่

**KKTerm** คือ **Kuai Kuai Term** — พื้นที่ทำงานแอดมินที่มุ่งหวังงานเดียวกับขนมชิ้นนั้น: นั่งเงียบ ๆ ข้างเครื่องสำคัญของคุณและช่วยให้มันทำงานดี ๆ โลคัลมาก่อน ไม่มี telemetry AI ต้องผ่านการอนุมัติ ซอฟต์แวร์ประเภทน่าเบื่อแต่ไว้ใจได้

เรายังไม่สามารถแถมถุง Kuai Kuai จริง ๆ ไปกับตัวติดตั้งได้ นั่นเป็นรายการของ v2

---

## ดูมันขยับ

<p align="center">
  <a href="https://github.com/ryantsai/KKTerm">
    <img
      src="docs/assets/demo.gif"
      alt="KKTerm demo"
      width="720"
    />
  </a>
</p>

<p align="center"><sub><em>(GIF เดโม ภาพหนึ่งภาพมีค่ามากกว่าหัวข้อย่อยพันหัวข้อ และเราก็ใช้หัวข้อย่อยหมดแล้ว)</em></sub></p>



---

## หน้าต่างเดียว ทุกการเชื่อมต่อ

| คุณอยากจะ… | KKTerm ทำได้ |
| --- | --- |
| เปิดเชลล์ในเครื่อง PowerShell / cmd / WSL | เทอร์มินัลในเครื่อง วางเรียงข้างกัน |
| SSH เข้าเซิร์ฟเวอร์ | SSH พร้อมคีย์ agent รหัสผ่าน jump host และ port forwarding |
| เรียกดูไฟล์บนเซิร์ฟเวอร์นั้น | SFTP จากการเชื่อมต่อ SSH — สองแผง ลากเพื่อถ่ายโอน |
| FTP ไปยัง NAS จากปี 2012 | FTP / FTPS ในเบราว์เซอร์ไฟล์เดียวกัน |
| Telnet ไปยังอุปกรณ์โบราณ | ใช่ Telnet ก็มีอยู่ในนั้น |
| คุยกับพอร์ตอนุกรม | การเชื่อมต่อ Serial — เลือกพอร์ต COM และ baud |
| รีโมตเข้าเครื่อง Windows | Microsoft Remote Desktop ของจริง ฝังมาในตัว |
| VNC เข้า Pi | VNC เรนเดอร์ลงในพื้นที่ทำงานโดยตรง |
| เปิดหน้าเว็บแอดมินของเราเตอร์ | แท็บเบราว์เซอร์ฝังในตัว พร้อมล็อกอินที่บันทึกไว้ |
| เรียกดูดิสก์ของตัวเอง | Pane File Explorer ในเครื่อง เปลือกสองแผงแบบเดียวกับ SFTP |
| เปิดล็อก, CSV, รูปภาพ หรือ PDF | ตัวดู Document ในตัว พร้อมโหมดล็อกแบบ tail-follow ของจริง |
| ดู CPU ของโฮสต์ | แถบสถานะแบบเรียลไทม์ และแดชบอร์ดที่คุณต่อยอดได้เอง |

แอปเดียวกัน หน้าต่างเดียวกัน คีย์ลัดเดียวกัน ธีมเดียวกัน ที่หวังว่าจะไม่ทำเอาตาเลือดตก

<p align="center">
  <img src="docs/assets/screenshots/connections-grid.png" alt="Tab เดียวที่มี SSH, SFTP และ Web UI ฝังในตัว วางเรียงข้างกัน" width="720" />
</p>


---

## ทำไมคนถึงเปิดมันค้างไว้ทั้งวัน

### ดาวน์โหลดเล็ก เปิดเร็วเหมือนสายฟ้า

KKTerm ถูกสร้างให้รู้สึกเหมือนยูทิลิตี ไม่ใช่แพลตฟอร์มทั้งก้อน บิลด์เดสก์ท็อปปัจจุบันมีขนาดต่ำกว่า 20 MB ติดตั้งไว และเปิดเร็วพอที่การเปิด workspace สำหรับแอดมินจะไม่รู้สึกเหมือนกำลังบูตระบบปฏิบัติการอีกตัว

ขนาดเล็กแบบนี้สำคัญบน jump box, แล็ปท็อปเก่า และ VM ที่ทุกบริการเบื้องหลังที่เพิ่มเข้ามาคืออีกสิ่งหนึ่งที่ต้องระแวง KKTerm เปิดขึ้นมา กู้คืน workspace ของคุณ แล้วถอยออกไปให้ทำงานต่อ

### กริดหลาย Pane ผสมได้ตามงานจริง

หนึ่ง Tab สามารถมีกริดของ Pane ได้ และ Pane เหล่านั้นไม่จำเป็นต้องเป็นชนิดเดียวกัน วาง SSH ข้าง SFTP, วาง PowerShell ในเครื่องไว้ใต้ RDP Session, วาง VNC ข้าง Web UI ของเราเตอร์ หรือวางตัวจัดการไฟล์ข้างเทอร์มินัลที่กำลังย้ายไฟล์อยู่

นี่คือ workspace เดียวสำหรับรูปร่างจริงที่ยุ่งเหยิงของงานแอดมิน: ผสมชนิดของ Connection, ปรับขนาดกริด, ทำให้ live Sessions ยังอยู่ และเลิก Alt-Tab ผ่านกองหน้าต่างเสียที

<p align="center">
  <img src="docs/assets/screenshots/multi-pane.png" alt="Tab หนึ่งที่แบ่งเป็นสี่ pane ของชนิดการเชื่อมต่อต่างกัน" width="720" />
</p>


### ผู้ช่วย AI ที่สั่งงานเทอร์มินัลให้คุณ

เดโม "AI ในเทอร์มินัล" ส่วนใหญ่หยุดอยู่แค่แชต ผู้ช่วยของ KKTerm ทำงาน *ข้างใน* เซสชันของคุณ: คุณยื่นบริบทจากสิ่งที่อยู่บนหน้าจออยู่แล้วให้มัน แล้วมันก็ลงมือกับเครื่องที่คุณเชื่อมต่ออยู่ — โดยมีมนุษย์อยู่ในลูปอนุมัติเสมอ

**ยื่นบริบทให้มันตรง ๆ** ไม่ต้องคัดลอกวางไปมา:

- **เพิ่ม terminal buffer เข้า context** จะดึง scrollback ของเซสชันในเครื่องหรือรีโมตที่กำลังรันอยู่เข้าบทสนทนาโดยตรง เพื่อให้ "ทำไม build นี้ถึงล้มเหลว?" กลายเป็นสิ่งที่มันอ่านได้จริง ๆ
- **เมนูภาพหน้าจอ** จับภาพเป็นพื้นที่หรือทั้ง Pane แล้วหย่อนรูปเข้าแชต เพื่อให้ "ทำไมไดอะล็อกนี้หน้าตาแปลก ๆ?" เป็นคำถามที่มันตอบได้
- **แนบไฟล์** และ **บริบทหน้า Dashboard / IT Ops** ปัจจุบัน เพื่อให้มันคิดบนสิ่งที่คุณกำลังดูอยู่จริง ไม่ใช่คำอธิบายคลุมเครือ

**ปล่อยให้มันลงมือ — แต่ต้องผ่านการอนุมัติ** ผู้ช่วยสามารถรันคำสั่งในเทอร์มินัลของคุณ เปิด Connection และวาง widget บนแดชบอร์ดได้ แต่ส่วนที่เสี่ยงยังคงถูกควบคุม:

- **เลือกว่ามันแตะอะไรได้บ้าง** — เปิดหรือปิดทั้งกลุ่มเครื่องมือ (Dashboard / Connections / Live Sessions)
- **เลือกว่ามันถามยังไง** — `Prompt` (ค่าเริ่มต้น ถามทุกครั้ง) หรือ `Allow All` (คุณเป็นผู้ใหญ่แล้ว คุณเซ็นใบยินยอมแล้ว)
- อะไรก็ตามที่หน้าตาเหมือน `rm -rf` จะถูกทำเครื่องหมายว่าอันตราย — พร้อมแสดงเหตุผลบนการ์ดอนุมัติ — แล้วรอคำว่าใช่จากมนุษย์อย่างชัดเจน AI ไม่สามารถแอบรันคำสั่งทำลายล้างได้ เพียงเพราะมีใครเล่นแสบฝัง prompt injection ไว้ในหน้า man

**พกสมองมาเอง** มันคุยกับ OpenAI, Anthropic, OpenRouter, DeepSeek, Grok, Azure OpenAI, LiteLLM, GitHub Copilot, Ollama, NVIDIA หรือ endpoint ใด ๆ ที่เข้ากันได้กับ OpenAI — และยังรันบน **Claude Code CLI** หรือ **Codex CLI** เป็นแบ็กเอนด์ได้ โดยใช้การล็อกอินและการสมัครสมาชิก `claude` / `codex` ที่คุณมีอยู่แล้ว แทนที่จะต้องมีคีย์ API แยกต่างหาก คีย์ API ของคุณไปอยู่ใน keychain ของ OS

<p align="center">
  <img src="docs/assets/screenshots/ai-assistant.png" alt="แผงผู้ช่วย AI พร้อมสวิตช์การเข้าถึงเครื่องมือและโหมดอนุมัติ" width="720" />
</p>


### แดชบอร์ดที่ไม่เสแสร้งว่าเป็น Grafana

Dashboard คือกริดของ widget ที่ลากและปรับขนาดได้ มันไม่ได้มีไว้สำหรับ observability ระดับเพตะไบต์ — มันมีไว้สำหรับ "ฉันอยากได้ปุ่มเปิดแอปโปรด 5 ตัว และแผงแสดง uptime ของโฮสต์ SSH ของฉัน *ข้าง ๆ* แชตของฉัน"

#### Widget ที่ AI สร้าง — บอกมา แล้วได้เลย

นี่คือส่วนที่เราตื่นเต้นจริง ๆ คุณไม่ได้เลือกจากมาร์เก็ตเพลส และไม่ต้องเขียน JavaScript คุณแค่ **บอกผู้ช่วย AI ว่าคุณต้องการอะไร** แล้วมันก็สร้าง widget ตรงนั้นเลย บนแดชบอร์ดของคุณ:

> *"เพิ่ม widget ที่แสดง 5 commit ล่าสุดของ repo หลักของฉันเป็นรายการ"*
> *"ทำ widget โพสต์อิตให้ฉันเก็บโพยเวรอยู่เวรหน่อย"*
> *"สร้าง widget ที่ ping เราเตอร์บ้านฉันทุก 30 วินาทีและแสดงเขียว/แดง"*
> *"ฉันอยากได้นาฬิกาจับเวลา สไตล์ตามใจเลย เซอร์ไพรส์ฉันที"*

บางอันเป็นแผงแสดงผลธรรมดา (markdown, เช็กลิสต์, ตัวเลขใหญ่ ๆ ตัวเดียว); บางอันรันโค้ดสด ๆ ในแซนด์บ็อกซ์แยกที่คุณอนุมัติ ทุก widget ที่คุณเก็บไว้เป็นของคุณ — มันถูกบันทึกพร้อมสี ไอคอน และชื่อของมันเอง และคุณมีหลายชุดขนาดต่างกันได้ ลบทิ้งด้วยคลิกขวาเมื่อความวิเศษจางหาย

<p align="center">
  <img src="docs/assets/screenshots/ai-widgets.png" alt="กริดแดชบอร์ดที่เต็มไปด้วย widget ที่ AI สร้าง" width="720" />
</p>


#### พื้นหลังเคลื่อนไหวของแดชบอร์ด/เทอร์มินัล (เพราะเราอยากทำ)

เลือกอารมณ์ — ต่อมุมมองแดชบอร์ด *หรือไว้ด้านหลังเทอร์มินัลใดก็ได้* — จากพื้นหลังเคลื่อนไหวบน canvas **36 แบบ**:

| อารมณ์ | พื้นหลัง |
| --- | --- |
| สงบ | `fuji`, `aurora`, `halftone`, `clouds`, `ocean`, `raindrops`, `rainywindow`, `frostedWindow`, `snow`, `sakura`, `fireflies`, `bubbles`, `aquarium`, `jellyfish`, `lighthouse`, `balloons`, `ricefield`, `lanterns` |
| อวกาศ | `starfield`, `nebula`, `orbitals` |
| อบอุ่น | `embers`, `lava`, `ink`, `dunes`, `savanna` |
| กี๊ก | `matrix`, `topo`, `synthwave`, `circuit`, `crystals` |
| ปั่นป่วน | `cyberpunk`, `taipei101`, `thunderstorm`, `confetti`, `particleCursor` |

ตัวเลือกเดียวกันนี้ยังรองรับ pane เทอร์มินัลของคุณด้วย คุณจึงวาง `matrix` ไว้ด้านหลังเซสชัน SSH ที่กำลังรันอยู่ได้ มันหยุดชั่วคราวเมื่อคุณไปอยู่ที่อื่น จึงแทบไม่กินทรัพยากร จับคู่ `matrix` กับผู้ช่วย AI ของคุณ เพื่ออารมณ์ที่บอกว่า "ฉันโปรดักทีฟสุด ๆ และอาจจะอยู่ในหนังของพี่น้อง Wachowski" หรือเลือก `ocean` แล้วดูเป็นคนจริงจัง เราไม่ตัดสินทั้งสองทางเลือก

<p align="center">
  <img src="docs/assets/screenshots/backgrounds.png" alt="พื้นหลังเคลื่อนไหวหลายแบบวางเรียงข้างกัน" width="720" />
</p>


### ทำให้เอเจนต์ AI ของคุณยังมีชีวิต

นี่คือฟีเจอร์ที่สองที่คนตกหลุมรัก เทอร์มินัล SSH ของ KKTerm สามารถส่งคุณเข้าไปใน **เซสชัน tmux ที่ตั้งชื่อไว้** บนโฮสต์รีโมตได้โดยตรง ซึ่งรอดจากการเชื่อมต่อใหม่:

- เปิดการเชื่อมต่อ SSH ที่เปิด tmux แล้วเริ่ม `claude`, `codex`, `gemini-cli`, `cursor-agent` หรือเอเจนต์ที่รันยาว ๆ ตัวไหนก็ได้ที่คุณชอบ
- ปิดฝาแล็ปท็อป เปิดอีกครั้ง แผงจะกลับไปเชื่อมต่อใหม่อย่างเงียบ ๆ — เอเจนต์ยังรันอยู่ ยังมี scrollback อยู่ ยังอยู่กลางคันของสิ่งที่มันทำ
- เน็ตกระตุก? KKTerm เชื่อมต่อกลับเข้าเซสชันเดิมอย่างเงียบ ๆ โดยไม่รบกวนคุณ
- อยากให้ผู้ช่วยช่วยไหม? "เพิ่ม terminal buffer เข้า context" จะดึงเซสชันรีโมตทั้งหมดเข้ามาในบทสนทนา เพื่อให้ AI ในเครื่องของคุณเข้าใจว่าเอเจนต์รีโมตกำลังทำอะไรอยู่

ถ้าคุณเคยเสียเซสชัน `claude` หรือ `codex` ที่รันมาหกชั่วโมงให้กับ Wi-Fi โรงแรมที่ไม่นิ่ง ฟีเจอร์เดียวนี้ก็คุ้มค่าแอปแล้ว (แอปฟรี แต่ฟีเจอร์นี้ก็ยังคุ้มอยู่ดี)

เชลล์ในเครื่องก็มีลูกเล่นเดียวกันบน Windows: pane PowerShell รันอยู่ใน **psmux** ซึ่งเป็นโคลน tmux เนทีฟได้ เพื่อให้งานในเครื่องที่รันยาว ๆ รอดจาก Pane ที่ถูกปิดเหมือนกับฝั่งรีโมต

<p align="center">
  <img src="docs/assets/screenshots/tmux-reattach.png" alt="SSH pane กลับไปเชื่อมต่อเซสชัน tmux ที่ตั้งชื่อไว้ใหม่หลังเชื่อมต่อใหม่" width="720" />
</p>


### แยกโลกของคุณออกจากกันด้วย Workspaces

โฮมแล็บ งานประจำ และเซิร์ฟเวอร์ของลูกค้ารายนั้นไม่ควรอยู่ในรายการเดียวกัน **Workspaces** คือกล่อง Connection ที่ตั้งชื่อและแยกออกจากกัน ที่คุณสลับได้จาก Activity Rail การสลับจะจัดขอบเขตใหม่ให้เฉพาะทรีการเชื่อมต่อเท่านั้น — Sessions ที่เปิดอยู่ Dashboard และการตั้งค่าของคุณยังอยู่ที่เดิม — ดังนั้นการเปลี่ยนบริบทจึงใช้แค่คลิกเดียว ไม่ใช่การรีสตาร์ต

<p align="center">
  <img src="docs/assets/screenshots/workspaces.png" alt="ตัวสลับ workspace ใน activity rail" width="720" />
</p>


### แต่งให้ถูกใจ: ธีมสี

พื้นหลังคือส่วนสนุก ส่วน **ธีมสี** คือสิ่งที่คุณจ้องมองจริง ๆ ทั้งวัน KKTerm มาพร้อมชุดสี **ยี่สิบหกแบบ** ที่ปรับโฉมโครมทั้งแอป — Activity Rail, ทรีการเชื่อมต่อ, แท็บ, ไดอะล็อก — พร้อมตัวอย่างย่อแบบสดของแต่ละแบบใน ตั้งค่า ▸ ลักษณะ:

| อารมณ์ | ชุดสี |
| --- | --- |
| กลาง ๆ | `Default`, `Dark`, `Light`, `Match OS` (ตามโหมดสว่าง/มืดของระบบ), `Mac` |
| สีสัน | `Orange`, `Purple`, `Pink`, `Confetti`, `Bubble Tea` |
| กลิ่นอายท้องถิ่น | `Green Kuai Kuai` (ใช่ ขนมตัวนั้น), `Blue See`, `Blue, Green and White`, `Semiconductor` |

ไม่ว่าคุณเลือกชุดสีไหน เทอร์มินัลก็ยังคงพาเลตต์โทนมืดของตัวเองไว้ เพื่อให้เชลล์ของคุณอ่านง่ายอยู่เสมอ ขณะที่ส่วนที่เหลือของแอปเข้ากับอารมณ์ของคุณ

<p align="center">
  <img src="docs/assets/screenshots/color-themes.png" alt="กริดชุดสีในหน้าตั้งค่าพร้อมตัวอย่างแบบสด" width="720" />
</p>


### Install Helper (เฉพาะ Windows)

การตั้งค่าเครื่อง Windows ใหม่เพื่อทำงาน dev มักหมายถึงสิบแท็บเบราว์เซอร์และ "ถัดไป ถัดไป เสร็จสิ้น" อีกเพียบ **Install Helper** คือแคตตาล็อกในตัวที่ค้นหา ติดตั้ง อัปเดต และถอนการติดตั้งเครื่องมือที่ไม่งั้นคุณต้องไล่หาด้วยมือ — โดยไม่ต้องออกจาก KKTerm:

- **Essentials** — winget, Node (ผ่าน nvm-windows), Python (ผ่าน uv), Git
- **AI Agents** — Claude Code, Codex, Antigravity, OpenCode และ CLI กับแอปเดสก์ท็อปของเอเจนต์เขียนโค้ดอื่น ๆ
- **AI Platforms** — สแต็กในเครื่อง/โฮสต์เองอย่าง Ollama, n8n, Open WebUI, Flowise และ Langflow เปิดและจัดการให้คุณ
- **Development** — เอดิเตอร์, คอนเทนเนอร์, เครื่องมือ API, WSL และดิสโทรของมัน, Rustup
- **Windows Power User** — PowerToys, PowerShell 7, psmux, Sysinternals, Everything, Ditto
- **Remote Access** — Tailscale, RustDesk
- **Utilities** — Notepad++, ripgrep, jq, fzf, 7-Zip, Oh My Posh, FFmpeg และอื่น ๆ

มันตรวจจับว่าติดตั้งอะไรไว้แล้ว ทำเครื่องหมายว่าตัวไหนมีอัปเดต และ **อัปเดตทั้งหมด** จะไล่คิวให้คุณ พรอมต์ UAC ยังชัดเจน ไม่มีอะไรติดตั้งแบบเงียบ ๆ และแคตตาล็อกทั้งหมดมาพร้อมในแอป — ไม่ต้องมีบัญชีเพิ่ม ไม่มีเทเลเมทรีเบื้องหลัง

> macOS และ Linux มีตัวจัดการแพ็กเกจที่คุณรักอยู่แล้ว Install Helper จึงเป็นความสะดวกเฉพาะ Windows และไม่ได้อยู่ในบิลด์เหล่านั้น

<p align="center">
  <img src="docs/assets/screenshots/install-helper.png" alt="แคตตาล็อก Install Helper พร้อมเครื่องมือที่ติดตั้งแล้วและที่ติดตั้งได้" width="720" />
</p>


---

## KKTerm ไม่ใช่อะไร

รายการสั้น ๆ เพราะความซื่อสัตย์สร้างความไว้วางใจ:

- **ไม่ใช่ผลิตภัณฑ์คลาวด์** ไม่มีซิงค์ ไม่มีบัญชีทีม ไม่มีแพ็กเกจ SaaS ถ้าวันไหนคุณเห็นไดอะล็อก "ลงชื่อเข้าใช้ KKTerm" แปลว่ามีบางอย่างผิดพลาดอย่างหายนะ
- **ไม่เสแสร้งว่าทุกระบบปฏิบัติการเหมือนกัน** KKTerm มีบิลด์สำหรับ Windows, macOS และ Linux แต่ยังบอกขอบเขตฟีเจอร์เฉพาะแพลตฟอร์มอย่างชัดเจน
- **ไม่ใช่เอเจนต์ AI อัตโนมัติ** ผู้ช่วยเสนอ มนุษย์ตัดสิน `Allow All` เป็นทางเลือกที่คุณเลือกเอง ไม่ใช่ค่าเริ่มต้น
- **ไม่ใช่ของทดแทน Grafana / Datadog** Dashboard มีไว้สำหรับหน้าควบคุมส่วนตัว ไม่ใช่ observability สำหรับโฮสต์หมื่นเครื่อง
- **ไม่ใช่ Kubernetes IDE** มันคือพื้นที่ทำงานแอดมินที่เน้นเทอร์มินัล กรุณาอย่าขอให้มันเรนเดอร์ Helm chart

ถ้าข้อใดข้อหนึ่ง *เคย* เป็นจุดตัดสินใจ — ก็ยุติธรรมดี เจอกันใน v2

---

## รับ KKTerm

**[ดาวน์โหลด KKTerm รุ่นล่าสุด](https://github.com/ryantsai/KKTerm/releases/latest)** เลือกแพ็กเกจสำหรับแพลตฟอร์มของคุณ แล้วเปิดใช้งาน ตัวติดตั้ง Windows ตอนนี้ **ยังไม่ได้เซ็น** — การเซ็นรีลีสอยู่ในโรดแมป ดังนั้นจนกว่าจะถึงตอนนั้น แอนติไวรัสของคุณอาจมองคุณด้วยสายตาเข้มงวด นั่นเป็นเรื่องปกติ

อยากบิลด์จากซอร์สหรือมีส่วนร่วม? ทุกอย่างที่คุณต้องการอยู่ใน [`CONTRIBUTING.md`](CONTRIBUTING.md)

---

## โรดแมป (ฉบับสั้น)

- ขัดเกลารีลีสข้ามแพลตฟอร์ม
- ขัดเกลาการเซ็นรีลีส
- การถ่ายโอนไฟล์ที่ทรงพลังขึ้น (รับโอนต่อ, ซิงค์โฟลเดอร์, บีบอัด/แตกไฟล์)
- การแชร์คลิปบอร์ดและอุปกรณ์ของ Remote Desktop ที่สมบูรณ์ขึ้น
- widget แดชบอร์ดในตัวเพิ่มขึ้น
- ฟังก์ชันอัตโนมัติของ IT Ops เพิ่มขึ้น

ฉบับเต็มและอัปเดตบ่อย: [`docs/ROADMAP.md`](docs/ROADMAP.md)

---

## มีส่วนร่วม

เรายินดีมากถ้ามีคนช่วย จริง ๆ แม้แต่เรื่องเล็ก ๆ ก็มีความหมาย:

- **ลองบิลด์ dev** แล้วเปิด issue เมื่อมีอะไรรู้สึกแปลก ๆ "รู้สึกแปลก ๆ" เป็นรายงานบั๊กที่ถูกต้อง เราจะขุดไปกับคุณ
- **แปลภาษา** ภาษาอังกฤษคือแหล่งความจริง มีอีกสิบสามภาษาอยู่ข้าง ๆ
- **เพิ่ม widget แดชบอร์ด** หยิบไอเดียเล็ก ๆ ส่งมันออกมา เรียนรู้รูปแบบ
- **ปรับปรุงคู่มือ** ถ้าคุณใช้ฟีเจอร์หนึ่งแล้วเอกสารช่วยไม่ได้ PR ที่แก้เรื่องนั้นมีค่าดั่งทอง

การตั้งค่าครบถ้วน โครงสร้างโปรเจกต์ และเช็กลิสต์ PR อยู่ใน [`CONTRIBUTING.md`](CONTRIBUTING.md) หาจุดเริ่มต้นอยู่หรือ? กรอง issue ที่เปิดอยู่ด้วย [`good first issue`](https://github.com/ryantsai/KKTerm/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) หรือ [`help wanted`](https://github.com/ryantsai/KKTerm/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)

---

## เอกสารโปรเจกต์

- [บริบทผลิตภัณฑ์](CONTEXT.md) — ภาษาเฉพาะโดเมนที่คุณควรยึดตาม
- [สถาปัตยกรรม](docs/ARCHITECTURE.md) — แผนที่โมดูล ที่ที่ควรวางโค้ดใหม่
- [คู่มือผู้ใช้](docs/manual/INDEX.md) — เดินดูทีละฟีเจอร์
- [โรดแมป](docs/ROADMAP.md)
- [สถาปัตยกรรม Dashboard](docs/DASHBOARD.md)
- [เซิร์ฟเวอร์ MCP ในตัว](docs/MCP.md)
- [คู่มือผู้ให้บริการ AI](docs/AI_PROVIDERS.md)

---

## ประวัติดาว

<a href="https://www.star-history.com/#ryantsai/KKTerm&Date">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ryantsai/KKTerm&type=Date&theme=dark" />
    <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ryantsai/KKTerm&type=Date" />
    <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ryantsai/KKTerm&type=Date" />
  </picture>
</a>

ถ้าคุณมาถึงตรงนี้แล้วยังไม่ได้กดดาว — รออะไรอยู่ บัตรเชิญส่วนตัวหรือ? ถือว่านี่คือบัตรเชิญส่วนตัวนั้น

⭐ **[กดดาวให้ KKTerm บน GitHub](https://github.com/ryantsai/KKTerm)** — แค่คลิกเดียว ทำให้ทั้งสัปดาห์ของผู้ดูแลสดใส คิดเสียว่าเป็น 乖乖 ดิจิทัลบนแร็ค

---

## สัญญาอนุญาต

MIT ดู [LICENSE](LICENSE) ใช้มัน fork มัน ส่งมันออกไป เอามันไปไว้ในโฮมแล็บที่ไม่มีใครหาเจอ — นั่นแหละข้อตกลง
