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
| Metod | Väg | Auth | Beskrivning |
GET | /health | nej | Liveness — processen svarar, säger inget om flottan. |
GET | /status | ja | Full statusbild: noder, modeller, peer-länkar, ICE, policy. |
GET | /config | ja | Aktiv konfiguration (utan hemligheter). |
GET | /nodes | ja | Lista anslutna noder. |
GET | /nodes/:id | ja | En specifik nod. |
DELETE | /nodes/:id | ja | Koppla ned en nod — den återansluter själv (t.ex. för att tvinga omladdning). |
POST | /nodes/:id/link | ja | Body {"peer":"nodeId"} — be noden ansluta direkt till en granne (diagnostik). |
GET | /links | ja | Aktiva peer-till-peer-länkar mellan noder. |
Modeller
| Metod | Väg | Auth | Beskrivning |
GET | /manifest | ja | Hela modell-manifestet (shardar) — det noderna verifierar mot. |
GET | /models | ja | Modeller + fördelning + täckning. ?runnable=true filtrerar till körbara. |
GET | /models/:id | ja | En modell. |
POST/PATCH | /models/:id | ja | Body {"weight":1,"minReplicas":1,"enabled":true} — ändra fördelning (delvis, valfria fält). |
DELETE | /models/:id | ja | Tar bort modellen från disk. |
GET | /models/inbox | ja | GGUF-filer som väntar på konvertering. |
POST | /models/import | ja | Konverterar inkorgen till sharder. |
POST | /models/reload | ja | Läser om modellbiblioteket från disk. |
POST | /rebalance | ja | Räknar om tilldelningen direkt istället för att vänta ut debouncen. |
Köra saker
| Metod | Väg | Auth | Beskrivning |
POST | /generate | ja | Text 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 | /task | ja | Kör EN uppgift av valfri kind. Body: {"kind":"…","params":{…}}. Svar: {"result":…,"payloadBytes":…,"payloadSha256":…}. Se kind-tabellen nedan. |
POST /task — kind-värden
| kind | params |
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).