vkcr hub 0.1.0 Điều phối máy của bạn (vkcr node) từ Telegram, Slack, MCP và HTTP. / Coordinates your machines running `vkcr node`. Agent: đọc https://hub.vividkit.pro/llms.txt (mô tả đầy đủ) và https://hub.vividkit.pro/openapi.json. Owner API (Authorization: Bearer vk_…): GET /api/v1/me [read] Who the caller is (kind, name, scopes) GET /api/v1/machines [read] List enrolled machines with presence and capabilities POST /api/v1/machines/enroll-codes [approve] Create a single-use enrollment code (10 minutes) for `vkcr node enroll` DELETE /api/v1/machines/{id} [approve] Remove a machine (revokes its token, cancels its open jobs) GET /api/v1/lanes [read] List lanes, newest first POST /api/v1/lanes [approve] Start a lane for a GitHub issue (plan → workflow steps). Needs scope approve: the lane runs a bypass-permission agent GET /api/v1/lanes/{id} [read] One lane with steps, spans and cost POST /api/v1/lanes/{id}/cancel [run] Cancel a lane (cancels its running job) POST /api/v1/lanes/{id}/resume [approve] Resume a halted lane: re-run the current step as a new attempt GET /api/v1/jobs/{id} [read] One job with result, error and the last 16 KB of its log GET /api/v1/inbox [read] What waits for the owner: pending approvals and halted lanes POST /api/v1/approvals/{id}/approve [approve] Approve a pending flow preview or lane gate (count must match when count > 1) POST /api/v1/approvals/{id}/reject [run] Reject a pending approval (a rejected lane gate halts the lane) POST /api/v1/machines/{id}/tools/{tool} [run] Run one vkcr tool on a machine (tool.call job), wait up to 60 s. flow_apply/flow_approve are refused POST /api/v1/machines/{id}/ask [run] Ask the machine's model (vkcr ask, MCP mode chat), wait up to 60 s GET /api/v1/hub/public-key [read] The hub's Ed25519 public key (base64 raw 32 bytes) that nodes pin POST /api/v1/keys [approve] Create an API key (default scopes read,run; shown once) GET /api/v1/keys [read] List API keys (never the secret) DELETE /api/v1/keys/{id} [approve] Revoke an API key GET /api/v1/trace/{laneId} [read] Where a lane's time and money went: jobs, queue/run seconds, spans, totals Remote MCP: POST https://hub.vividkit.pro/mcp (JSON-RPC 2.0, protocol 2025-06-18) Node: POST /node/v1/enroll, /node/v1/hello, GET /node/v1/jobs/next?wait=25, POST /node/v1/jobs/{jobId}/events Webhooks: POST /webhooks/github, /webhooks/telegram, /webhooks/slack