Control UI (เบราว์เซอร์)
Control UI เป็นแอป single-page ขนาดเล็ก Vite + Lit ที่เสิร์ฟโดย Gateway:
- ค่าเริ่มต้น:
http://<host>:18789/ - คำนำหน้าตัวเลือก: ตั้งค่า
gateway.controlUi.basePath(เช่น/mayros)
มันพูดคุย โดยตรงกับ Gateway WebSocket บนพอร์ตเดียวกัน
เปิดอย่างรวดเร็ว (โลคัล)
หาก Gateway ทำงานบนคอมพิวเตอร์เดียวกัน ให้เปิด:
หากหน้าเว็บโหลดไม่ได้ ให้เริ่ม Gateway ก่อน: mayros gateway
การพิสูจน์ตัวตนถูกจัดหาระหว่างการจับมือ WebSocket ผ่าน:
connect.params.auth.tokenconnect.params.auth.password
แผงการตั้งค่าแดชบอร์ดให้คุณเก็บโทเค็น รหัสผ่านไม่ถูกเก็บถาวร วิซาร์ด onboarding สร้างโทเค็น gateway ตามค่าเริ่มต้น ดังนั้นวางมันที่นี่ในการเชื่อมต่อครั้งแรก
การจับคู่อุปกรณ์ (การเชื่อมต่อครั้งแรก)
เมื่อคุณเชื่อมต่อกับ Control UI จากเบราว์เซอร์หรืออุปกรณ์ใหม่ Gateway
ต้องการ การอนุมัติการจับคู่ครั้งเดียว — แม้ว่าคุณจะอยู่บน Tailnet เดียวกัน
กับ gateway.auth.allowTailscale: true นี่เป็นมาตรการรักษาความปลอดภัยเพื่อป้องกัน
การเข้าถึงที่ไม่ได้รับอนุญาต
สิ่งที่คุณจะเห็น: "disconnected (1008): pairing required"
เพื่ออนุมัติอุปกรณ์:
bash# แสดงคำขอที่รอดำเนินการ mayros devices list # อนุมัติโดย request ID mayros devices approve <requestId>
เมื่ออนุมัติแล้ว อุปกรณ์จะถูกจดจำและจะไม่ต้องการการอนุมัติอีกเว้นแต่
คุณเพิกถอนมันด้วย mayros devices revoke --device <id> --role <role> ดู
Devices CLI สำหรับการหมุนเวียนโทเค็นและการเพิกถอน
หมายเหตุ:
- การเชื่อมต่อโลคัล (
127.0.0.1) ได้รับการอนุมัติอัตโนมัติ - การเชื่อมต่อระยะไกล (LAN, Tailnet, ฯลฯ) ต้องการการอนุมัติที่ชัดเจน
- แต่ละโปรไฟล์เบราว์เซอร์สร้าง device ID ที่ไม่ซ้ำ ดังนั้นการสลับเบราว์เซอร์หรือ ล้างข้อมูลเบราว์เซอร์จะต้องการการจับคู่อีกครั้ง
สิ่งที่มันสามารถทำได้ (วันนี้)
- แชทกับโมเดลผ่าน Gateway WS (
chat.history,chat.send,chat.abort,chat.inject) - สตรีมการเรียกเครื่องมือ + การ์ดเอาต์พุตเครื่องมือสดใน Chat (เหตุการณ์ agent)
- ช่องทาง: WhatsApp/Telegram/Discord/Slack + ช่องทางปลั๊กอิน (Mattermost, ฯลฯ) สถานะ + การล็อกอิน QR + การตั้งค่าต่อช่องทาง
- Instances: รายการ presence + รีเฟรช
- เซสชัน: รายการ + การแทนที่ thinking/verbose ต่อเซสชัน
- งาน Cron: รายการ/เพิ่ม/รัน/เปิดใช้งาน/ปิดใช้งาน + ประวัติการรัน
- Skills: สถานะ เปิดใช้งาน/ปิดใช้งาน ติดตั้ง การอัปเดต API key
- โหนด: รายการ + capabilities
- การอนุมัติ Exec: แก้ไข allowlists ของ gateway หรือโหนด + นโยบายการขอสำหรับ
exec host=gateway/node - การตั้งค่า: ดู/แก้ไข
~/.mayros/mayros.json - การตั้งค่า: ใช้ + รีสตาร์ทพร้อมการตรวจสอบความถูกต้อง
- Debug: สถานะ/สุขภาพ/โมเดล snapshots + บันทึกเหตุการณ์ + การเรียก RPC ด้วยตนเอง
- บันทึก: ติดตามสดของบันทึกไฟล์ gateway พร้อมตัวกรอง/ส่งออก
- อัปเดต: รันการอัปเดต package/git + รีสตาร์ทพร้อมรายงานการรีสตาร์ท
พฤติกรรมแชท
chat.sendเป็น non-blocking: มันตอบรับทันทีด้วย{ runId, status: "started" }และการตอบกลับสตรีมผ่านเหตุการณ์chat- การส่งซ้ำด้วย
idempotencyKeyเดียวกันส่งคืน{ status: "in_flight" }ในขณะที่รัน และ{ status: "ok" }หลังจากเสร็จสิ้น chat.historyresponses มีขนาดจำกัดเพื่อความปลอดภัยของ UIchat.injectแนบโน้ต assistant ไปยัง transcript เซสชันและออกอากาศเหตุการณ์chatสำหรับการอัปเดต UI เท่านั้น- หยุด:
- คลิก Stop (เรียก
chat.abort) - พิมพ์
/stop(หรือstop|esc|abort|wait|exit|interrupt) เพื่อยกเลิก out-of-band
- คลิก Stop (เรียก
การเข้าถึง Tailnet (แนะนำ)
Integrated Tailscale Serve (ต้องการ)
เก็บ Gateway ไว้ที่ loopback และให้ Tailscale Serve พร็อกซีมันด้วย HTTPS:
bashmayros gateway --tailscale serve
เปิด:
https://<magicdns>/(หรือgateway.controlUi.basePathที่คุณกำหนดค่า)
ผูกกับ tailnet + โทเค็น
bashmayros gateway --bind tailnet --token "$(openssl rand -hex 32)"
จากนั้นเปิด:
http://<tailscale-ip>:18789/
วางโทเค็นลงในการตั้งค่า UI (ส่งเป็น connect.params.auth.token)
HTTP ที่ไม่ปลอดภัย
หากคุณเปิดแดชบอร์ดผ่าน HTTP ธรรมดา (http://<lan-ip> หรือ http://<tailscale-ip>)
เบราว์เซอร์ทำงานใน non-secure context และบล็อก WebCrypto ตามค่าเริ่มต้น
Mayros บล็อก การเชื่อมต่อ Control UI โดยไม่มีอัตลักษณ์อุปกรณ์
แก้ไขที่แนะนำ: ใช้ HTTPS (Tailscale Serve) หรือเปิด UI ในโลคัล:
https://<magicdns>/(Serve)http://127.0.0.1:18789/(บนโฮสต์ gateway)
การสร้าง UI
Gateway เสิร์ฟไฟล์แบบคงที่จาก dist/control-ui สร้างพวกเขาด้วย:
bashpnpm ui:build # ติดตั้ง UI deps อัตโนมัติในการรันครั้งแรก
สำหรับการพัฒนาในโลคัล (เซิร์ฟเวอร์พัฒนาแยก):
bashpnpm ui:dev # ติดตั้ง UI deps อัตโนมัติในการรันครั้งแรก
จากนั้นชี้ UI ไปที่ Gateway WS URL ของคุณ (เช่น ws://127.0.0.1:18789)