Ugrás a fő tartalomhoz

Engine és folyamatmodell — Electron ↔ Go sidecar

Indulási szekvencia​

Token-átadás

A portot és tokent soha nem URL query-paraméterben adjuk át a renderernek (ott bekerülne a böngésző-előzményekbe és a devtools naplóba), hanem preload.js-en keresztül contextBridge-dzsel. A renderer nodeIntegration: false, contextIsolation: true, sandbox: true mellett fut.

Életciklus és heartbeat​

EseményViselkedés
Engine indulMegjegyzi a --parent-pid értéket
Minden 1 sAz engine ellenőrzi, él-e a szülőfolyamat
A szülő eltűnik3 s türelmi idő után graceful leállás: flush → SQLite checkpoint → exit(0)
Electron will-quitPOST /api/v1/shutdown, majd 5 s után SIGKILL ha még él
Engine összeomlikElectron észleli az exit kódot, max. 3× újraindítja exponenciális backoff-fal
Port foglaltAz engine exit(2)-vel jelez, az Electron új portot keres

Zombie-védelem: a parent-pid figyelés és a heartbeat együtt. Windowson a pid újrahasznosítható, ezért a parent-pid mellé egy indításkori nonce is megy, amit az Electron a heartbeat végponton visszaigazol.

Miért Go sidecar, nem beágyazott Node/Fastify​

SzempontGo sidecarBeágyazott Fastify
RAM~15–20 MB~80–150 MB
Indulás< 50 ms300–800 ms
Team/Enterprise telepítésEgy statikus fájl / 15 MB imageNode runtime + node_modules
Cross-compileGOOS/GOARCH, 6 target egy paranccsalPlatform-specifikus natív modulok
SQLitemodernc.org/sqlite, CGO-mentesbetter-sqlite3, natív fordítás minden platformra

Az engine indítási flag-jei​

FlagAlapértékSzerep
--modeembeddedembedded | daemon | server
--port0 (OS-osztott)A fő REST/WS API portja 127.0.0.1-en
--token—Bearer token minden REST kérésen; az Electron generálja indulásonként
--parent-pid0A figyelt szülőfolyamat PID-je
--project—A projekt gyökér abszolút útvonala (.craftingtable/-lel)
--mcp-port8420A HTTP MCP transport fix portja (0 letiltja)
--mcp-token—Bearer token a HTTP MCP transporton; az Electron stabil, perzisztált tokent ad

Külön alparancs: craftingtable-engine mcp --project <path> — a stdio MCP transport egy projektre, rövid életű processzként (ezt írja a .mcp.json a stdio változatnál).