LocalCan
ทางการให้เอเจนต์ AI มี URL สาธารณะ (tunnels) สำหรับ localhost การตรวจสอบปริมาณการรับส่ง HTTP แบบสด การเผยแพร่สแนปช็อต และการควบคุมการเข้าถึง
คุณทำอะไรได้บ้างด้วย LocalCan MCP?
- ตรวจสอบการรับส่งข้อมูลที่บันทึกไว้ — ขอให้ผู้ช่วยของคุณแสดงรายการการแลกเปลี่ยนล่าสุดด้วย
list_trafficหรือดึงคำขอ/การตอบกลับแบบเต็มผ่านget_exchangeในรูปแบบ markdown, curl หรือ HAR - จัดการทันเนลสาธารณะ — สร้าง, หยุดชั่วคราว, ดำเนินการต่อ หรือลบ Public URLs ด้วยเครื่องมืออย่าง
create_public_urlและpause_public_urlรวมถึงการตั้งค่า request headers ที่กำหนดเอง - เผยแพร่และรีเฟรชสแนปช็อต — ปรับใช้โฟลเดอร์เป็น Snapshot ที่แชร์ได้ด้วย
publish_snapshotจากนั้นอัปเดตในภายหลังด้วยupdate_snapshotเพื่อให้ลิงก์ตัวอย่างยังคงเป็นปัจจุบัน - ควบคุมการเข้าถึงและความคิดเห็น — ป้องกันรหัสผ่านให้กับ URL ด้วย
set_password, ตรวจสอบเธรดความคิดเห็นผ่านlist_commentsและตอบกลับหรือแก้ไขได้โดยตรงจากผู้ช่วยของคุณ - ตรวจสอบสถานะทันเนลและบริการ — ใช้
get_statusเพื่อยืนยันว่าการบันทึกกำลังทำงานอยู่ หรือใช้list_public_urlsเพื่อดูว่าลิงก์ใดเปิดใช้งาน, หยุดชั่วคราว หรือให้บริการสแนปช็อตอยู่
เอกสาร
MCP server
เรียกใช้เซิร์ฟเวอร์ Model Context Protocol ของ LocalCan และเชื่อมต่อเข้ากับ MCP host ของคุณ พร้อมเอกสารอ้างอิงฉบับเต็มของเครื่องมือและตัวเลือกต่างๆ
localcan mcp เรียกใช้เซิร์ฟเวอร์ Model Context Protocol ผ่าน stdio โดย MCP host (Claude Code, Codex, Cursor, Claude Desktop และอื่นๆ) จะเป็นตัวเปิดใช้งานและเรียกใช้เครื่องมือของ LocalCan เพื่ออ่านทราฟฟิกที่บันทึกไว้ จัดการ Public URLs (tunnels) และเผยแพร่ Snapshots โดย LocalCan ต้องเปิดอยู่เพื่อให้เครื่องมือส่งข้อมูลกลับมา ดังนั้นให้เปิดแอปเดสก์ท็อปหรือรัน localcan start -d ก่อน
เครื่องมือ
เซิร์ฟเวอร์มีเครื่องมือให้ใช้งานยี่สิบหกตัว การอ่านข้อมูลใช้งานได้ทันที ส่วนเครื่องมือสิบหกตัวที่เปลี่ยนแปลงข้อมูลต้องได้รับสิทธิ์เขียน ซึ่งปิดไว้โดยค่าเริ่มต้น (ดูตัวเลือกด้านล่าง) การสร้างหรือเพิ่ม Public URL ต้องมีใบอนุญาตที่ใช้งานได้ การเผยแพร่ Snapshot และการป้องกัน URL ด้วยรหัสผ่านต้องมีแผนแบบสมัครสมาชิก ดังนั้นใบอนุญาตถาวรจะถูกปฏิเสธแม้จะยังเปิด Public URLs ได้ก็ตาม หากไม่มีใบอนุญาต เครื่องมือที่ถูกจำกัดจะแสดงข้อความแจ้งเปิดใช้งานอย่างชัดเจน ในขณะที่การหยุดชั่วคราว การดำเนินการต่อ และการลบ URL ที่มีอยู่ยังทำงานได้ตามปกติ
ทราฟฟิก:
| เครื่องมือ | ฟังก์ชัน | พารามิเตอร์ |
|---|---|---|
get_status | รายงานว่าการบันทึกเปิดอยู่หรือไม่และมีทราฟฟิกที่บัฟเฟอร์อยู่เท่าใด | ไม่มี |
enable_capture | เปิดการบันทึก การบันทึกปิดโดยค่าเริ่มต้นและรีเซ็ตเมื่อ daemon รีสตาร์ท | ไม่มี |
list_traffic | แสดงรายการแลกเปลี่ยนล่าสุด เรียงจากใหม่ไปเก่า | last (ค่าเริ่มต้น 20), host สตริงย่อย, project id, method, status (รหัสที่แน่นอนหรือคลาสเช่น 5xx) |
get_exchange | ส่งคืนหนึ่งแลกเปลี่ยนตาม id | id จำเป็น (id เต็มหรือคำนำหน้าเฉพาะใดๆ), format หนึ่งใน markdown, curl, http, har, json (ค่าเริ่มต้น markdown), include_response (ค่าเริ่มต้น true) |
การแลกเปลี่ยนคือคำขอที่ LocalCan ส่งต่อไปยัง backend ของคุณ ไม่ใช่สำเนาแบบไบต์ต่อไบต์ของคำขอเดิมจากไคลเอนต์ ดู Traffic สำหรับโมเดลข้อมูล
Public URLs:
| เครื่องมือ | ฟังก์ชัน | พารามิเตอร์ |
|---|---|---|
list_services | แสดงรายการบริการที่ LocalCan ให้บริการ แต่ละบริการมี <project>/<service> handle เป้าหมายภายใน และจำนวน endpoint | ไม่มี |
list_public_urls | แสดงรายการ Public URLs ของคุณ รวมถึงที่หยุดชั่วคราว แต่ละรายการมีสถานะ (active, paused, error, starting, inactive) และสิ่งที่ให้บริการ (live, snapshot, none) ทุกแถวยังมี access: none, password, link หรือชื่อนโยบายทีม URL ที่จอดไว้ซึ่งให้บริการ Snapshot จะอ่านสถานะเป็น paused แต่ให้บริการ snapshot ดังนั้นตอบคำถาม "ลิงก์ออนไลน์อยู่หรือไม่" จาก serving ไม่ใช่ state | ไม่มี |
get_public_url_status | รายงานสถานะของ Public URL หนึ่งรายการ สิ่งที่ให้บริการ (live, snapshot, none) และการป้องกัน access คำศัพท์เดียวกันกับรายการ พร้อมเป้าหมายภายในและกฎ header ของคำขอใดๆ | url จำเป็น |
create_public_url | สร้าง Public URL สำหรับพอร์ตภายในในโปรเจกต์ใหม่และส่งคืนที่อยู่ที่กำหนด เช่น my-app-12.localcan.dev ใช้เวลาสองสามวินาที หาก tunnel ถูกปฏิเสธ (เช่นขีดจำกัด Public URL ของแผนของคุณ) หรือหมดเวลา ความพยายามจะถูกยกเลิกและไม่เหลืออะไรค้างไว้ สำหรับลิงก์ที่ยังเข้าถึงได้หลังจากเครื่องของคุณออฟไลน์ ให้เพิ่ม Snapshot ด้วย add_snapshot สำหรับแอปที่ให้บริการเป็น virtual host ให้ส่ง host และกฎ Host ใน headers (ดูด้านล่าง) | port จำเป็น, name ไม่บังคับ (กำหนดรูปแบบที่อยู่), protocol http หรือ tcp (ค่าเริ่มต้น http), host ไม่บังคับ (ค่าเริ่มต้น localhost), headers ไม่บังคับ (กฎ header ของคำขอ แต่ละ {name, value, mode?, enabled?}) |
add_public_url | เพิ่ม Public URL ให้กับบริการที่คุณกำหนดค่าไว้แล้ว โปรโตคอลเป็นไปตามเป้าหมายของบริการ ดังนั้นเป้าหมาย tcp:// จะได้ TCP tunnel มีการยกเลิกเมื่อล้มเหลวเหมือนกับ create | service handle จำเป็น |
pause_public_url | ทำให้ Public URL ออฟไลน์ในขณะที่คงที่อยู่ไว้ เพื่อให้สามารถดำเนินการต่อได้ในภายหลัง ที่อยู่ *.localcan.dev ที่สร้างขึ้นจะถูกสงวนไว้ 7 วันในขณะที่หยุดชั่วคราว โดเมนที่กำหนดเองไม่หมดอายุ | url จำเป็น |
resume_public_url | นำ Public URL ที่หยุดชั่วคราวกลับมาออนไลน์ที่ที่อยู่เดิม | url จำเป็น |
remove_public_url | ลบ Public URL อย่างถาวร ที่อยู่ที่สร้างขึ้นจะถูกปล่อย โดเมนที่กำหนดเองยังคงเป็นของคุณและสามารถเพิ่มได้อีกครั้ง การลบ endpoint สุดท้ายของบริการจะลบบริการและโปรเจกต์ที่ว่างเปล่าด้วย หากต้องการคงที่อยู่ไว้แต่หยุดให้บริการ Snapshot ให้ใช้ remove_snapshot ถูกทำเครื่องหมายว่าทำลายล้าง ดังนั้น host มักจะขอการยืนยัน | url จำเป็น |
set_public_url_headers | แทนที่กฎ header ของคำใบบน Public URL ซึ่งเป็น header ที่ LocalCan ตั้งค่าก่อนส่งต่อไปยังแอปของคุณ ส่งรายการทั้งหมด รายการว่างจะล้างกฎ get_public_url_status รายงานกฎในรูปแบบเดียวกัน (mode set, append หรือ remove และ enabled) ดังนั้นรายการที่อ่านที่นั่นสามารถแก้ไขและเขียนกลับได้ | url และ headers จำเป็น |
แอปที่ให้บริการเป็น virtual host (ไซต์ Laravel Herd หรือ Valet ที่ myapp.test, nginx server_name) ต้องเห็น hostname ของตัวเอง และ LocalCan ส่งต่อ hostname สาธารณะโดยค่าเริ่มต้น ส่ง host และกฎ Host คือ headers: [{"name": "Host", "value": "{{target_host}}"}] แล้วแอปจะให้บริการไซต์ที่ถูกต้อง เทมเพลตค่าคือค่าจาก Headers
Snapshots (ดู Snapshots):
| เครื่องมือ | ฟังก์ชัน | พารามิเตอร์ |
|---|---|---|
publish_snapshot | เผยแพร่โฟลเดอร์เป็น Snapshot บน Public URL ใหม่ เพื่อให้ยังเข้าถึงได้หลังจากเครื่องของคุณออฟไลน์ ชี้ไปที่ผลลัพธ์ static ที่ build แล้วเมื่อเป็นไปได้ หรือที่รากโปรเจกต์เพื่อให้ LocalCan build (ต้องติดตั้ง dependencies แล้ว) ส่งคืนที่อยู่ใหม่ สร้าง URL ใหม่เสมอ ดังนั้นเพื่อรีเฟรชพรีวิวที่มีอยู่ให้ใช้ update_snapshot | path จำเป็น (เส้นทางสัมบูรณ์), name ไม่บังคับ (กำหนดรูปแบบที่อยู่) |
add_snapshot | เพิ่ม Snapshot ให้กับ Public URL ที่คุณมีอยู่แล้ว เพื่อให้ลิงก์เดิมยังให้บริการออฟไลน์ ชี้ไปที่ update_snapshot หาก URL มีอยู่แล้ว | url และ path จำเป็น |
update_snapshot | เผยแพร่ Snapshot บน Public URL ใหม่ ละเว้น path เพื่อ build ใหม่จากแหล่งเดิม หรือส่งเพื่อเปลี่ยนไปยังโฟลเดอร์อื่น ชี้ไปที่ add_snapshot หาก URL ไม่มี | url จำเป็น, path ไม่บังคับ |
remove_snapshot | ลบ Snapshot ออกจาก Public URL URL ยังคงถูกสงวนและให้บริการ live ต่อไปในขณะที่ tunnel ของคุณออนไลน์ ถูกทำเครื่องหมายว่าทำลายล้าง | url จำเป็น |
get_snapshot_status | รายงาน Snapshot ของ Public URL: โฟลเดอร์ต้นทาง เวลาที่เผยแพร่ แหล่งที่มาเปลี่ยนแปลงตั้งแต่เผยแพร่หรือไม่ (stale) และ URL ให้บริการ live หรือ snapshot ในขณะนี้ พร้อมความคิดเห็นรีวิว (สถานะและจำนวน) และเมื่อเปิดความคิดเห็นแล้ว จะมีหมายเลขเวอร์ชันของ Snapshot | url จำเป็น |
การควบคุมการเข้าถึง (ดู Access control):
| เครื่องมือ | ฟังก์ชัน | พารามิเตอร์ |
|---|---|---|
set_password | ป้องกัน Public URL ด้วยรหัสผ่านเพื่อให้เฉพาะผู้ที่มีรหัสผ่านเท่านั้นที่เปิดได้ บังคับใช้บนเซิร์ฟเวอร์ของ LocalCan ดังนั้นครอบคลุม Snapshot บน URL นั้นด้วย สร้างรหัสผ่านที่แข็งแกร่งเว้นแต่คุณจะส่งมา และส่งคืนเพื่อให้คุณแชร์ได้ ต้องมีแผนแบบสมัครสมาชิก | url จำเป็น, password ไม่บังคับ (ละเว้นเพื่อสร้างอัตโนมัติ) |
clear_access | ลบการป้องกันด้วยรหัสผ่าน ทำให้ URL กลับเป็นสาธารณะ ไม่ได้ลบ URL หรือ Snapshot ถูกทำเครื่องหมายว่าทำลายล้าง ดังนั้น host มักจะขอการยืนยัน | url จำเป็น |
get_access_status | รายงานการป้องกันของ Public URL และส่งคืนรหัสผ่านปัจจุบันเมื่อมีการป้องกันด้วยรหัสผ่าน รหัสผ่านไม่ถูกส่งคืนโดย list_public_urls เฉพาะที่นี่เท่านั้น | url จำเป็น |
ความคิดเห็น (ความคิดเห็นรีวิวที่ผู้รีวิวฝากไว้บน Snapshot ดู Comments):
| เครื่องมือ | ฟังก์ชัน | พารามิเตอร์ |
|---|---|---|
list_comments | แสดงรายการเธรดความคิดเห็นบน Snapshot ของ Public URL พร้อมคำตอบ แต่ละเธรดมีเส้นทางหน้า anchor (CSS selector และตำแหน่งของพินในองค์ประกอบนั้น) viewport และเบราว์เซอร์ของผู้รีวิว และเวอร์ชัน Snapshot ที่ฝากไว้ ไม่เคยทำเครื่องหมายว่าอ่านแล้ว | url จำเป็น, status open, resolved หรือ all (ค่าเริ่มต้น open), page path, version number |
reply_comment | โพสต์คำตอบในเธรดภายใต้ชื่อบัญชีของคุณ ผู้รีวิวในเธรดได้รับทางอีเมลเว้นแต่การแจ้งเตือนคำตอบถูกปิดสำหรับทีมหรือพวกเขายกเลิกการสมัคร ตอบได้อย่างเดียว เธรดใหม่จะถูกพินบนหน้า | url, comment_id, body จำเป็น |
resolve_comment | ทำเครื่องหมายเธรดว่าถูกแก้ไข รวมถึงคำตอบ | url และ comment_id จำเป็น |
reopen_comment | เปิดเธรดที่ถูกแก้ไขอีกครั้ง | url และ comment_id จำเป็น |
set_comments | สลับความคิดเห็นบน Snapshot: on, paused (เธรดเดิมยังอ่านได้ ไม่มีใหม่) หรือ off ต้องมี URL ที่ได้รับการป้องกันและแผนแบบสมัครสมาชิก | url และ state จำเป็น |
วงจรป้อนกลับ
เครื่องมือเชื่อมต่อกันเป็นวงจรเดียวที่เอเจนต์สามารถรันได้ด้วยตัวเอง: list_comments เพื่ออ่านเธรดที่เปิดอยู่ แก้ไขแหล่งที่มา update_snapshot เพื่อเผยแพร่เวอร์ชันใหม่ จากนั้น reply_comment และ resolve_comment ต่อเธรด ความคิดเห็นส่งต่อไปยังเวอร์ชันใหม่ ดังนั้นผู้รีวิวเห็นคำตอบบนพินเดียวกัน เซิร์ฟเวอร์บอกเอเจนต์เอง คำแนะนำ MCP ซึ่ง host เพิ่มในพรอมต์ของเอเจนต์ อธิบายวงจร การตั้งค่ารอบรีวิว (publish_snapshot, set_password, set_comments) และสูตร virtual host สองสิ่งที่เอเจนต์ทำไม่ได้: เริ่มเธรด (ผู้รีวิวพินบนหน้า) และทำเครื่องหมายเธรดว่าอ่านแล้ว (ยังไม่ได้อ่านคือสถานะกล่องขาเข้าของคุณในแอป)
การเชื่อมต่อเอเจนต์
วิธีเชื่อมต่อขึ้นอยู่กับว่าเอเจนต์รันอย่างไร เอเจนต์เทอร์มินัล (Claude Code, Codex) สืบทอด shell PATH ของคุณ ดังนั้นคำสั่ง localcan เปล่าๆ ก็ใช้งานได้ แอป GUI (Cursor, Claude Desktop, VS Code และอื่นๆ) ไม่โหลด shell PATH ของคุณ ดังนั้นต้องใช้เส้นทางสัมบูรณ์ไปยังไบนารี เช่น /Users/you/.localcan/bin/localcan การตั้งค่าของแอปเดสก์ท็อปสามารถคัดลอก config ที่พร้อมใช้พร้อมเส้นทางที่ถูกต้อง ซึ่งเป็นเส้นทางที่เชื่อถือได้บน Windows ด้วย
Claude Code
claude mcp add --scope user localcan -- localcan mcp
แฟล็ก --scope user ลงทะเบียนเซิร์ฟเวอร์สำหรับทุกโปรเจกต์ ละเว้นเพื่อลงทะเบียนเฉพาะในโปรเจกต์ปัจจุบัน
Codex
codex mcp add localcan -- localcan mcp
สิ่งนี้เขียนเซิร์ฟเวอร์ไปที่ ~/.codex/config.toml สำหรับแอปเดสก์ท็อป Codex หรือส่วนขยาย IDE ให้ส่งเส้นทางสัมบูรณ์แทนที่ localcan
Cursor, Claude Desktop และ Windsurf
สิ่งเหล่านี้ใช้รูปแบบ mcpServers เดียวกัน:
{
"mcpServers": {
"localcan": {
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
เพิ่มลงในไฟล์ที่ถูกต้อง จากนั้นโหลดใหม่:
- Cursor:
~/.cursor/mcp.jsonจากนั้นเปิดใช้งานเซิร์ฟเวอร์ในการตั้งค่า - Claude Desktop:
claude_desktop_config.json(Settings, Developer, Edit Config) จากนั้นออกและเปิดใหม่ - Windsurf:
~/.codeium/windsurf/mcp_config.jsonจากนั้นรีเฟรชแผง MCP
VS Code
VS Code (โหมด Copilot agent) ใช้คีย์ servers พร้อมประเภทที่ชัดเจน เพิ่มสิ่งนี้ลงใน .vscode/mcp.json ในเวิร์กสเปซของคุณ:
{
"servers": {
"localcan": {
"type": "stdio",
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
คุณยังสามารถรัน code --add-mcp ด้วยออบเจกต์เซิร์ฟเวอร์เดียวกัน
Zed
Zed ใช้ context_servers ใน settings.json:
{
"context_servers": {
"localcan": {
"source": "custom",
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
คุณยังสามารถเพิ่มจากการตั้งค่าแผง Agent Panel
การเข้าถึงเอเจนต์ การปกปิด และสิทธิ์เขียน
ทั้งหมดสามอย่างถูกควบคุมในแอปเดสก์ท็อปภายใต้การตั้งค่า (ส่วน "AI Agents (MCP)") หรือจากเทอร์มินัล: localcan mcp enable / disable สำหรับการเข้าถึงเอเจนต์ localcan mcp redact <on|off> สำหรับการปกปิด localcan mcp access <read_only|read_write> สำหรับสิทธิ์เขียน และ localcan mcp status เพื่อดูสถานะปัจจุบัน
- การเข้าถึงของ Agent เปิดอยู่โดยค่าเริ่มต้น ปิดเพื่อหยุดไม่ให้ Agent ใช้ LocalCan ได้เลย เซิร์ฟเวอร์ยังคงเริ่มทำงาน แต่ทุกเครื่องมือจะส่งข้อความ "access is disabled" ที่ชัดเจนจนกว่าคุณจะเปิดกลับมา
- การปกปิดข้อมูลเปิดอยู่โดยค่าเริ่มต้นสำหรับ Agent ส่วนหัวที่ละเอียดอ่อน (Authorization, cookies, API keys) จะถูกลบออกจากการตอบสนองของเครื่องมือ URL และเนื้อหาจะไม่ถูกปกปิด ปิดเพื่อให้ Agent ของคุณได้รับค่าดิบ
- การเข้าถึงแบบเขียนปิดอยู่โดยค่าเริ่มต้น การอ่านทำงานได้โดยไม่ต้องใช้ แต่เครื่องมือเขียนจะส่งข้อความ read-only ที่ชัดเจนจนกว่าคุณจะเปิด ในแอป ("Allow agents to create and change Public URLs") หรือด้วย
localcan mcp access read_writeการเปิดการเข้าถึงของ Agent ไม่ได้ให้สิทธิ์การเขียน พวกมันเป็นสวิตช์แยกกัน ทุกการเรียกเขียนจะถูกบันทึกลงในเอาต์พุตการวินิจฉัยของเซิร์ฟเวอร์ ซึ่งโฮสต์ของคุณจะเก็บไว้ เพื่อให้คุณมีบันทึกว่า Agent เปลี่ยนแปลงอะไร รหัสผ่านที่ส่งไปยังset_passwordจะถูกปกปิดในบันทึกนั้น
เมื่อเครื่องมือปฏิเสธ
- ทุกเครื่องมือแสดงข้อผิดพลาดเกี่ยวกับการเชื่อมต่อ daemon: LocalCan ไม่ได้ทำงาน เปิดแอปเดสก์ท็อปหรือรัน
localcan start -d list_trafficไม่ส่งคืนอะไรเลย: การจับภาพปิดอยู่ (ปิดโดยค่าเริ่มต้นและรีเซ็ตเมื่อ daemon รีสตาร์ท) รันlocalcan traffic enableหรือให้ Agent เรียกenable_capture- "MCP access is disabled": การเข้าถึงของ Agent ถูกปิด รัน
localcan mcp enableหรือสลับการตั้งค่า - "MCP is read-only": เครื่องมือเปลี่ยนแปลงสิ่งต่างๆ และการเข้าถึงแบบเขียนปิดอยู่ รัน
localcan mcp access read_writeหรือเปิดสลับการตั้งค่า - "public URLs require a license": การสร้างและเพิ่ม Public URL ต้องมีใบอนุญาตที่ใช้งานอยู่ เปิดใช้งานในแอปหรือด้วย
localcan license activate <key> - "need a subscription plan": Snapshots และ Access control เป็นแบบสมัครสมาชิกเท่านั้น ใบอนุญาตถาวรสามารถเปิด Public URLs ได้ แต่ไม่สามารถเผยแพร่ Snapshot หรือตั้งรหัสผ่านได้ สมัครสมาชิกจาก dashboard ของคุณ แล้วลองอีกครั้ง
- "already has a snapshot" หรือ "has no snapshot yet": ใช้เครื่องมือที่ข้อความระบุ
add_snapshotแนบ Snapshot กับ URL ที่ไม่มีupdate_snapshotรีเฟรชอันที่มีอยู่แล้ว - "Snapshot limit reached": แผนของคุณจำกัดจำนวน Public URLs ที่สามารถให้บริการ Snapshot พร้อมกันได้ ข้อความจะแสดงรายการ URLs ที่ใช้สล็อตอยู่แล้ว ซึ่งคุณสามารถรีเฟรชด้วย
update_snapshotแทนการเผยแพร่อันใหม่ - "Comments need a protected URL":
set_commentsถูกเรียกบน URL ที่ไม่มี Access control รันset_passwordก่อน - "Your account has no display name": คำตอบต้องมีชื่อเพื่อโพสต์ ตั้งค่าใน dashboard หรือตอบครั้งเดียวบนหน้า Snapshot หลังจากเปิดเป็นเจ้าของจากแอป
- โฮสต์แสดงเซิร์ฟเวอร์ว่าล้มเหลวหรือไม่มีเครื่องมือ: แอป GUI ไม่พบ
localcanใน PATH ใช้พาธแบบสัมบูรณ์ ง่ายที่สุดผ่านการคัดลอกการกำหนดค่าในการตั้งค่า