npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

kiro-scout

v1.0.1

Published

Dashboard web per esplorare e analizzare le sessioni salvate di Kiro (zero dipendenze).

Readme

Kiro Scout

Applicativo web a dipendenze zero (solo moduli built-in di Node) che avvia un server locale e apre una dashboard per esplorare e analizzare tutte le informazioni recuperabili dalle sessioni salvate di Kiro. Vengono lette sia le sessioni della CLI (~/.kiro/sessions/cli/, formato <id>.json/.jsonl/.history) sia quelle di chat/IDE (~/.kiro/sessions/<workspace>/sess_*/ con session.json + messages.jsonl). Ogni sessione è etichettata con l'Origine (CLI o Chat) e tutte concorrono ai conteggi e agli aggregati generali.

Installazione ed esecuzione rapida

Installa il comando globalmente:

npm install -g kiro-scout
kiro-scout

Oppure eseguilo al volo, senza installarlo, con npx:

npx kiro-scout

In entrambi i casi il server parte e il browser si apre automaticamente su http://127.0.0.1:4321/.

Avvio

cd kiro-scout
npm start

Oppure direttamente:

node server.js

Il browser si apre automaticamente su http://127.0.0.1:4321/.

Opzioni

node server.js --port 8080          # cambia porta
node server.js --host 127.0.0.1     # cambia host (default: solo locale)
node server.js --dir "C:\percorso\.kiro\sessions"   # cartella sessioni alternativa
node server.js --no-open            # non aprire il browser
node server.js --no-resume          # disabilita il pulsante "Riprendi" (nessun terminale lanciabile)
node server.js --kiro-cmd kiro-cli  # nome/percorso dell'eseguibile Kiro CLI (default: kiro-cli)

Cosa mostra

  • Panoramica: sessioni totali, score medio di efficienza (1–10), crediti totali e n° interazioni, spazio su disco, messaggi, prompt, chiamate a tool, blocchi thinking, n° progetti.
  • Grafici: sessioni per progetto, modelli, agenti, tool più usati e crediti per progetto.
  • Timeline: grafico dell'andamento temporale (sessioni per giorno); clic su una barra per filtrare la tabella su quel giorno.
  • Ricerca full-text: cerca una parola/frase dentro le conversazioni e mostra gli snippet evidenziati; clic su un risultato per aprire la sessione.
  • Filtri: per progetto e per intervallo di date, oltre alla ricerca rapida sui metadati.
  • Tabella sessioni: ricercabile e ordinabile (score, origine CLI/Chat, aggiornata, progetto, titolo, agente, modello, n° messaggi, n° tool, dimensione).
  • Dettaglio sessione (clic su una riga): metadati completi, statistiche conversazione, permessi, dimensioni file, crediti totali e consumo per singola interazione (turno: crediti, richieste al modello, durata, uso del contesto, orario) e trascrizione completa (prompt utente, testo assistente, blocchi thinking, chiamate a tool e risultati).

Nota sui crediti: il consumo è letto da> session_state.conversation_metadata.user_turn_metadatas[].metering_usage (unità "credit"), presente in ~metà delle sessioni. I conteggi di token (input_token_count/output_token_count) esistono nello schema ma Kiro li salva sempre a 0, quindi non vengono mostrati.

  • Export: dal pannello di dettaglio, pulsanti per scaricare la sessione in Markdown o JSON.
  • Riprendi sessione: accanto a ogni sessione CLI (nella tabella e nel pannello di dettaglio) un pulsante ▶ Riprendi chiede al server di aprire un terminale sulla macchina che esegue il server ed eseguire kiro-cli chat --resume-id <ID> nella cartella originale della sessione. Il pulsante non compare per le sessioni chat/IDE, che non si riprendono con kiro-cli (l'endpoint risponde 400 se richiesto). Accanto al pulsante Riprendi c'è 📋 Copia comando, che copia negli appunti kiro-cli chat --resume-id <ID> così puoi lanciarlo nel terminale che preferisci (la copia è lato client e resta disponibile anche con --no-resume). Supporta Windows (cmd), macOS (Terminal.app via osascript) e Linux (x-terminal-emulator/gnome-terminal/konsole/xterm). Si disabilita con --no-resume; l'eseguibile si personalizza con --kiro-cmd.

Score di efficienza (1–10)

Ogni chat riceve uno score di efficienza della comunicazione (colonna "Score", ordinabile; breakdown nel dettaglio). Metodo ispirato a PARADISE (Walker et al. 1997): performance = successo − costi pesati. I pesi sono stati derivati dall'analisi statistica delle sessioni reali; le metriche ridondanti (fortemente correlate) sono state unificate per non contare due volte lo stesso segnale.

Sotto-punteggi e pesi di default (personalizzabili dal pannello "⚙ Pesi"):

| Fattore | Cosa misura | Peso | Normalizzazione | |---|---|---|---| | Economicità | crediti/turno (o richieste/turno se mancano i crediti) | 0.40 | rango percentile invertito | | Correzioni utente | quota di prompt di correzione/ripensamento | 0.30 | cap-based (0 = perfetto) | | Affidabilità tool | tasso di errore dei tool | 0.20 | cap-based | | Gestione contesto | picco di uso del contesto | 0.10 | rango percentile invertito |

score = 1 + 9 × media_pesata(sotto-punteggi). Le sessioni con pochi segnali (es. senza crediti) vengono avvicinate a un valore neutro tramite shrinkage bayesiano (regolarizzazione), così non ottengono un 10 "facile". I cap delle metriche di qualità sono ricavati dal 90° percentile del tuo storico. I pesi si possono cambiare a runtime (via UI o query ?wCost&wCorrection&wToolReliability&wContext).

API JSON

| Endpoint | Descrizione | |---|---| | GET /api/health | stato + numero sessioni | | GET /api/stats | aggregati globali (include byDay per la timeline) | | GET /api/sessions | elenco sessioni con metadati e statistiche | | GET /api/sessions/:id | dettaglio sessione (accetta anche il prefisso dell'id) | | GET /api/sessions/:id/export?format=md\|json | scarica la sessione in Markdown o JSON | | GET /api/search?q=... | ricerca full-text nelle conversazioni (con snippet) | | POST /api/refresh | ricostruisce l'indice in memoria | | POST /api/sessions/:id/resume | apre un terminale sul server ed esegue kiro-cli chat --resume-id <ID> (disattivabile con --no-resume) |

Nota sulla sicurezza

Il server si lega di default a 127.0.0.1 (raggiungibile solo dal tuo PC) e non ha autenticazione. Espone in sola lettura i dati delle sessioni, che possono contenere informazioni sensibili (percorsi, codice, trascrizioni). Non usare --host 0.0.0.0 né esporlo in rete senza aggiungere un livello di autenticazione.

Il pulsante Riprendi è l'unica operazione che esegue qualcosa: lancia un terminale sulla macchina del server con kiro-cli chat --resume-id <ID>. Per limitare i rischi:

  • l'id di sessione è validato (^[A-Za-z0-9._-]+$) e risolto contro l'indice, così non è possibile iniettare comandi tramite l'URL;
  • l'endpoint rifiuta le richieste POST con header Origin cross-site (mitigazione CSRF), evitando che una pagina web esterna apra terminali sul tuo PC mentre la dashboard è in ascolto in locale;
  • la funzione si disattiva del tutto con --no-resume;
  • impostando la variabile d'ambiente KIRO_SCOUT_NO_EXEC=1 l'endpoint non apre alcun terminale e restituisce solo il comando che avrebbe eseguito (modalità sicura / dry-run).

Trattandosi di esecuzione di processi locali, mantieni il server su 127.0.0.1 e non esporlo in rete.

Struttura

kiro-scout/
├── package.json      # script npm (start)
├── server.js         # server HTTP + API (built-in http/fs/path)
├── parser.js         # lettura e analisi delle sessioni
└── public/
    ├── index.html    # struttura dashboard
    ├── styles.css    # tema scuro
    └── app.js         # logica frontend (vanilla JS)