Coordinator

ansluter…

API

Basadress: https://coordinator.pubsys.kooper.se (eller http://localhost:8080 lokalt). Alla vägar utom GET /, GET /admin och GET /health kräver en Authorization: Bearer <AUTH_TOKEN>-header — samma AUTH_TOKEN som coordinator startades med (fråga den som driftsatte den om du inte har den). Den här sektionen är synlig utan inloggning, till skillnad från panelen nedan, så en annan enhet kan läsa den utan att redan ha token.
Allmänt
MetodVägAuthBeskrivning
GET/healthnejLiveness — processen svarar, säger inget om flottan.
GET/statusjaFull statusbild: noder, modeller, peer-länkar, ICE, policy.
GET/configjaAktiv konfiguration (utan hemligheter).
GET/nodesjaLista anslutna noder.
GET/nodes/:idjaEn specifik nod.
DELETE/nodes/:idjaKoppla ned en nod — den återansluter själv (t.ex. för att tvinga omladdning).
POST/nodes/:id/linkjaBody {"peer":"nodeId"} — be noden ansluta direkt till en granne (diagnostik).
GET/linksjaAktiva peer-till-peer-länkar mellan noder.
Modeller
MetodVägAuthBeskrivning
GET/manifestjaHela modell-manifestet (shardar) — det noderna verifierar mot.
GET/modelsjaModeller + fördelning + täckning. ?runnable=true filtrerar till körbara.
GET/models/:idjaEn modell.
POST/PATCH/models/:idjaBody {"weight":1,"minReplicas":1,"enabled":true} — ändra fördelning (delvis, valfria fält).
DELETE/models/:idjaTar bort modellen från disk.
GET/models/inboxjaGGUF-filer som väntar på konvertering.
POST/models/importjaKonverterar inkorgen till sharder.
POST/models/reloadjaLäser om modellbiblioteket från disk.
POST/rebalancejaRäknar om tilldelningen direkt istället för att vänta ut debouncen.
Köra saker
MetodVägAuthBeskrivning
POST/generatejaText in, text ut — kör den distribuerade modellen (inference.layer) med tokenisering inbyggd. Body: {"prompt":"…","maxTokens":32,"model":"qwen3-4b"} (model valfri om bara en modell är laddad).
POST/taskjaKör EN uppgift av valfri kind. Body: {"kind":"…","params":{…}}. Svar: {"result":…,"payloadBytes":…,"payloadSha256":…}. Se kind-tabellen nedan.
POST /task — kind-värden
kindparams
browser.fetch url (krävs), timeoutMs, nodeId (pinna en specifik nod), selector (CSS), userAgent, scroll (0–50), format (markdown/json/html/text/png), js (kör EFTER sidladdning), preJs (kör FÖRE, kan påverka det som hämtas), includeRaw (skicka med rå text/HTML), extract (strukturerad extraktion, körs på noden — ett av: facebookPage, facebookPerson, facebookPersonReels, facebookAdLibrary, companyInfo, googleBusiness, bingBusiness, tiktokProfile, instagramPage, booliAgency, blocketDealer, blocketShop, blocketMobilityItem, blocketMarketItem), postprocess ({"type":"regex"|"llm","pattern":…,"instruction":…,"replace":true|false}).
net.fetch url (krävs), timeoutMs, nodeId, userAgent, includeText, extract (samma extraktionslägen som ovan, för sidor som inte kräver JS), postprocess (samma form som ovan). Ren HTTP — ingen JS-körning, mycket snabbare än browser.fetch när sidan inte kräver det.
search.web query (krävs), limit, postprocess. Speglar Bing + DuckDuckGo.
llm.local prompt (krävs), maxTokens. En liten, komplett modell på en enda nod — inget delat över flera. Används oftast internt av postprocess, men går att anropa direkt.
inference.layer Lågnivåvägen bakom /generate — tar redan tokeniserade prompt (array av heltal), inte text. Använd /generate istället om du inte specifikt behöver token-id direkt.
Exempel
curl -s https://coordinator.pubsys.kooper.se/status \ -H "Authorization: Bearer DIN_TOKEN"
curl -s -X POST https://coordinator.pubsys.kooper.se/generate \ -H "Authorization: Bearer DIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"prompt":"The capital of France is","maxTokens":16}'
curl -s -X POST https://coordinator.pubsys.kooper.se/task \ -H "Authorization: Bearer DIN_TOKEN" \ -H "Content-Type: application/json" \ -d '{"kind":"browser.fetch","params":{"url":"https://example.com","timeoutMs":30000}}'
Svar och felkoder: 400 (ogiltiga params), 401 (saknad/fel token), 404 (okänd kind/nod/modell/väg), 503 (ingen ledig nod för den efterfrågade kinden just nu), 500 (fel under körning — error-fältet har detaljerna).