Rowboat แอปเพื่อนร่วมงาน AI โอเพนซอร์ส 15,800 ดาว ที่เก็บข้อมูลงานเป็นไฟล์ Markdown บนเครื่อง แต่คำว่า local-first การันตีแค่ไหน
Rowboat คือแอปเดสก์ท็อปเพื่อนร่วมงาน AI แบบโอเพนซอร์ส ที่เก็บอีเมล โน้ตประชุม และข้อมูลที่แอปจำไว้เกี่ยวกับงานทั้งหมดเป็นไฟล์ Markdown หรือไฟล์ข้อความธรรมดาบนเครื่องเรา มันชูคำว่า local-first แต่คำนี้การันตีแค่ว่าข้อมูลอยู่บนเครื่อง ไม่ได้แปลว่าไม่มีอะไรออกไปข้างนอก

Rowboat คือแอปเดสก์ท็อปเพื่อนร่วมงาน AI แบบโอเพนซอร์ส ที่เปิดขึ้นมาแล้วไม่ใช่ช่องแชทให้พิมพ์คุยเหมือนเครื่องมือ AI ทั่วไป แต่เป็นหน้าจอทำงานเต็ม ๆ ที่คอยจำงานของเราไว้
ลองนึกภาพเครื่องมือ AI ที่ใช้อยู่ทุกวัน ถ้ามันไม่ใช่กล่องแชทอีกต่อไป แต่กลายเป็นแอปทำงานจริงที่รู้ว่าเราคุยอะไรกับใคร ประชุมเรื่องไหน ค้างงานอะไรไว้ หน้าตามันจะเป็นแบบไหน
จุดที่คนพูดถึง Rowboat มากที่สุดกลับไม่ใช่หน้าตา แต่เป็นคำว่า local-first แนวคิดนี้ให้ข้อมูลงานของเราอยู่บนเครื่องเราเป็นหลัก ในรูปไฟล์ข้อความธรรมดาที่เราเปิดอ่านและแก้เองได้ คำนี้กำลังฮิตในหมู่คนที่ห่วงว่าข้อมูลงานของตัวเองจะไปนอนอยู่บนคลาวด์ของใครก็ไม่รู้ แต่ยังไม่ค่อยมีใครแยกให้ชัดว่ามันการันตีอะไรและไม่การันตีอะไร วิธีเข้าใจที่ชัดที่สุดจึงต้องเปิด Rowboat ดูของจริง แล้วแยกคำนี้ให้ขาดทีละด้าน
เปิดแอปมาไม่เจอช่องแชท
Rowboat เป็นแอปเดสก์ท็อปที่ลงได้ทั้ง Mac, Windows และ Linux ตัวโปรแกรมเป็นโอเพนซอร์สภายใต้สัญญาอนุญาต Apache-2.0 ที่เปิดให้เอาโค้ดไปดูและนำไปใช้ต่อได้อย่างกว้างขวาง
บน GitHub โปรเจกต์นี้มีดาวสะสมมาแล้วราว 15,800 ดวง จึงไม่ใช่ของที่เพิ่งเกิด ในโพสต์เปิดตัว ทีมผู้สร้างยังอ้างถึงโพสต์ก่อนหน้าเมื่อไม่กี่เดือนก่อน ที่เคยโชว์ระบบความจำตัวนี้มาแล้ว สิ่งที่ใหม่จริงจึงไม่ใช่ระบบความจำ แต่เป็นการวางตำแหน่งตัวเองใหม่เป็นแอปทำงานเต็มตัว
แกนกลางของ Rowboat คือ knowledge graph หรือกราฟความรู้ที่ดึงอีเมล โน้ตประชุม ข้อความจากแชตทีมอย่าง Slack และบทสนทนาที่เราคุยกับตัวช่วย AI มาโยงเข้าหากัน การโยงนี้เป็นแบบ backlink หรือลิงก์กลับไปมาระหว่างโน้ตที่เกี่ยวข้องกัน สไตล์เดียวกับโปรแกรมจดโน้ตอย่าง Obsidian
จุดต่างอยู่ตรงนี้ เครื่องมือ AI ส่วนใหญ่สร้างบริบทขึ้นใหม่แทบทุกครั้งที่เราถาม ด้วยการวิ่งไปค้นบันทึกสนทนาเก่ามาปะติดปะต่อ ส่วน Rowboat เลือกอีกทาง มันเก็บความรู้ไว้ยาว ๆ บริบทเลยสะสมทับกันขึ้นเรื่อย ๆ ความสัมพันธ์ระหว่างเรื่องเปิดดูได้ และโน้ตทุกอันเราแก้เองได้ ไม่ได้ซ่อนอยู่ในตัวโมเดล
ที่ทีมผู้สร้างอยากได้คือแอปทำงาน ไม่ใช่แอปแชท
ทีมผู้สร้างอธิบายที่มาของแนวคิดนี้ไว้เองในโพสต์ Show HN หรือโพสต์เปิดตัวโปรเจกต์บนเว็บ Hacker News พวกเขาบอกว่า แอปเดสก์ท็อปของ Claude ผู้ช่วย AI จาก Anthropic นั้นเจ๋งมาก แต่พอเอามาใช้ทำงานจริงทุกวัน กลับอยากให้มันเป็นแอปทำงานเต็มตัวมากกว่าแอปแชท
พวกเขาถึงกับตั้งชื่อหัวข้อโพสต์ว่าเป็นทางเลือกแทน Claude Desktop แต่ต้องเน้นว่านี่เป็นคำที่ทีมผู้สร้างใช้เรียกตัวเอง ไม่ใช่ข้อสรุปจากคนนอกที่ไปทดสอบมา
และ Rowboat ไม่ได้มาแทนตัวโมเดล AI มันยังต้องเรียกใช้โมเดลจากที่อื่น รวมถึง Claude ผ่าน API key ของเราเอง การใช้ Rowboat จึงไม่ได้แปลว่าได้ใช้ Claude ฟรี
จุดขายจริงคือหน้าจอทำงานเฉพาะด้าน

สิ่งที่ทำให้ Rowboat ไม่เหมือนช่องแชท คือฟีเจอร์ที่เรียกว่า work surfaces หรือหน้าจอทำงานเฉพาะด้าน แต่ละอันทำหน้าที่ต่างกัน แต่ใช้ข้อมูลจาก knowledge graph ก้อนเดียวกัน
อีเมล แยกฉบับสำคัญออกจากฉบับที่เหลือ แล้วร่างคำตอบเตรียมไว้ให้ ยิ่งเราแก้ร่างของมันบ่อยเท่าไร มันยิ่งจดจำสไตล์การเขียนของเราไว้ ทำให้ร่างครั้งต่อ ๆ ไปใกล้กับที่เราเขียนเองมากขึ้น
โน้ตประชุม เป็นตัวจดประชุมที่รันอยู่บนเครื่อง ดักทั้งเสียงจากไมค์และเสียงจากลำโพง ถอดสดเป็นข้อความ สรุปการประชุมออกมาเป็นไฟล์ Markdown หรือไฟล์ข้อความธรรมดา แล้ววนกลับไปอัปเดต knowledge graph ให้เอง
เบราว์เซอร์ในตัว เป็นเบราว์เซอร์ที่แยกขาดจากตัวหลักที่เราใช้ประจำ เราจึงล็อกอินเฉพาะบัญชีที่ยอมให้ตัวช่วย AI เข้าถึงได้ ไม่ปนกับบัญชีส่วนตัวอื่น
code mode เปิด Claude Code หรือ Codex ซึ่งเป็นเครื่องมือ AI ช่วยเขียนโค้ด ให้ทำงานพร้อมกันได้หลายตัว แล้วป้อนบริบทงานที่ Rowboat เก็บไว้ให้ทำงานต่อ ขอย้ำว่ามันไม่ได้มาแทน Claude Code หรือ Codex แต่เป็นตัวเรียกใช้ทั้งสอง
background agents หรือตัวช่วยที่ทำงานเบื้องหลัง จะเริ่มทำงานเองตามเหตุการณ์ เช่น มีอีเมลใหม่เข้า หรือทำตามตารางเวลา เช่น ทุกวันแปดโมงเช้า
apps เปิดให้เราสร้างหน้าจอทำงานของตัวเองขึ้นมาได้ แต่ละแอปมีหน้าตาและตัวช่วยเบื้องหลังเป็นของตัวเอง
เลือกใช้ตัวไหนก็ดูตามงานที่ค้างอยู่ตรงหน้า อีเมลเยอะก็เริ่มจากหน้าอีเมล ประชุมถี่ก็ปล่อยให้ตัวจดประชุมทำงาน สายโค้ดค่อยไปเปิด code mode
ในเดโมทางการ Rowboat โชว์ตัวอย่างที่ร้อยทุกอย่างเข้าด้วยกัน แอปตัวหนึ่งคอยเก็บคำขอฟีเจอร์จากทั้งอีเมล การประชุม และ Slack แล้วจัดอันดับตามว่าเรื่องไหนคนพูดถึงบ่อย คำขอแต่ละอันมีปุ่ม implement ให้กดสั่งงาน พอกดแล้วมันส่งงานตรงเข้า Claude Code เพื่อเขียนโค้ดจริง เท่ากับเปลี่ยนคำขอจากลูกค้าให้กลายเป็นโค้ดที่พร้อมใช้ได้ภายในแอปเดียว โดยไม่ต้องสลับไปมา
local-first การันตีอะไร
ทีนี้มาถึงแก่นของเรื่อง คำว่า local-first ที่ Rowboat ชูขึ้นมา ด้านที่มันการันตีจริงคือเรื่องข้อมูล
ทุกอย่างที่ Rowboat เก็บ ทั้งอีเมล โน้ต บันทึกประชุม และตัว knowledge graph ล้วนเก็บเป็นไฟล์ Markdown ธรรมดาบนเครื่องเรา ไม่ใช่ฟอร์แมตปิดที่ผูกกับ Rowboat ตัวเดียว
แปลว่าเราเปิดอ่านเอง แก้เอง สำรองไว้ หรือลบทิ้งเมื่อไหร่ก็ได้ และถ้าวันหนึ่งอยากย้ายไปใช้โมเดลอื่น ข้อมูลก็ไม่ติดล็อกอยู่กับเจ้าใดเจ้าหนึ่ง แถมตัวแอปยังรันได้โดยไม่ต้องพึ่งเซิร์ฟเวอร์ของทีมผู้สร้าง
ทีมผู้สร้างสรุปนิยามในแบบของตัวเองไว้ตรง ๆ ว่า local-first สำหรับพวกเขาคือข้อมูลอย่างอีเมล โน้ต การประชุม และ knowledge graph อยู่บนเครื่องเราในรูปไฟล์ Markdown ที่อ่านและลบได้ และแอปทำงานได้โดยไม่ต้องพึ่งเซิร์ฟเวอร์ของเขา
ข้อมูลงานทุกอย่างอยู่บนเครื่องเราเป็นไฟล์ Markdown ธรรมดา ที่เปิดอ่าน แก้ สำรอง หรือลบเองได้ทุกเมื่อ
แต่ไม่ได้แปลว่าไม่มีอะไรออกจากเครื่อง

นี่คือด้านที่คนสับสนกันมากที่สุด local-first ไม่ได้แปลว่าไม่มีข้อมูลอะไรออกจากเครื่องเลย
ถ้าเราเลือกใช้โมเดลแบบ hosted หรือโมเดลที่รันอยู่บนคลาวด์ของผู้ให้บริการ เนื้อหางานของเราก็ยังถูกส่งไปให้เจ้าของโมเดลอยู่ดี เพราะตัว Rowboat ไม่ได้ประมวลผลโมเดลเอง ถ้าจะให้ local จริง ต้องตั้งค่าให้รันโมเดลบนเครื่องตัวเองผ่านโปรแกรมอย่าง Ollama หรือ LM Studio แทนการใส่ API key ของโมเดลบนคลาวด์
และไม่ใช่แค่ตัวโมเดล ทุก integration หรือทุกบริการที่เราเชื่อมต่อเข้ากับ Rowboat ก็มีข้อมูลส่งออกไปข้างนอกเหมือนกัน ไม่ว่าจะเป็น Gmail, Slack, ตัวค้นเว็บ Exa หรือ Composio ที่ใช้เชื่อมต่อกับ tool ภายนอก
ในเธรดเดียวกันเองก็มีคนตั้งคำถามกับป้าย local-first ตรง ๆ คนหนึ่งชี้ว่าถ้าเปิดโค้ดดู จะเห็นว่าหลายส่วนยังใช้คลาวด์อยู่: ถอดเสียงพูดเป็นข้อความใช้ Deepgram แปลงข้อความกลับเป็นเสียงพูดใช้ ElevenLabs เก็บสถิติการใช้งานใช้ PostHog และตัวโมเดลก็เรียกผ่านคลาวด์ อีกคนบอกตรง ๆ ว่าทีมนี้เอาคำนี้มาใช้ผิดความหมาย เพราะคนทั่วไปเข้าใจว่า local-first คือโปรแกรมต้องทำงานต่อได้แม้ไม่มีเน็ต แต่ Rowboat ไม่ได้เป็นแบบนั้น
ทั้งหมดนี้เป็นความเห็นในเธรด ไม่ใช่ข้อสรุป แต่มันชี้จุดเดียวกันได้ดี ป้าย local-first บอกแค่ว่าข้อมูลตั้งต้นอยู่กับเรา ไม่ได้แปลว่าไม่มีอะไรส่งออกไปหาบริการข้างนอกเลย ฝั่งทีมผู้สร้างก็ตอบกลับว่าบางบริการเลี่ยงไม่ได้จริง อย่างการค้นเว็บที่ต้องเรียกใช้บริการภายนอก ส่วนเรื่องเสียงเข้าเสียงออก พวกเขาเลือกทางคลาวด์ไว้ก่อนด้วยเหตุผลเรื่องคุณภาพ ถ้ามีคนอยากได้แบบรันในเครื่องค่อยว่ากัน
อ่านจากเอกสาร ไม่ใช่จากการเดา
เพื่อไม่ให้กลายเป็นการเดา ลองดูจากสิ่งที่เอกสารของ Rowboat ระบุไว้จริง
การต่ออีเมลต้องตั้งค่าผ่าน Google setup อย่างเป็นทางการ เพื่อเชื่อม Gmail, Calendar และ Drive ส่วนงานเสียงและงานค้นเว็บต้องใส่ API key ของแต่ละบริการเอง ได้แก่ Deepgram สำหรับแปลงเสียงเป็นข้อความ ElevenLabs สำหรับสร้างเสียงพูด Exa สำหรับค้นเว็บ และ Composio สำหรับเชื่อมต่อกับ tool ภายนอก
แปลว่ามีค่าใช้จ่ายแฝงรออยู่ ไม่ได้ฟรีหมดทั้งก้อน เพราะ API key เหล่านี้หลายตัวเป็นบริการที่คิดเงินตามการใช้งาน
และสิ่งที่เอกสารยังไม่รองรับ คืออีเมลแบบ IMAP หรือมาตรฐานอีเมลทั่วไปที่ไม่ใช่ Gmail ตอนนี้จึงต่อได้เฉพาะ Gmail เป็นหลัก
local-first จึงไม่ใช่ตราประทับที่แปะแล้วจบว่าปลอดภัยหรือไม่ปลอดภัย มันคือเส้นแบ่งเส้นหนึ่ง ด้านที่มันการันตีคือข้อมูลตั้งต้นเป็นของเรา เปิดอ่าน แก้ และลบเองได้ ส่วนข้อมูลอะไรที่ส่งออกไปนอกเครื่องบ้าง เป็นสิ่งที่เราต้องไล่อ่านเอง
ก่อนจะเชื่อป้าย local-first ของเครื่องมือไหน คำถามเดียวที่ต้องถามต่อคือ มีอะไรบ้างที่ยังส่งออกไปข้างนอก
ที่มา:
- rowboatlabs/rowboat บน GitHub จาก Rowboat
- โพสต์ Show HN ของทีม Rowboat
- คลิป Rowboat Work Surfaces จากช่อง RowBoat (YC S24)



