Cos'è
Modifichi i file del progetto sul tuo PC → li vedi in anteprima sul sito (solo per te) → quando è pronto, un publish governato li rende live. Niente clone git, niente branch, niente push: scarichi una base firmata del progetto e mandi solo il delta (i file che tocchi) come overlay.
Prerequisiti
- Node.js installato (nel PATH).
- Essere membro del progetto — login email→PIN su
https://<progetto>.oasi.io/auth/login?surface=studio. - Una base pubblicata per il progetto (la fa il team piattaforma:
pnpm tsx scripts/publish-canonical-base.ts --project=<slug>).
Setup — due modi
AEstensione VS Code (consigliato)
- Installa l'estensione (PowerShell):
powershellPoi ricarica VS Code (Ctrl+Shift+P → Developer: Reload Window).
$v="$env:TEMP\oasi-owner-loop.vsix"; irm https://dev.oasi.io/oasi-owner-loop.vsix -OutFile $v; code --install-extension $v
- Attiva il transport git-free — Ctrl+Shift+P → Preferences: Open User Settings (JSON):
json
"oasi.ownerLoop.transport.<slug>": "overlay", "oasi.ownerLoop.developerId": "<tuo-id>"
<slug>= lo slug del progetto, es.termotecnica;<tuo-id>= es.nome-cognome. - Avvia — Ctrl+Shift+P → OASI Owner Loop: Avvia live-preview (o il tasto ▷ nel pannello OASI Owner Loop).
- Crea e apre una cartella di lavoro dedicata
~/.oasi/dev-light/<slug>/workspace— modifichi lì (non il vecchio clone git). ⚠️ Se hai impostatoOASI_HOME, sostituisci~/.oasicon quella radice. ⚠️ L'impostazione VS Codeoasi.homeDirvale SOLO dentro l'estensione: uno script di shell non puo' leggerla. Se usi i comandi qui sotto e hai impostato solo quella, esporta ancheOASI_HOMEcon lo stesso valore, o guarderanno due cartelle diverse. - Nel canale di output OASI Owner Loop compare un URL di autorizzazione: aprilo nel browser (loggato) — una volta sola (poi il token è in cache).
- Scarica la base e si mette in watch: ad ogni salvataggio manda l'overlay → anteprima.
- Crea e apre una cartella di lavoro dedicata
BClient da terminale (senza VS Code)
Certificazione + primo avvio (PowerShell):
irm https://dev.oasi.io/setup-dev-light.ps1 | iex
Watch continuo (edit → anteprima ad ogni salvataggio):
# $R segue le STESSE forme che accettano i client: ~/… , C:\… , \\server\share.
# Un valore relativo o ~utente viene ignorato, come fa il client: cosi' il comando qui
# sotto e il daemon guardano la stessa cartella, sempre.
# ⚠️ Prima si NORMALIZZA, poi si verifica: controllare il valore grezzo fa fallire il
# riconoscimento su ' C:\Oasi' (spazi iniziali) e il comando cerca il client nel posto
# storico mentre installer e client usano l'altro. Gli spazi finali si tolgono solo se il
# percorso non e' verbatim (\\?\), dove Windows li considera significativi.
$H = if ($env:OASI_HOME) { $env:OASI_HOME -replace '^\s+','' } else { '' }
if ($H -and -not $H.StartsWith('\\?\')) { $H = $H.TrimEnd() }
$R = if ($H -match '^(~[\\/]|[A-Za-z]:[\\/]|\\\\[^\\/]+[\\/][^\\/]+)') { $H -replace '^~', $HOME } else { Join-Path $HOME '.oasi' }
node "$R\dev-light\oasi-overlay-preview.mjs" --slug=<slug> --dev=<tuo-id> --repo="$R\dev-light\<slug>\workspace"Il client scarica la base (git-free), chiede il login una-tantum, e resta in watch.
CCon il wrapper, anche su un Mac
⚠️ Non ancora attivabile (11/10/2026). Il wrapper per Mac si installa, ma il modulo di osservazione dev-light (il programma firmato che si accorge dei salvataggi) esiste oggi solo per Windows. Finché il team non pubblica quello per Mac, il comando qui sotto serve a verificare la macchina (--prova) e a prepararla; le workspace non arrivano.
Se il progetto usa il wrapper (l'agente installato sul computer osserva la cartella di lavoro e invia da solo ogni salvataggio), su un Mac con Apple Silicon basta un comando, nel Terminale e senza sudo:
curl -fsSL https://device.oasi.io/releases/dev-light-mac.sh | sh -s -- \ --setup=<link dato dal team> --progetti=<slug>[,<slug>]
Installa e abbina il wrapper, aspetta che il server consegni le workspace in ~/.oasi/dev-light/<slug>/workspace e prepara gli strumenti per Claude (partner-kit/setup.sh). Serve Node 20 o più recente. Il link di setup è monouso e lo dà il team, che accende anche dev-light per quel Mac su ciascun progetto: lo script non può farlo da sé, e te lo dice se una workspace non è ancora arrivata. Con --prova dice cosa farebbe senza installare. Per un Mac con processore Intel non esiste ancora un pacchetto.
Più di un computer: una postazione alla volta
Puoi abbinare un secondo computer allo stesso progetto: la sua workspace nasce dall'ultima versione pubblicata. Le modifiche non pubblicate restano sul disco dove le hai fatte, e i due computer condividono la stessa anteprima (vince l'ultimo salvataggio, senza fusione). Quindi: pubblica prima di cambiare postazione e non lavorare sui due insieme.
Verificare che funzioni davvero
Il setup non dichiara più successo per conto proprio. Fino al 4 settembre 2026 installava le dipendenze e stampava «fatto» qualunque cosa fosse andata storta: è così che dieci difetti simultanei — sei dei quali silenziosi — sono arrivati fino a uno sviluppatore, che ci ha perso una giornata. L'ultima parola ora è del verificatore.
node partner-kit/doctor.mjs # referto leggibile
node partner-kit/doctor.mjs --json # per una macchina
Lancialo quando qualcosa non torna, e sempre dopo aver aggiornato il kit. I tre esiti sono distinti apposta:
- 0 — provato: ogni server è dichiarato, parte, ed è attivo in una sessione.
- 2 — installato, ma attivazione non ancora provata. È il caso normale prima che Claude Code sia stato avviato: un server MCP nasce con la sessione, quindi finché non l'apri non esiste niente da misurare.
- 1 — almeno un guasto vero. Ogni riga ❌ porta il proprio rimedio.
«Non provato» non è «sano». Un controllo che non ha potuto misurare vale ignoto, mai verde — ed è per questo che l'uscita 2 è tenuta separata dallo 0 invece di essere arrotondata a successo.
Se hai aggiornato il kit: riavvia Claude Code
Un server MCP è un processo figlio avviato una volta sola: sostituire il file sul disco non lo raggiunge. Ogni server ora registra l'impronta del file da cui è partito e la confronta con quello su disco a ogni chiamata; se differiscono risponde STALE_PROCESS e ti dice di riavviare, invece di lavorare in silenzio con codice superato.
Il flusso quotidiano
- Modifica un file dello screen o un fragment nella cartella di lavoro (
~/.oasi/dev-light/<slug>/workspace). - Al salvataggio parte l'overlay push → vedrai
pushed overlay … @ <draft>. - Il worker ricompone base + il tuo overlay in un draft governato.
Vedere l'anteprima
- Da VS Code: OASI Owner Loop: Apri la mia preview.
- Manuale (loggato): apri
url→ imposta il cookie di preview e reindirizza al sito con la tua sandbox. Naviga alla schermata che hai modificato.
https://<slug>.oasi.io/api/preview/<slug>/mint?channel=<slug>/<tuo-id>/live
path:/, valido su ogni surface: /, /admin/…, /portal/…): non va montato surface per surface. Montato una volta, naviga normalmente nella stessa tab e ogni pagina che hai il diritto di vedere mostra il tuo draft.
- Sei in anteprima quando vedi la cornice ambra “Anteprima sandbox”. (Il banner “Aggiorna ora” è un aggiornamento dell'app, non l'anteprima.)
- Se una pagina ti risulta live (senza cornice ambra), quella tab non è in anteprima — l'hai aperta in una tab/login diversi o è scaduta → ri-monta col link qui sopra.
- Le aree riservate come
/adminle vedi in anteprima solo se hai il ruolo per quella surface. Le pagine di piattaforma dentro /admin (Branding, Template Email…) restano sempre live.
Il menu in anteprima: sbloccato, oppure «come un cliente»
In anteprima il menu mostra tutte le voci, anche quelle che richiedono una capability che il tuo account non ha: serve a provare gli strumenti nuovi della bozza prima di pubblicarli. Nel riquadro in basso a sinistra lo leggi come «menu tutto sbloccato». Accanto c'è «vedi come un cliente»: il menu usa le capability reali del tuo account, e le voci con requiredCapabilities non soddisfatte spariscono come in produzione. «Sblocca tutto» torna indietro. È solo presentazione: nessun permesso cambia.
Pubblicare (rendere live) — passo governato e separato
L'anteprima è non-promotable: pubblicare è un passo distinto, con approvazione umana. Il draft viene ricostruito in modo deterministico, firmato (ricevuta KMS), riconciliato nel git canonico dalla piattaforma e deployato automaticamente. Tu non tocchi git; la piattaforma registra lo storico (ogni publish è un commit tracciato, reversibile con un publish successivo).
Il codice server (pack, handler) si vede in sandbox sui progetti accesi dalla piattaforma (termotecnica dal 28/09): dopo un salvataggio, le rotte dei pack le esegue il codice della tua bozza, in un processo confinato — solo lo schema del tuo progetto, Stripe solo con chiavi di test, niente posta né tabelle di piattaforma. Non serve pubblicare per vedere l'effetto di una modifica a un handler.
Su termotecnica è attivo, self-service. Quando un draft è pronto:
- Apri le tue anteprime (basta essere membro del progetto):
url
https://<slug>.oasi.io/p/<slug>/dev-light
- Trova il tuo draft (l'id è quello mostrato dal client dopo
pushed overlay → draft <id>). - Richiedi adozione. Da lì in poi è il titolare a mandarla online: la piattaforma ricostruisce, firma, riconcilia e deploya. Ciò che resta nel tuo progetto (schermate, testi, stile, state machine, campi, enum,
data-model.yaml, intenti) va in linea così; ciò che può raggiungere la piattaforma — codice server, migrazioni, frammenti Svelte,project.yaml,query-bridge.yaml, policy, automazioni — passa anche dalla revisione del team OASI (nel cockpit: «in revisione», non è un errore). - Se il titolare del progetto sei TU (ruolo
adminoownersu quel progetto) non devi chiedere l'adozione a nessuno: hai un banco tuo, sul piano progetto:urlhttps://<slug>.oasi.io/p/<slug>/studio/preview-publish
- Non confondere i due indirizzi:
/studio/preview-publish— senza il/p/<slug>iniziale — è il banco degli operatori di piattaforma OASI, e resta chiuso a chiunque altro. Il banco sul piano progetto è stato aperto il 2026-07-28, proprio perché il titolare di termotecnica era stato visto non riuscire a pubblicare il proprio progetto. - Un solo account può approvare. Su un progetto a sovranità applicata (termotecnica lo è) per chiedere la pubblicazione basta il ruolo
admin, ma approvarla è legato all'identità del proprietario registrato, non al ruolo. Con due account sullo stesso progetto — entrambiadmin, uno solo proprietario — col secondo arrivi al banco e vieni respinto all'approvazione, senza che nulla ti dica che è colpa dell'account. Se l'approvazione nega, controlla con quale email sei entrato. - Pubblicazione ferma per un conflitto di base? La risolve il tuo Claude, senza chiedere file al team (se il progetto ha il kit, cioè
partner-kit/mcp/nella workspace):conflitti_ultima_pubblicazione→ per ogni fileleggi_file_baseconbase: pinebase: attuale→ fusione a tre col tuo file → workspace nuova sulla base attuale → bozza nuova. Non ripubblicare la bozza vecchia. - La chiave device di Claude Code va in
.oasi-mcp-secrets.json, mai in.mcp.json:.mcp.jsonè un file del progetto, la bozza lo porta con sé e la pubblicazione lo scriverebbe nel repository (dal 2026-09-16 una pubblicazione con la chiave in chiaro viene rifiutata). Il.gitignorenon protegge la corsia dev-light: il client non lo legge. Se la tua chiave è mai finita in una bozza, revocala e abbinane una nuova (Studio Panel → Ispezione). - Migrazioni SQL: chi le applica dipende dalla corsia delle migrazioni del titolare, per progetto e spenta per difetto (
partner-kit/context/CORSIA-MIGRAZIONI-TITOLARE.md). Se il pannello di pubblicazione elenca le migrazioni della bozza, la corsia è accesa. Prima di salvare una migrazione, il tuo Claude chiedeverifica_migrazioni: è lo stesso verdetto del pannello. Dove la corsia è accesa passa anche una colonna nuova su una tabella esistente (ALTER TABLE … ADD COLUMN, una per istruzione,DEFAULTletterale,CHECKdentro l'ADD COLUMN, nienteDO), che poi non torna indietro da sola.
Le pagine Svelte dopo l'approvazione
Nei progetti accesi nella corsia delle pagine (termotecnica dall'11/10) le pagine Svelte vanno in linea da sole, circa due minuti dopo una pubblicazione approvata, senza aspettare un rilascio fatto dal team. Il pannello dev-light dice dove sono: in linea, in arrivo, non compilano (con l'errore del compilatore: è nei sorgenti, correggi e ripubblica) oppure problema della piattaforma (non dipende da te, il team è avvisato). Negli altri progetti resta «una pagina aspetta la ricompilazione», che fa il team. Fa eccezione il codice di artifacts/layout/ (.ts, .css), che aspetta sempre un rilascio.
Risoluzione problemi
È corretto: dev-light è git-free. La cartella di lavoro non è un repo git (nessun .git), non c'è niente da committare/pushare e non esiste un comando “push” da lanciare — il client/estensione (o il wrapper) manda l'overlay da solo a ogni salvataggio. Lavora dentro ~/.oasi/dev-light/<slug>/workspace (mai un vecchio clone git) e salva.
Transitorio di rete; il client/script riprende da solo (il download è idempotente, salta i file già presi). Rilancia se serve.
Non incollare script multi-riga nella console (li corrompe). Usa il one-liner irm … | iex o salva su file col Blocco note.
Devi essere loggato con la sessione piattaforma: https://<slug>.oasi.io/auth/login?surface=studio (email→PIN), non il login del progetto.
Assicurati di aver modificato uno screen/fragment reale (non un file di test) e di aver aperto l'anteprima sul canale <slug>/<tuo-id>/live.
Quella tab non è in anteprima: il cookie di preview è per-browser e path / (vale su tutte le surface), quindi se una pagina è live l'anteprima è scaduta o l'hai aperta in una tab/login diversi. Ri-monta col link e resta nella stessa tab. Per /admin serve anche il ruolo admin sul progetto.
~/.oasi/dev-light/cert.log — mandalo al team se qualcosa non torna.
Come sta il tuo progetto
La piattaforma osserva gia' il tuo progetto e ne registra i guasti: email ai clienti che non partono, rotte che rispondono male, utenti che restano bloccati su una schermata mentre il server risponde correttamente. Fino a poco fa quei segnali non li poteva leggere nessuno tranne chi gestisce la piattaforma. Ora li puoi leggere anche tu, sul tuo progetto.
query:health.summary — risponde ok /
warning / error / critical, con il
dettaglio per classe (code email, salute delle rotte, utenti bloccati) e
quante volte e' successo. Finestra ?hours=, per difetto le
ultime 24 ore.
query:health.alerts — gli allarmi non ancora presi in
carico, i piu' gravi per primi. Con ?includeAcknowledged=true
vedi anche lo storico.
Passano dal gateway di lettura governato: chiedi le capacita' del tuo progetto e le trovi elencate insieme alle altre. Il gateway e' per costruzione limitato a un progetto per volta — se ne segui due, chiedi due volte. Non e' una scomodita': e' cio' che ti impedisce di vedere i progetti di altri, e impedisce a loro di vedere il tuo.
Lo stato dell'infrastruttura condivisa (per esempio «il workspace non risponde») non compare qui: non riguarda il tuo progetto, riguarda la macchina su cui girano tutti. Quello resta a chi gestisce la piattaforma.
E vedere un problema non ti concede il permesso di intervenire: le azioni restano quelle che il tuo ruolo gia' consente. Questa e' una finestra, non una chiave.
ok non vuol dire «tutto verificato»
Vuol dire «nessun allarme nella finestra che hai chiesto». La piattaforma controlla le cose che sa controllare: un difetto di una classe che nessuno misura non produce un allarme. Se un cliente ti segnala qualcosa e qui e' verde, ha ragione il cliente.