# Agentic Office - Kipinä Hajautettu Verkkoprojekti Tässä on kooste projektin vaatimuksista, työtehtävistä ja niiden nykytilanteesta. Tämä dokumentti on jatkuvasti päivittyvä kuvaus siitä, mitä tavoitellaan ja mitä on jo tehty. ## 🚀 Vaihe 1: Rust + Wasm Selain-Nodet (Selainpohjainen P2P) ### Tavoitteet - Madaltaa käyttäjän osallistumiskynnys "yhteen klikkaukseen". - Selainkäyttäjien verkkolaitteen WebGPU:ta hyödyntävä asynkroninen Rust-solmu (Wasm). - WebSocket-yhteys julkiseen Hubiin, joka jakelee matematiikka/AI-laskentaa eteenpäin Nodeille. ### Tehtävät - [x] Rakenna axum-pohjainen Rust-reititin ja Hub Server (portti 3000) - [x] Luo Wasm-käännettävä Rust-kirjasto selaimen Node-agentteja varten - [x] Ota onnistuneesti käyttöön task-jono WebSocketin yli nodejen kanssa - [x] Pakkaa solmu yhteen helposti levitettävään muotoon (wasm-pack -> static/index.html) - [x] Tee yksinkertainen kuormalaskenta-algoritmi (Fibonacci) konseptin todentamiseksi - [x] Tallenna tulokset asynkronisesti käyttöjärjestelmään ja takaisin weppiin --- ## 🚀 Vaihe 2: Kipinä.studio taustajärjestelmä ### Tavoitteet - Luoda kunnollinen työjono (Job Queue). - Sijoittaa Hub-palvelin julkisesti saatavuusosoitteeseen `kipina.studio`. ### Tehtävät - [x] Tuotantopalvelimen käyttöönotto Docker-compose + Caddy TLS kautta (`kipina.studio`) - [x] Deploy-skripti (`deploy.sh`) + Discord-webhook-notifikaatio julkaisuista - [x] Admin-dashboard (`/admin`) Basic Auth -suojattuna, live-sessiot ja metriikat - [x] REST API (`POST /api/v1/chat/completions`) task_id-pohjaisella vastausten reitityksellä - [x] API timeout (120s) + selkeät virheilmoitukset (504 Gateway Timeout) - [x] IP-pohjainen rate limiting (max 4 yhteyttä/IP) + origin-validointi - [ ] Turvamekanismin lisäys: Varmistetaan, ettei kukaan lähetä "falskeja" vastauksia nodeilta (PoW/challenge-response) - [x] SQLite-sessioseuranta (node_sessions + pair_results) --- ## 🚀 Vaihe 3 & 4: WebGPU ja Klusterin Statistiikka (VALMIS!) ### Tavoitteet - Korvata simppeli Fibonacci-luuppi aidoimmilla AI-tensoreilla ja laitekiihdytyksellä Burn-kirjastoa (WebGPU) apuna käyttäen. - Valvoa ja suojella solmujen tehoa reaaliajassa. ### Tehtävät - [x] Integroi `burn-wgpu` ja `burn-core` (v0.14.0) kääntymään Wasm-pakettiin - [x] Valmistele laskettavien tensoreiden välitys Hubilta laitteiston Metal/WebGPU -muistiin - [x] Koodaa Hubiin logiikka (Broadcast), joka yhdistää jokaisen solmun "4 GB" (oletuksena Mac-koneille) VRAM:in ja julkaisee summan Dashboardiin. - [x] Teollisuustason GPU "Duty Cycle" Throttling: JS Slider (25%-100%) jarruttaa raskaan WebGPU-ajon välitöntä syöttöä tauottaen laitteistoa ja suojellen käyttöjärjestelmää ylikuormittumukselta. --- ## 🚀 Vaihe 5: Aito Agentic Compute (Micro-LLM Tekstigeneraatio Verkossa) ### Tavoitteet - Korvata kokeellinen kymmenien tuhansien alkioiden pelkkä satunnais-matriisilaskenta (C=A*B) aidolla asynkronisella LLM-mallilla (esim. Llama-3 1B kvantisoituna / vastaava Transformer). - Kyetä lataamaan selaimen IndexedDB:hen satojen megatavujen painot massivisena fetch-hakuna, kääntää ne WebGPU-puskureihin (Buffers) ja suorittaa tekstigeneraatiota etänä ohjattuna verkosta käsin WebSocketia myöden. ### Tehtävät - [x] Refaktoroi Wasm-Noden (Burn.rs) paketti tuomaan Text-Tokenizerit (BPE, Qwen2.5-Coder) ja kielimallin arkkitehtuuri käyttöön - [x] Koodaa Nodeen logiikka hakea / kasata mallin painot välimuistista IndexedDB:hen (tokenizer.json + model weights) - [x] Hub uudistetaan generoimaan Text Prompts ja reitittämään työkuorman vapaalle solmulle (broadcast + task_id-matching) - [x] Kipinän käyttöliittymään Chat-ikkuna Hubin striimaamien tulossanojen tarkkailuun reaaliajassa (llm_chunk streaming) - [x] SmolLM 135M — täysi transformer (Burn), ~1.2 tok/s CPU - [x] Qwen2.5 0.5B — Candle-inferenssi, ChatML-muotoilu, ~0.4 tok/s CPU - [x] Qwen2.5-Coder 0.5B & 3B — koodigeneraatio, streaming-tokenit, task_id-tuki - [x] Phi-3 Mini — placeholder (liian suuri selaimelle, natiivisolmulle suunnitteilla) - [x] EN/FI tokenisaatiovertailu overhead-laskennalla - [x] Natiivisolmu (Rust + CUDA) — Qwen2.5 0.5B, ~50-100 tok/s RTX 4090, NVML GPU-metriikat --- ## 🚀 Vaihe 6: Agent Workspace & CLI (KÄYNNISSÄ) ### Tavoitteet - Interaktiivinen terminaalipohjainen käyttöliittymä `kpn`-komennoilla. - Agenttitiimi (Koodari, Testaaja, Manageri) muokattavilla system prompteilla. - Agenttien ketjutus: manageri analysoi → koodari toteuttaa → testaaja arvioi. ### Tehtävät - [x] KPN-terminaali selaimeen (interaktiivinen komentorivi, komentohistoria) - [x] `kpn run ""` — tehtävän lähetys REST API:n kautta - [x] `kpn hello` — tervehdyskomento - [x] `kpn pipeline ""` — manageri → koodari → testaaja -ketjutus - [x] `kpn status`, `kpn models`, `kpn clear`, `kpn help` - [x] Agenttikortit (Koodari/Qwen-Coder, Testaaja/SmolLM, Manageri/KPN CLI) - [x] Muokattavat system promptit per agentti (localStorage-tallennus) - [x] Multi-select: yhteinen konteksti useammalle agentille - [x] Streaming-vastaukset terminaalissa (llm_chunk + vilkkuva kursori) - [x] URL-hash navigointi (`#agents`, `#codelab`, `#network`) - [x] SPA fallback (ServeDir + ServeFile) - [ ] Agenttien välinen keskustelu (manageri ohjaa koodaria ja testaajaa dynaamisesti) - [ ] Tehtävähistoria ja tulosten tallennus - [ ] CLI-työkalu (`kpn` binary) lokaaliin käyttöön