Skip to main content

Arquitetura do Sistema

Stack de Comunicação

O Claude Desktop (Electron) utiliza uma arquitetura de dois processos onde o renderer (SPA) nunca faz chamadas HTTP diretas. Toda comunicação de rede passa pelo main process (Node.js).

+------------------------------------------------------------------+
| CLAUDE DESKTOP (Electron) |
| |
| +------------------+ IPC ($eipc_message$) +-----------+ |
| | RENDERER (SPA) |<---------------------------->| MAIN | |
| | (WebView) | via contextBridge + preload | PROCESS | |
| | | | (Node.js) | |
| | - UI/UX | invoke/on/sendSync | | |
| | - Voice (WebAPI) | | - HTTP | |
| | - MCP (IPC call) | | - FS I/O | |
| | - Session State | | - Child | |
| | | | Process | |
| +------------------+ | - BLE/Ser | |
| | | - TCC | |
| | window.claudeAppBindings +-----------+ |
| | window.electronWindowControl | |
| | window.electronIntl | |
| | window.buddyBle ANTHROPIC_BASE_URL|
| +---(preload bridge)---ipcRenderer.invoke--> | |
| | |
| +------------v------+ |
| | LITELLM GATEWAY | |
| | (localhost:4000) | |
| +--------------------+ |
| | |
| +----------v--------+ |
| | ANTHROPIC API | |
| | api.anthropic.com | |
| +-------------------+ |
+------------------------------------------------------------------+

Mecanismos HTTP do Main Process

O main process utiliza quatro mecanismos HTTP distintos dependendo do tipo de requisição:

MecanismoUsoDetalhes
electron.net.fetch (oA.net.fetch)API first-partyOAuth, bootstrap, environments, files, organizations
axios (JyA)CLI-facingCode sessions, bridge credentials, worker register
electron.net.request (oA.net.request)TelemetriaOTLP batch event logging
fetch() nativo do NodeModel probingChamadas de proxy, health checks

Resolução de URL Base

ANTHROPIC_BASE_URL (env) -> this.apiHost
PrioridadeFonteExemplo
1process.env.ANTHROPIC_BASE_URLhttps://api.anthropic.com
2Store overrideStore key apiHost
3Defaulthttps://api.anthropic.com

Variáveis Internas de Resolução

VariávelResoluçãoExemplo
ji()app.getURL()https://claude.ai (ou localhost dev)
this.apiHostANTHROPIC_BASE_URLhttps://api.anthropic.com
uF()Config endpointhttps://api.anthropic.com
n.apiHost (OAuth)OAuth issuerhttps://api.anthropic.com
api_base_url (bridge)Bridge servicehttps://bridge.claudeusercontent.com
audio_proxy_urlAudio servicehttps://audio.anthropic.com

Hierarquia de Classes do SDK

class Yg (base API resource)
._client.post(path, options)
._client.get(path, options)
._client.delete(path, options)
._client.getAPIList(path, type, options)

class kh extends Yg (SDK root)
models: u_t -> GET /v1/models, GET /v1/models/{id}
messages: WAe -> POST /v1/messages, count_tokens, batches
agents: VAe -> POST/GET/POST/DELETE /v1/agents/*
environments: c_t -> POST/GET/POST/DELETE /v1/environments/*
sessions: VmA -> POST/GET/POST/DELETE /v1/sessions/*
vaults: jAe -> POST/GET/POST/DELETE /v1/vaults/*
memoryStores: qmA -> POST/GET/POST/DELETE /v1/memory_stores/*
files: I_t -> GET/POST/DELETE /v1/files/*
skills: $Ae -> POST/GET/DELETE /v1/skills/*
userProfiles: E_t -> POST/GET/POST /v1/user_profiles/*

Principios de Comunicação

  1. O renderer NUNCA faz chamadas HTTP diretas. Toda comunicação de rede passa pelo main process.
  2. O main process usa três mecanismos HTTP distintos dependendo do tipo de chamada (electron.net.fetch, axios, electron.net.request).
  3. Voice é processado 100% no renderer (Web APIs: MediaRecorder, getUserMedia). Zero IPC envolvido.
  4. MCP é gerenciado pelo main process (child processes para servidores MCP). Renderer comunica via IPC.
  5. Feature flags são injetadas via argumentos de linha de comando OU via IPC para AppConfig.

Conexões em Tempo Real

ConexãoURL PatternTipoPropósito
Messages StreamPOST /v1/messages (com stream: true)SSEStreaming de resposta do modelo
Bridge Worker Events{api_base_url}/v1/code/sessions/{id}/worker/events/streamSSE -> WS UpgradeTransporte bidirecional para code sessions
Bridge WebSocketwss://bridge.claudeusercontent.comWSConexão persistente bridge
Session EventsGET /v1/sessions/{id}/events/stream?beta=trueSSEStream de eventos de sessão
Voice WebSocket/api/ws/voice/... ou /v1/bWSAudio full-duplex
MCP Server TransportTransporte local (stdio)STDIOComunicação com servidores MCP locais