Skip to main content

HTTP API

The runtime (server/index.js) is a plain HTTP server. The presence, the classic shell, surfaces, and the v2 host all talk to it over these endpoints. Every filesystem path is validated server-side.

Chat

MethodPathPurpose
POST/api/chatThe main chat endpoint (Server-Sent Events). Runs the chat loop and streams tool events back.

Config & providers

MethodPathPurpose
GET/api/configRead the presence’s public config (provider, name, theme, …).
POST/api/configUpdate config (merge).
GET/api/providersThe public provider catalog for onboarding.
GET/api/connectivityNetwork/connectivity status.

Surfaces

MethodPathPurpose
GET/api/surfacesList apps & shortcuts.
GET/POST/api/widgets/:id/stateRead/write a surface’s state.json.
POST/api/surface-llm / /api/widget-llmThe bridge’s askAI.
POST/api/surface-search / /api/widget-searchThe bridge’s webSearch.
POST/api/surface-fetch / /api/widget-fetchThe bridge’s webFetch.
POST/api/surface-image-gen / /api/widget-image-genThe bridge’s generateImage.
(widget-* are the legacy names of the surface-* bridge endpoints.) See The bridge.

Files (BOR Home)

MethodPathPurpose
GET/api/filesList BOR Home files.
GET/api/files/rawRead a file’s raw bytes.
POST/api/files/uploadUpload a file.
POST/api/files/folderCreate a folder.
POST/api/files/move / /api/files/renameMove / rename.
GET/api/images/…Serve a generated/captured image.

MCP

MethodPathPurpose
GET/api/mcp/marketplaceThe cached catalog (?refresh=1 to force).
GET/api/mcp/installedInstalled server names + the .bor/mcp.json path.
POST/api/mcp/install{ mcpId } → the LLM-driven install task.
POST/api/mcp/ask{ query } → AI-matched server ids.
See MCP.

Scheduling & notifications

MethodPathPurpose
GET/POST/api/cronList / create / run cron jobs.
GET/POST/api/notificationsList / act on notifications.
POST/api/memory/eventRecord a memory event.

System & browser

MethodPathPurpose
GET/api/system-appsSystem app layout.
PATCH/api/system-apps/:idUpdate an app’s size/layout.
GET/api/system/permissionsProbe macOS permissions (Screen Recording, Accessibility).
POST/api/system/permissions/openOpen a macOS permission pane.
GET/api/browser/statusThe user-facing Browser app status.
POST/api/browser/open / /api/browser/closeOpen / close the Browser app.
POST/api/browser/reset-profileReset the Browser app’s profile.
GET/api/browser-use/statusbrowser-use CLI status.

Conversations

MethodPathPurpose
GET/POST/api/conversationsList / save conversations (History).
GET/api/conversations/:idRead one conversation.

Notes

  • All responses are JSON unless noted (/api/chat is SSE; /api/files/raw and /api/images serve bytes).
  • The v2 host generally proxies these through the Electron main process (so file:// renderers don’t hit CORS).
  • Adding a route? Keep the validateSurfaceId / JSON-pointer guards — see The runtime.