# Octoweb มีบ้านของตัวเองแล้ว — และมันยังรันบนโมเดลของคุณ ไม่ใช่ของเรา

> Octoweb เบราว์เซอร์แบบ keyboard-first สำหรับ macOS ที่เราแจกฟรี ย้ายออกจากเมนูผลิตภัณฑ์ของ Octomind ไปอยู่ที่ octoweb.xyz แล้ว และนี่คือจังหวะดีที่จะตอบคำถามที่เราโดนถามซ้ำ ๆ: ไม่ มันไม่ได้ล็อกไว้กับคลาวด์ของเรา ตัวเบราว์เซอร์ไม่เคยเรียกผู้ให้บริการโมเดลเลยสักครั้ง — ตัวที่เรียกคือ Octomind agent ในเครื่องของคุณ ซึ่งจะยิงไปที่ Octomind Cloud ด้วย key เดียว หรือผู้ให้บริการเจ้าไหนก็ได้จาก 28 เจ้า รวมถึงเครื่อง Ollama ที่ตั้งอยู่บนโต๊ะคุณ พร้อมสรุปสิ่งที่สี่รีลีสในสามสัปดาห์เพิ่มเข้ามา: เวิร์กสเปซ, MCP ที่แยกเส้นทางตามเวิร์กสเปซ, อินพุตเนทีฟที่หน้าเว็บเชื่อถือ และ A2UI v1.0 โอเพนซอร์ส ภายใต้ Apache-2.0

# Octoweb มีบ้านของตัวเองแล้ว — และมันยังรันบนโมเดลของคุณ ไม่ใช่ของเรา

สามสัปดาห์ก่อนเรา[แนะนำ Octoweb](/blog/introducing-octoweb-keyboard-first-ai-browser) — เบราว์เซอร์ WebKit แบบ keyboard-first ที่เราแอบใช้ชีวิตอยู่ในนั้นมาตั้งแต่เดือนมีนาคม เสียงตอบรับดีกว่าที่คิดไว้ และมันมาพร้อมคำถามข้อเดียวที่ติดมาด้วยเสมอ ถามกันมาเป็นสิบน้ำเสียง:

_แปลว่ามันใช้ได้กับคลาวด์ของพวกคุณเท่านั้นใช่ไหม_

จะคิดแบบนั้นก็ไม่แปลก sidebar รันบน [Octomind](https://octomind.run) ซึ่งเป็นชื่อเดียวกับคลาวด์แบบเสียเงินของเรา แล้วโพสต์นั้นก็เขียนว่า "ติดตั้ง Octomind แล้วลงชื่อเข้าใช้" คนอ่านที่มีเหตุผลย่อมสรุปว่าเบราว์เซอร์คือกรวยดูดลูกค้า — ว่าการย้ายเบราว์เซอร์แปลว่าต้องมาเช่าโมเดลจากเรา

มันไม่ใช่ และไม่เคยเป็นแบบนั้นเลย การที่คำตอบนี้ไม่ชัดในตัวเองคือความล้มเหลวด้านเอกสารที่เรารับผิดเอง เริ่มตั้งแต่ URL: หน้าผลิตภัณฑ์อยู่ที่ `octomind.run/product/octoweb` ซึ่งบอกว่า _นี่คือฟีเจอร์ของสิ่งที่คุณต้องจ่ายเงิน_ ตั้งแต่ก่อนคุณจะได้อ่านสักคำ

เราก็เลยแก้ URL ก่อน แล้วค่อยแก้คำอธิบาย

**ตอนนี้ Octoweb อยู่ที่ [octoweb.xyz](https://octoweb.xyz) แล้ว** ฟรี ภายใต้ Apache-2.0 macOS 13 ขึ้นไป ไม่ต้องมีบัญชี และตัวเบราว์เซอร์ไม่เคยเรียกผู้ให้บริการโมเดลเลยสักครั้งในชีวิตของมัน — เพราะมันไม่มีโค้ดสำหรับทำแบบนั้นอยู่ด้วยซ้ำ

---

## บ้านหลังใหม่

<figure class="ow"><div class="ow-bar"><span class="ow-dot ow-red"></span><span class="ow-dot ow-yellow"></span><span class="ow-dot ow-green"></span><span class="ow-omni">octoweb.xyz</span></div><div class="ow-body"><div class="ow-palette"><div class="ow-query">octoweb short<span class="ow-caret"></span></div><ul class="ow-results"><li class="ow-active"><span class="ow-badge">TAB</span><span class="ow-title">ปุ่มลัดคีย์บอร์ด — ครบทุกปุ่ม</span><span class="ow-host">octoweb.xyz/shortcuts</span><span class="ow-key">⌘1</span></li><li><span class="ow-badge">TAB</span><span class="ow-title">MCP server — 29 เครื่องมือที่เอเจนต์ของคุณเรียกได้</span><span class="ow-host">octoweb.xyz/mcp</span><span class="ow-key">⌘2</span></li><li><span class="ow-badge ow-hist">ประวัติ</span><span class="ow-title">เบราว์เซอร์เก็บอะไรไว้ และส่งอะไรออกไป</span><span class="ow-host">octoweb.xyz/privacy</span><span class="ow-key">⌘3</span></li></ul><div class="ow-actions"><span>↵ เปิด</span><span>⌘↵ ไปที่ URL</span><span class="ow-ai">⌘⇧↵ ถาม AI</span></div></div></div></figure>

นั่นคือ command palette — `⌘⇧P` — ที่ fuzzy-match ข้ามแท็บที่เปิดอยู่และประวัติ และเป็นวิธีเดินทางไปทุกที่ใน Octoweb มันยังเป็นตัวอย่างที่สะท้อนเว็บไซต์ใหม่ได้ดีด้วย เพราะเว็บนั้นเป็นเอกสารอ้างอิงเสียส่วนใหญ่ มากกว่าจะเป็นหน้าการตลาด:

- **[/shortcuts](https://octoweb.xyz/shortcuts)** — ครบทั้ง 48 ปุ่มลัด แบ่งเป็นหกกลุ่ม รวมถึงตัวที่มีอยู่เฉพาะใน palette และในกล่อง prompt ของ AI
- **[/mcp](https://octoweb.xyz/mcp)** — เครื่องมือ MCP ครบทั้ง 29 ตัว จัดกลุ่มตามหน้าที่ พร้อมคอนฟิกให้ก๊อปวางสำหรับ Claude Code, Claude Desktop และ Cursor
- **[/privacy](https://octoweb.xyz/privacy)** — ไฟล์แต่ละไฟล์ไปตกอยู่ตรงไหนบนดิสก์ของคุณ อะไรที่ bind กับ loopback และหมายเหตุแบบตรง ๆ ว่า _เว็บไซต์_ รัน Google Analytics ส่วน _ตัวเบราว์เซอร์_ ไม่มี telemetry เลยสักตัว
- **[/blog](https://octoweb.xyz/blog)** — โพสต์สั้น ๆ ที่ว่าด้วยตัวผลิตภัณฑ์ โพสต์แบบที่คุณกำลังอ่านนี้ยังอยู่บน muvon.io ส่วนที่นั่นจะเป็นบ้านของ release notes

มันคือเว็บ SvelteKit แบบ static บน Cloudflare, prerender ไว้ทั้งหมด, ไม่มีการ fetch ฝั่งไคลเอนต์ — สแตกเดียวกับหน้าที่คุณกำลังอ่านอยู่ ใช้เวลาทำเย็นเดียว เราน่าจะทำมันตั้งแต่เดือนมีนาคมแล้ว

---

## คำตอบจริง ๆ: มันรันบนโมเดลของใคร

นี่คือส่วนที่สมควรได้ย่อหน้าตรง ๆ ตั้งแต่สามสัปดาห์ก่อน

sidebar ของ Octoweb ไม่ใช่ไคลเอนต์แชต พอคุณกด `⌘⇧A` เบราว์เซอร์จะ spawn โปรเซสลูกขึ้นมาหนึ่งตัว — `octomind acp octoweb:assistant` ที่ถูก sandbox ไว้ — แล้วคุยกับมันผ่าน [Agent Client Protocol](https://github.com/muvon/agent-client-protocol) การเรียกโมเดลทุกครั้งในระบบนี้เกิดขึ้นที่โปรเซสตัวนั้น ลองไล่หา HTTP call ที่ยิงไปหาผู้ให้บริการโมเดลในโค้ด Rust 36,000 บรรทัดของเบราว์เซอร์ดู แล้วคุณจะกลับมามือเปล่า เพราะมันไม่มี เบราว์เซอร์รู้วิธีเรนเดอร์บทสนทนา แต่มันไม่รู้จักว่า OpenAI คืออะไร

เรื่องนี้สำคัญ เพราะมันย้ายคำถาม "จะใช้โมเดลไหน" ทั้งก้อนไปไว้อีกโปรเซสหนึ่งทางซ้าย คือไปอยู่ในคอนฟิกของ Octomind — ซึ่งในนั้นมันเป็นแค่สตริงเดียว:

```toml
[model]
name = "octohub:auto"          # Octomind Cloud, one key, we route it
# name = "anthropic:claude-opus-5"
# name = "openrouter:qwen/qwen3-coder"
# name = "local:qwen3-coder-30b"   # your box, your GPU, your electricity
```

โมเดลต้องเขียนเป็น `provider:model` เสมอ — ใส่มาแค่ชื่อเปล่า ๆ จะถูกปฏิเสธ ไม่ใช่เดาให้ หลัง prefix พวกนั้นคือ [octolib](/blog/octolib-the-engine-behind-our-ai-stack) — เลเยอร์ผู้ให้บริการที่เครื่องมือทุกตัวของ Muvon ใช้ร่วมกัน — ซึ่งตอนนี้รองรับอยู่ **28 เจ้า**: `openrouter`, `openai`, `anthropic`, `google-vertex`, `google-studio`, `groq`, `cerebras`, `deepseek`, `fireworks`, `together`, `xai`, `moonshot`, `minimax`, `nvidia`, `amazon`, `cloudflare`, `zai`, `alibaba` และที่เหลือ

และมีอยู่สอง prefix ที่เป็นหัวใจของโพสต์นี้จริง ๆ:

- **`local:`** ชี้ไปที่เซิร์ฟเวอร์ตัวไหนก็ได้ที่เข้ากันได้กับ OpenAI โดยค่าเริ่มต้นคือ `http://localhost:11434/v1/chat/completions` นั่นคือ Ollama แบบไม่ต้องตั้งอะไรเลย ตั้ง `LOCAL_API_URL` เมื่อไหร่ มันก็กลายเป็น LM Studio ที่พอร์ต 1234, LocalAI ที่ 8080 หรือเครื่อง vLLM ใต้โต๊ะคุณ ไม่มีอะไรออกจากเครื่องเลย
- **`cli:`** ขับ CLI ของเอเจนต์ที่คุณติดตั้งไว้อยู่แล้ว — `codex`, `claude`, `cursor`, `gemini` — ราวกับว่ามันเป็น endpoint ของโมเดล ถ้าคุณจ่ายค่าตัวใดตัวหนึ่งอยู่แล้ว sidebar ก็ใช้ตัวนั้นได้ โดยที่คุณไม่ต้องรับบิลใบที่สอง

และ key ไม่เคยลงไปอยู่ในไฟล์คอนฟิก `octomind config --api-key` ปฏิเสธที่จะเก็บมันให้ — credential ถูกอ่านจาก environment ก่อน แล้วค่อยเป็น `.env` ระดับผู้ใช้ แล้วค่อย `.env` ในโปรเจกต์ key ของ Anthropic ก็เลยไปอยู่ที่เดียวกับ key อื่น ๆ ของคุณ

**แล้ว Octomind Cloud อยู่ตรงไหน:** มันคือเส้นทางที่ _ง่าย_ ไม่ใช่เส้นทางบังคับ `octomind login` คือการลงชื่อเข้าใช้แบบ device code เหมือน `gh auth login` มันเขียน credential ลงไปตัวเดียว — `OCTOHUB_API_KEY` — จากนั้นโมเดลค่าเริ่มต้น `octohub:auto` จะกระจายการเรียกแต่ละครั้งตามวัตถุประสงค์ (main, supervisor, compression) ไปยังโมเดลที่เหมาะสมฝั่งเรา key เดียวแทนที่จะเป็นหกตัว เพดานค่าใช้จ่ายเดียวที่คุณคอยจับตาดูได้ และมี free tier ให้เริ่มต้น เราคิดว่ามันเป็นดีลที่ดี นั่นแหละคือเหตุผลที่มันเป็นค่าเริ่มต้น และถ้าคุณไม่อยากใช้มัน การเลิกใช้ก็อยู่ห่างออกไปแค่เก้าตัวอักษรในไฟล์ TOML — ส่วนแถบบัญชีใน sidebar ก็เป็นแค่ข้อความแจ้งที่ปิดทิ้งได้ ไม่ใช่ประตูที่ล็อกอยู่

<figure class="ow"><div class="ow-bar"><span class="ow-dot ow-red"></span><span class="ow-dot ow-yellow"></span><span class="ow-dot ow-green"></span><span class="ow-omni">github.com/muvon/octoweb/pull/214</span></div><div class="ow-body"><div class="ow-split"><div class="ow-page"><span class="ow-line" style="width:80%"></span><span class="ow-line" style="width:62%"></span><span class="ow-line" style="width:71%"></span><span class="ow-line" style="width:48%"></span><span class="ow-line" style="width:66%"></span></div><aside class="ow-sidebar"><div class="ow-sidebar-head"><span class="ow-agent">octoweb:assistant</span><span class="ow-live">กำลังสตรีม</span></div><div class="ow-model"><span class="ow-model-label">โมเดล</span><span class="ow-model-name">local:qwen3-coder-30b</span></div><div class="ow-msg ow-user">diff นี้เปลี่ยนอะไรที่กระทบลูกค้าเราจริง ๆ บ้าง</div><div class="ow-msg"><p>สามอย่าง และหนึ่งในนั้นเป็น breaking change:</p><span class="ow-line" style="width:88%"></span><span class="ow-line" style="width:63%"></span><div class="ow-a2ui"><span class="ow-a2ui-label">A2UI · การ์ดขออนุมัติ</span><span class="ow-btn ow-btn-primary">เปิด diff</span><span class="ow-btn">ไว้ก่อน</span></div></div><div class="ow-sidebar-input">ถามเกี่ยวกับหน้านี้… <span class="ow-key">↵</span></div></aside></div></div></figure>

แท็กบนส่วนหัวของ sidebar แก้ไขได้ หน้าต่างเดียวกันจึงคุยกับ `octoweb:assistant` อยู่นาทีนี้ แล้วนาทีถัดไปคุยกับเอเจนต์ `developer:rust` ของคุณเองได้ — และตั้งแต่ 0.14.0 ช่องนั้นก็เติมคำอัตโนมัติจากแท็กที่ Octomind ในเครื่องคุณรู้จักจริง ๆ แทนที่จะให้คุณพิมพ์มันแบบเดาสุ่ม

---

## สามสัปดาห์ สี่รีลีส

นับจากโพสต์แนะนำตัวไป Octoweb ปล่อยมาตั้งแต่ 0.11.0 ถึง 0.14.0 — รวม 62 คอมมิต และมีสองอย่างในนั้นที่เปลี่ยนความรู้สึกตอนใช้งานไปเลย

**เวิร์กสเปซ (`⌘⇧O`)** โปรไฟล์ที่แยกขาดจากกัน และเราหมายถึงแยกขาดจริง ๆ: แต่ละเวิร์กสเปซมีแท็บของตัวเอง ประวัติของตัวเอง เซสชัน AI ของตัวเอง ลำดับ MRU ของตัวเอง ช่อง fast-access ของตัวเอง และ `WKWebsiteDataStore` ของตัวเอง — คุกกี้, `localStorage` และแคชจึงไม่มีวันข้ามฝั่งกัน ล็อกอินสองบัญชีบนเว็บเดียวกันพร้อมกันได้ โดยไม่ต้องเล่นละครหน้าต่างไม่ระบุตัวตน นี่คือฟีเจอร์ที่เราไม่รู้ตัวว่าต้องการ จนถึงวันที่เราเลิกต้องเปิดเบราว์เซอร์ตัวที่สองไว้สำหรับโปรเจกต์ลูกค้า

<figure class="ow"><div class="ow-bar"><span class="ow-dot ow-red"></span><span class="ow-dot ow-yellow"></span><span class="ow-dot ow-green"></span><span class="ow-omni">⌘⇧O — เวิร์กสเปซ</span></div><div class="ow-body"><ul class="ow-ws"><li class="ow-active"><span class="ow-key">⌘1</span><span class="ow-title">personal</span><span class="ow-host">14 แท็บ</span></li><li><span class="ow-key">⌘2</span><span class="ow-title">client-acme</span><span class="ow-host">6 แท็บ</span><span class="ow-media">▶ meet.google.com</span></li><li><span class="ow-key">⌘3</span><span class="ow-title">agent-scratch</span><span class="ow-host">2 แท็บ</span><span class="ow-badge">MCP</span></li></ul><div class="ow-actions"><span>แยกคุกกี้ ประวัติ เซสชัน และช่องลัด</span><span class="ow-ai">⌘⇧O เพื่อสลับ</span></div></div></figure>

**ตอนนี้ MCP แยกเส้นทางตามเวิร์กสเปซแล้ว** เซิร์ฟเวอร์ตัวเดียวที่ `localhost:3434/mcp` จะอ่านโทเคน `X-Octoweb-Workspace` แล้วทำงานอยู่ในโปรไฟล์นั้นเท่านั้น แปลว่าเอเจนต์ขับเวิร์กสเปซพื้นหลังได้ — ล็อกอินด้วยบัญชีทดลอง บนคุกกี้ของมันเอง — ขณะที่คุณทำงานในเวิร์กสเปซของคุณต่อไป และมันไม่มีทางหลงเข้ามาในเซสชันของคุณโดยบังเอิญ manifest ของ capability ยังไปไกลกว่านั้น คือปฏิเสธที่จะเปิดเผยเซิร์ฟเวอร์เลยเมื่อไม่มีโทเคนติดมา แทนที่จะถือเอาว่าหมายถึงเวิร์กสเปซที่อยู่บนจอตอนนั้น

ที่เหลือแบบสั้น ๆ และทั้งหมดอยู่ในมือคุณ ไม่ใช่ในมือเรา:

- **อินพุตเนทีฟที่หน้าเว็บเชื่อถือ** การคลิกและการกดคีย์ผ่าน MCP ตอนนี้เป็น `NSEvent` ของ AppKit จริง ๆ ที่ส่งเข้า `WKWebView` ของแท็บนั้น — หน้าเว็บจึงเห็น `isTrusted=true`, user gesture ของแท้, `:hover` ที่ทำงาน และ default action แบบเนทีฟ มันใช้ได้กับแท็บพื้นหลังที่ซ่อนอยู่โดยไม่แย่งโฟกัสของคุณ อีเวนต์ DOM แบบสังเคราะห์ไม่มีวันทำได้ครบทั้งสี่ข้อ
- **ทุกการกระทำตอบกลับว่าอะไรเปลี่ยนไป** การเรียกเครื่องมือทุกครั้งจะคืนสรุปผลกระทบหนึ่งบรรทัด — การนำทาง, URL ของ SPA ที่เปลี่ยน, ข้อความใหม่บนจอ, ไดอะล็อก, กิจกรรมเครือข่าย, โฟกัสที่ขยับ — หรือไม่ก็พูดออกมาตรง ๆ ว่า "ไม่มีการเปลี่ยนแปลงที่สังเกตได้" เอเจนต์จึงเลิกเสียเทิร์นไปกับการอ่านหน้าซ้ำเพื่อดูว่าคลิกของมันโดนหรือเปล่า ส่วน query parameter ที่อ่อนไหวก็ถูกล้างออกจากกิจกรรมเครือข่ายที่รายงานกลับมาระหว่างทาง
- **ตอนนี้ดาวน์โหลดได้แล้ว** แพตช์ตอนรันไทม์ทำให้ WebKit เคารพ `Content-Disposition: attachment` ทั้งใน main frame _และ_ subframe — ซึ่งเป็นแบบที่ Google Drive ใช้ — แล้วชื่อไฟล์ที่ได้ก็โผล่ในสรุปผลกระทบ แม้ตัวหน้าเว็บจะไม่บอกอะไรเลยก็ตาม
- **`browser_dismiss_overlay`** เก็บแบนเนอร์คุกกี้และแบนเนอร์ขอความยินยอมให้ และมันเลือก _Reject_ ก่อนเสมอ — มันจะไม่กดยอมรับแทนคุณ
- **A2UI v1.0** เอเจนต์เรนเดอร์ UI ที่โต้ตอบได้จริง ๆ ใน sidebar ได้ — การ์ด ฟอร์ม ตัวเลือก สไลเดอร์ โมดัล — พร้อม data binding และการตรวจสอบค่า และรอคุณกดอะไรสักอย่างได้นานถึงครึ่งชั่วโมง การกระทำที่มีผลตามมาควรวิ่งผ่านทางนี้: ถามก่อน แล้วค่อยลงมือ
- **แท็บที่มีสื่อกำลังเล่น** ตัวสลับเวิร์กสเปซบอกว่าแท็บไหนกำลังเล่นเสียงหรือวิดีโอ หรือจับไมค์อยู่ — การประชุมที่คุณลืมเปิดค้างไว้ในอีกโปรไฟล์จึงเป็นสิ่งที่หาเจอ ไม่ใช่สิ่งที่ตามหลอกหลอน

---

## สองเรื่องที่เราเขียนผิดไปเมื่อเดือนสิงหาคม

กฎประจำบ้าน: ถ้าโพสต์ที่แล้วเขียนผิด โพสต์ถัดไปต้องบอก

**ปุ่มลัดแบบ global ไม่ได้วิ่งผ่าน CGEventTap** เราเขียนไว้อย่างนั้น แต่โค้ดย้ายออกจากมันตั้งแต่เดือนพฤษภาคมแล้ว CGEventTap ต้องขอสิทธิ์ Accessibility ของ macOS และการที่ของหน้าตาเหมือนเบราว์เซอร์ไปขอสิทธิ์ระดับ keylogger คือดีลที่ไม่คุ้มเลยสำหรับฟีเจอร์ที่ไม่มีใครขอ Octoweb ใช้ local `NSEvent` monitor ของ AppKit แทน — ไม่ต้องขอสิทธิ์อะไรเลย และขอบเขตก็ตรงไปตรงมา: มันเห็นคีย์เฉพาะตอนที่ Octoweb อยู่หน้าสุด คำว่า "ทั้งระบบ" เป็นคำที่ผิดสำหรับดีไซน์ที่ถูก

**ไม่มี passkeys อยู่ในนั้น** โพสต์เดือนสิงหาคมใส่ WebAuthn ไว้ในรายการพื้นฐานที่ปล่อยแล้ว คอมมิตที่เพิ่มมันเข้ามาถูก revert ไปตั้งแต่เดือนพฤษภาคม และเราไม่ทันจับได้ก่อนกดเผยแพร่ มันไม่มีใน 0.14.0

แก้อีกสองจุดเล็ก ๆ ตอนที่ยังอยู่ตรงนี้: MCP server มี 29 เครื่องมือ ไม่ใช่ 26 — `browser_fill_form`, `browser_dismiss_overlay`, `browser_get_playing_tabs` และ `render_ui` มาเพิ่มทีหลัง ส่วน "ราว 25,000 บรรทัด" ตอนนี้คือ 35,972

---

## โหลดไปใช้

```bash
brew install --cask muvon/tap/octoweb
```

macOS 13 ขึ้นไป ทั้ง Apple Silicon และ Intel ไม่ต้องมีบัญชี หรือจะ build เองก็ได้ ใช้แค่ Rust toolchain กับเวลาราวหนึ่งนาที:

```bash
git clone https://github.com/muvon/octoweb
cd octoweb
./build.sh --dev
open dist/Octoweb.app
```

ถ้าไม่ตั้งค่า AI เลยแม้แต่นิดเดียว Octoweb ก็ยังเป็นเบราว์เซอร์: palette, ช่องลัด, เวิร์กสเปซ, find-in-page, การบล็อกคอนเทนต์, การจำศีลแท็บ ส่วน sidebar อยากให้คุณติดตั้ง [Octomind](https://octomind.run) ไว้ข้าง ๆ จากนั้นเรื่องโมเดลก็เป็นการตัดสินใจบรรทัดเดียว — `octomind login` ถ้าจะใช้คลาวด์ของเรา หรือ export key แล้วใส่สตริง `provider:model` ถ้าจะใช้อย่างอื่น เราเองใช้ทั้งสองแบบ บนเครื่องคนละเครื่อง แล้วแต่ว่างานคืออะไรและเน็ตเป็นอย่างไร

ทุกอย่างอยู่ภายใต้ Apache-2.0: [ตัวเบราว์เซอร์](https://github.com/muvon/octoweb), [รันไทม์](https://github.com/muvon/octomind), [เลเยอร์ผู้ให้บริการ](https://github.com/muvon/octolib) ถ้าคุณรันมันกับโมเดลในเครื่องแล้วอะไรบางอย่างช้าหรือโง่กว่าที่ควรจะเป็น [เปิด issue มาได้เลย](https://github.com/muvon/octoweb/issues) — เส้นทางนั้นถูกทดสอบน้อยกว่าเส้นทางคลาวด์ และวิธีแก้อย่างเดียวคือคุณต้องบอกเรา

— Don

_Octoweb เป็นโอเพนซอร์สภายใต้ Apache-2.0 พัฒนาโดย [Muvon Un Limited](https://muvon.io) ตอนนี้มันอยู่ที่ [octoweb.xyz](https://octoweb.xyz) รันบน [Octomind](https://octomind.run) และทำงานกับโมเดลตัวไหนก็ได้ที่คุณชี้ให้มัน [GitHub](https://github.com/muvon/octoweb) — ยินดีรับ issues และ pull requests_
