muti daemon 是執行在主人機器上的輕量背景程序。它透過對外的 HTTPS 連線輪詢房間服務,使用已安裝的執行環境在本地端執行請求,並上傳描述發生了什麼事的時間線事件串流。它不會上傳檔案、環境變數、金鑰資料或瀏覽器狀態,也不會開啟任何傳入連接埠。
這是簡短摘要。資安審查人員會需要完整的清單。詳情如下。
The connection
- **方向:**僅限對外。daemon 透過長輪詢取得工作;沒有任何連線會連進機器。
- **驗證:**每台機器專屬的金鑰。伺服器端僅儲存其雜湊值。已撤銷或已刪除機器的金鑰會回傳錯誤,daemon 隨即停止運作。
- **核准關卡:**新配對的機器會處於
awaiting_approval狀態,直到主人在 Web 應用程式中確認為止。在此之前不會派發任何工作,也不會接受任何事件。
琥珀色絕不越界:金鑰、儲存庫與環境變數留在機器上;房間僅接收事件與小型產出物。
What goes up: timeline events
每個請求都會產生一組有順序的事件序列。每個事件都包含請求 ID、房間 ID、序號、類型以及 payload。
除了事件之外,daemon 還會在註冊與活動訊號(heartbeat)時回報機器中繼資料:主機名稱、平台、架構、daemon 版本、偵測到的執行環境及其版本、本地與公開 IP 位址,以及是否以服務方式執行。
What never goes up
daemon 不會讀取,因此也無法發送以下內容:
- 使用者或執行環境程序的環境變數。
- 金鑰檔案:
~/.ssh、雲端憑證、.env檔案、keychain。 - 瀏覽器設定檔、Cookie 或登入中的工作階段。
- 儲存庫或工作樹(working tree)的檔案本體。diff 僅以路徑與變更行數傳輸。
- 任何來自 agent 工作目錄以外的內容,除非是 agent 明確產生且回覆中有引用的產出物。
它也沒有任何途徑可以從房間接收檔案並寫入任意路徑。請求者傳送的附件只會置於該次請求的 agent 上下文中。
Why summaries are enough
房間中的成員只需要知道 agent 做了什麼,而不需要複製整顆硬碟。工具呼叫摘要、包含路徑與行數的 diff,以及指令的最後 40 行輸出,就能在不轉移程式碼庫的情況下回答「它做的事情正確嗎?」。當有人需要查看完整的變更時,變更內容已經在 agent 推送到的儲存庫中,而存取權限由該儲存庫本身的權限機制控管。
這也是為什麼 muti 不代管執行環境:一旦執行環境搬移,憑證與檔案就必須跟著搬移。請參閱本地優先 agent 與代管 agent。
Verifying it yourself
muti status顯示 daemon 的設定、程序 ID 與記錄檔路徑。muti logs -f即時追蹤它發送的內容。每個對外請求都會記錄其事件類型。- 在主控台中 Revoke 該機器,觀察 daemon 在一個輪詢週期內停止運作。
Frequently asked questions
Does the daemon ever upload a whole file? 只會上傳產出物:agent 所產生且在回覆中引用的檔案或圖片,以便顯示在房間的輸出中。這些檔案是直接上傳到房間的儲存空間,而不是從硬碟掃描取得。
Can the room service run code on my machine? 它只能將請求排入佇列,且一切皆由您的權限規則與核准流程控管。它無法在請求之外執行任意指令,也無法存取檔案。
Where do timeline events live? 儲存在房間服務的資料庫中,範圍僅限於該房間。只有該房間的成員可以讀取,其他任何人都無法存取。
Can I run the room service myself? 單人自託管模式已在開發藍圖中;daemon 與該服務之間本來就是透過簡潔的 API 進行通訊。
如果您的資安審查需要此處未列出的任何資訊,請寫信至 service@muti.im。若沒有其他疑慮,歡迎為您的 agent 建立房間。
發布於