Sondă de proces · nativă macOS

Vitals

Ce rulează acum pe mașina ta — și de când.

Vede ce sesiuni Claude Code sunt vii pe Mac-ul tău, pe toate conturile — și spune „nu știu” când nu poate confirma, în loc să ghicească.

sesiuni sondate acum
claude · sessionpid + procStart matchalive
cron · watcherPID reused sincestale
mcp-serverps unreadableunknown
claude · sessionpid + procStart matchalive
scroll

Problema

Ghicitul cu încredere nu e o măsurătoare

Un next dev pornit acum trei ore, un server MCP lăsat de ieri, un port ocupat de un proces pe care nu-l mai recunoști. Verificarea manuală înseamnă ps, lsof, kill — și o presupunere: dacă există un proces cu acel PID, presupui că e cel de azi, deși PID-urile se reciclează.

O sondă care nu poate confirma reciclarea și răspunde oricum „viu” nu măsoară nimic — doar ghicește, cu încredere.

Ce e în fereastră azi

Șase lucruri pe care aplicația chiar le face

Vede sesiunile Claude Code de pe toate conturile configurate ale mașinii, nu doar contul implicit

Verdict ternar per sesiune — viu, mort sau necunoscut — niciodată un „da”/„nu” ghicit

Confirmă reciclarea de PID comparând momentul real de pornire al procesului cu cel înregistrat, nu doar dacă există un proces cu acel număr

Pictogramă în bara de meniu, pentru o privire fără să deschizi fereastra

Istoric local, append-only, al identității fiecărei sesiuni — fără cont, fără cloud

Un server MCP care citește direct de pe disc și răspunde chiar și cu aplicația închisă

Verdictul

Trei stări, niciodată un boolean

Culorile de mai jos sunt exact cele din aplicație — „necunoscut” are propria culoare, niciodată pe cea de „mort”.

Viu

Procesul există și procStart se potrivește cu ce e înregistrat — reciclarea de PID e exclusă.

Mort

Niciun proces cu acel PID, sau unul cu alt procStart: PID-ul a fost reciclat de alt proces.

Necunoscut

Procesul există, dar reciclarea nu poate fi exclusă — lipsește baseline-ul sau ps n-a putut fi citit. Nu devine niciodată un „viu” ghicit.

Sources/VitalsCore/Liveness.swift, Theme.swift

De ce poți avea încredere

Șase lucruri verificabile, nu doar promise aici

Fiecare citește dintr-un fișier anume sau dintr-o măsurătoare live pe flota reală.

„Necunoscut” e un verdict real, nu doar o iconiță

Ambele ramuri „n-am putut măsura” din funcția de verdict întorc .unknown — nu un „viu” ghicit ca înainte de 4 sep 2026.

Sources/VitalsCore/Liveness.swift — verdict(for:)

Reciclarea de PID, prinsă la sursă

procStart se compară ca dată, nu ca șir — un fix care a reparat un verdict fals „mort” raportat 21 din 30 de zile, pentru zilele 1-9 ale lunii.

Sources/VitalsCore/Liveness.swift — compareProcStart; docs/HANDOFF.md, 3 sep

Nu doar contul implicit

Enumerarea conturilor găsește toate conturile Claude Code configurate pe mașină, cu sursa fiecăruia — alias, variabilă de mediu, sau director orfan. Găsește și un cont numit doar de un alias de shell, care încă n-are folder pe disc.

Sources/VitalsCore/Accounts.swift

Un server MCP care răspunde și cu aplicația închisă

Podul MCP citește direct de pe disc, nu printr-un socket către aplicație — răspunde chiar dacă fereastra Vitals nu e deschisă.

Package.swift — comentariul țintei VitalsMCP

Unde e azi linia

Ce e testat, și ce e în fereastră

Un mecanism testat nu e același lucru cu o funcție livrată. Iată exact unde se termină una și începe cealaltă.

Ținta generică există — dar nu în fereastră

WatchTarget/TargetProbe/TargetReconciler aplică același verdict ternar oricărui PID, comandă sau port — testat, cu evenimentul „reoccupied” care spune „portul 3000 e alt proces decât azi-dimineață”.

Sources/VitalsCore/{WatchTarget,TargetProbe,TargetReconciler}.swift

Accesibilă azi doar din linia de comandă, o singură dată

vitals-tool watch pid:<pid> / cmd:<pattern> / port:<port> întoarce verdictul o singură dată, la cerere. Nu există o buclă care să repete sondarea singură.

REZULTAT.md — „TargetReconciler nu e integrat într-o buclă de scanare”

Fereastra arată doar sesiuni Claude Code

Panoul principal grupează sesiunile pe cont și afișează verdictul lor — niciun proces non-Claude nu apare acolo azi.

Sources/Vitals/RootView.swift; docs/HANDOFF.md, 4 sep

Nimic din secțiunea asta nu e o promisiune de supraveghere de porturi ca funcție a interfeței — azi nu e.

Cerințe

Sistem
macOS 14.0 sau mai nou
Rețea
Niciuna — magazinul e local, SQLite
Cont
Niciunul — citește conturile Claude Code deja configurate

Întrebări

Pentru că uneori chiar nu se poate confirma dacă procesul de acum e cel de la pornire — lipsește baseline-ul, sau ps n-a putut fi citit. Un verdict ghicit ar fi mai liniștitor și mai fals. „Necunoscut” nu se transformă niciodată în „mort”, nici nu se ascunde ca „0 sesiuni”.

Mecanismul care ar face asta există și e testat — dar nu rulează încă în fereastra aplicației. Azi, fereastra arată doar sesiuni Claude Code; verdictul generic e accesibil manual, din linia de comandă.

Magazinul e local, SQLite, append-only. Serverul MCP citește direct de pe disc, nu printr-un apel de rețea.

Cere macOS 14 sau mai nou — cerința declarată de pachet.

Da. Aplicația verifică licența, iar build-ul servit e semnat cu Developer ID și notarizat de Apple — Gatekeeper îl acceptă la prima deschidere, fără avertisment.

Stare

Se poate cumpăra

Aplicația verifică licența — cheia publică Ed25519 și verificatorul sunt în binarul care se descarcă de pe pagina asta, semnat cu Developer ID și notarizat de Apple. Se deschide cu un dublu-clic obișnuit, de prima dată.

29 €

+ TVA, calculat la finalizare după țara ta

Activare

Cum activezi licența

Descarcă aplicația

Descarcă versiunea 1.0.2

2.8 MB

Deschide aplicația, mergi la Preferințe → Licență și lipește cheia primită pe email.