Stav Tunnel
Betjen dine egne modeller gjennom Stav – en Mac mini eller en lokal maskin bak brannmuren din blir et privat leverandørendepunkt i arbeidsområdet ditt, med nøkler, routere, forespørselslogg, revisjonslogg og policymuren.
Stav Tunnel slås på per arbeidsområde. Hvis du ikke ser Arbeidsområdet ditt → Koble til → Stav Tunnel, be kundestøtten om å aktivere det.
Du har en maskin som kjører en modell godt – en Mac mini med Ollama, en arbeidsstasjon med LM Studio, en maskin som kjører llama.cpp, en GPU-server som kjører vLLM eller SGLang. Stav Tunnel gjør det mulig for den maskinen å betjene arbeidsområdet ditt gjennom Stav, slik at applikasjonene dine beholder én base-URL, én nøkkel, én forespørselslogg, og de samme routerne og policymuren – og selve modellen er privat for arbeidsområdet ditt.
Ingenting er åpent mot internett. En liten daemon, stav-tunnel, oppretter en utgående tilkobling fra maskinen din til Stavs relay over WebSocket. Forespørsler kommer tilbake gjennom den tilkoblingen og besvares av backenden på maskinen. Ingen inngående port, ingen brannmurregel, ingen VPN.
Slik fungerer det
- Legg til en node i Arbeidsområdet ditt → Koble til → Stav Tunnel. Gi den et navn og oppgi landet maskinen beregner i. Du får et engangstoken for registrering og installasjonskommandoen.
- Kjør kommandoen på maskinen. Den installerer daemonen fra plattformens egen pakkebehandler og kobler til. Daemonen finner Ollama (
:11434), LM Studio (:1234), llama.cpp (:8080), vLLM (:8000) eller SGLang (:30000) på maskinen og rapporterer hvilke modeller den betjener. - Bruk modellene. I løpet av et minutt vises de i
/v1/modelsog i Arbeidsområdet ditt → Koble til → Modeller. En modell Stav allerede kjenner, beholder katalognavnet sitt og får en rad for noden din; en modell Stav ikke kjenner, får navnet@your-workspace/local-id.
# macOS eller Linux, Homebrew
brew install stavhq/tap/stav-tunnel
stav-tunnel up --token stn_…
På Debian eller Ubuntu:
curl -fsSL https://packages.stav.ai/packages/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/stav.gpg
echo "deb [signed-by=/usr/share/keyrings/stav.gpg] https://packages.stav.ai/packages/apt stable main" | sudo tee /etc/apt/sources.list.d/stav-tunnel.list
sudo apt update && sudo apt install stav-tunnel
På Fedora, RHEL eller Rocky:
sudo curl -fsSL -o /etc/yum.repos.d/stav-tunnel.repo https://packages.stav.ai/packages/stav-tunnel.repo
sudo dnf install stav-tunnel
Med en pakke legger du tokenet i /etc/stav-tunnel/env (STAV_TUNNEL_ARGS=--token stn_…), kjører sudo systemctl enable --now stav-tunnel, og fjerner deretter token-linjen – noden beholder sin egen nøkkel.
For å holde noden i gang etter utlogging og omstart, kjør stav-tunnel service install på macOS (en LaunchAgent). Linux-pakkene leveres med en systemd-enhet: sudo systemctl enable --now stav-tunnel.
stav-tunnel status viser tilkoblingen og backendene den fant. stav-tunnel logout fjerner maskinens påloggingsinformasjon.
vLLM og SGLang
Daemonen ser etter vLLM på :8000 og SGLang på :30000. Mange andre servere bruker disse portene, så en server som blir funnet der, rapporteres bare når daemonen bekrefter at det er vLLM eller SGLang. Enhver annen server fungerer også når du oppgir navnet på den: stav-tunnel up --backend http://127.0.0.1:8000/v1.
- En server som krever et token. Hvis du starter vLLM med
--api-key, viser nodesiden vLLM asks for a token. Gi daemonen nøkkelen én gang:stav-tunnel up --backend 'http://127.0.0.1:8000/v1|your-key'. Nøkkelen blir liggende i daemonens konfigurasjon på maskinen og sendes aldri til Stav. SGLang med--api-keyavviser alle forespørsler uten nøkkelen, så daemonen kan ikke skille den fra en annen server: oppgi den på samme måte fra starten av. - En modell som betjenes under et annet navn.
vllm serve Qwen/Qwen3-8B --served-model-name prod-chatfører opp modellen somprod-chat. vLLM og SGLang oppgir også hvilke vekter det er, og Stav bruker dette: når katalogen har Qwen3-8B, får modellen din sitt katalognavn, sin side og sine resultater fra referansetester. Nodesiden viser vektene under den lokale ID-en. En modell som lastes inn fra en lokal mappe, treffes ikke på denne måten (stien sendes aldri til Stav); koble den til på nodesiden. - I en container. Containerbildet for
stav-tunnelser etter serverne på sin egen127.0.0.1. Kjør det med--network host, eller gi det serverens adresse med--backend.
Slik sender du forespørsler til noden din
| Du sender | Du får |
|---|---|
creator/model eller auto | Routeren kan velge noden din når den er tilkoblet (se nedenfor) |
creator/model/@node | Den modellen, låst til noden din. Bytter aldri automatisk |
@your-workspace/local-id | En modell som bare noden din betjener |
@your-workspace/local-id/@node | Det samme, låst |
Et svar som betjenes av noden din, har X-Stav-Served-By: own-resource og X-Stav-Node-Id; X-Stav-Provider er nodens private leverandør, @your-workspace/node. Forespørselsloggen viser navnet på noden.
Modellene dine, fullt ut kjent
En modell på noden din er bare nyttig når Stav vet hva den kan gjøre. To ting sørger for det:
- Testing. Når en modell dukker opp på en node, eller kjøretidsmiljøet rapporterer at den er endret (en ny kvantisering, størrelse eller versjon), sender Stav noden en håndfull korte testforespørsler – en lydfil på ett sekund til
/v1/audio/transcriptions, et vanlig chattekall, et verktøykall, et JSON-schema-kall, en temperatur, et 1×1-bilde og hvert resonneringsnivå – og registrerer hva modellen faktisk godtok. Det som ble målt, gjelder: et kjøretidsmiljø som fører opptoolsfor en modell som deretter avviser dem, gir deg en tydelig feilmelding om manglende egenskap i stedet for et uforståelig svar. Hvert faktum på nodesiden oppgir hvor det kom fra –mmålt på noden,rrapportert av kjøretidsmiljøet,cfra katalogen. Tester er gratis og bruker maskinens GPU et øyeblikk; hver node har en daglig grense, og siden sier fra når den er nådd. Slå av «Test nye modeller automatisk» på en node hvis du foretrekker det; «Test på nytt» fungerer fortsatt. - Tilkobling. En lokal ID som Stav ikke treffer (
qwen3.5:9b-mlxnår katalogen ikke har noen Qwen 3.5 9B), forblir privat til du gir beskjed. «Koble til en katalogmodell» på nodesiden foreslår de nærmeste offentlige modellene og lar deg søke i hele katalogen; tilkoblingen gjelder for hver node i arbeidsområdet ditt som rapporterer den ID-en, overstyrer alle regler som treffer, og flytter modellen inn under katalognavnet – siden og referansetestene dens – med en test rett etterpå. Raden viser da Koblet til av arbeidsområdet ditt, aldri Truffet, og referansetestene er katalogmodellens, ikke noe som er målt på noden din. Låser på den gamle@your-workspace/local-idslutter å fungere. Fjern tilkoblingen, og ID-en går tilbake til reglene.
Routere
Hver router har en innstilling for Tunnel-noder:
- Foretrukket (standard) – en av dine tilkoblede noder prøves først; hvis den er frakoblet eller svikter før den første byten, bytter forespørselen automatisk til katalogen.
- Bare – bare nodene dine. Er ingen tilkoblet, avvises forespørselen med
no_eligible_models; aldri en stille reserve til en tredjepart. - Ignorer – routeren holder seg til katalogen.
En låst forespørsel (…/@node) bytter aldri automatisk: hvis noden er borte, får du en feilmelding med navnet på noden.
Tale til tekst på noden din
En Whisper-modell i vLLM (vllm serve NbAiLab/nb-whisper-large, eller en hvilken som helst Whisper som vLLM betjener) svarer på POST /v1/audio/transcriptions gjennom noden din, slik at lyden forblir på maskinen din og likevel får nøkkelen din, forespørselsloggen og policymuren.
- Testen beviser det: lydfilen på ett sekund får en transkripsjon tilbake, et vanlig chat-kall gjør det ikke, og modellen føres opp som en transkriberingsmodell – i
/v1/modelsundertranscriptions, og på nodesiden som transcription. - Send forespørsler til den som
@your-workspace/local-id, eller med katalognavnet når Stav kjenner modellen. Forespørsler er gratis; forespørselsloggen beholder varighet, størrelse og format, aldri lyden. - En node tar filer på opptil 24 MB.
- Lyd har ingen router, så det finnes ingen Bare-innstilling for det. En forespørsel til en katalogmodell som noden din også betjener, går til noden din først; hvis noden svikter før den svarer, går forespørselen én gang til katalogen. For å beholde lyden på maskinen din uten unntak, send forespørselen til det private
@your-workspace/…-navnet eller lås noden (…/@node). - Oppdater daemonen (
stav-tunnel0.4.0 eller nyere) når vLLM ikke er den første serveren på maskinen: eldre versjoner sender en opplasting til den første serveren de finner.
Slik klassifiseres den
Noden din får nivå L4 og vises som L4 · Drevet av kunden. Du eier og driver maskinen, så ingen tredjepart ser dataene. Landet, ingen datalagring og ingen trening på dataene er det du oppga da du la til noden; Stav kontrollerer dem ikke, og arbeidsområdet ditt sier det (declared NO, aldri «verified»). En nedre grense i reglene som avviser et oppgitt faktum, sier (customer_declared) i begrunnelsen.
Hva det koster
- Forespørsler til din egen node er gratis. Token telles for bruksoversikten din, men trekkes aldri fra lommeboken.
- Hver node koster 1,00 € i måneden, som trekkes fra lommeboken når du legger den til, og deretter den 1. i hver måned. Hvis lommeboken er tom, settes noden på pause til du fyller på.
Sikkerhet og personvern
- Tokenet vises én gang og fungerer én gang. Etter det beviser daemonen hvem den er med en nøkkel den genererte på maskinen (Ed25519) ved hver tilkobling.
- Trekker du tilbake en node i Arbeidsområdet ditt → Koble til → Stav Tunnel, lukkes tunnelen i løpet av sekunder; ingen forespørsler når maskinen igjen.
- Reléet videresender byter; det lagrer ikke prompter. Daemonen lagrer ingen prompter og har ingen kode for å oppdatere seg selv – oppdateringer kommer fra
brew upgrade(ellerapt/dnf). Hver utgivelse leveres med en innholdsfortegnelse for programvare (SBOM). - Noden din, leverandørraden dens, endepunktene og de private modellene dens er bare synlige for arbeidsområdet ditt – aldri i den offentlige katalogen, aldri for et annet arbeidsområde.
Begrensninger i denne versjonen
- Backender: Ollama, LM Studio, llama.cpp, vLLM, SGLang. Alt annet som snakker OpenAI-chat-API-et fungerer når du oppgir det med
--backend, men er ikke testet. - Én maskin om gangen: en klynge med mange kopier av én modell støttes ikke ennå.
- Chat (
/v1/chat/completions,/v1/messages,/v1/responses), embedding og lydtranskribering; ingen tekst til tale gjennom en node. Tale til tekst er testet på vLLM; en annen server som snakker OpenAIs/v1/audio/transcriptionsog viser modellene sine på/v1/models, fungerer når du oppgir den med--backend. - Opptil 50 noder per arbeidsområde.