Files
blackroad-os-kpis/collectors/local.sh
Alexa Amundson 42fb629ba5 v2: 9 collectors, 60+ KPIs — cloudflare, services, local mac, github-deep, autonomy bars
RoadChain-SHA2048: f59eb7b3bb74e603
RoadChain-Identity: alexa@sovereign
RoadChain-Full: f59eb7b3bb74e60325e3dc2bde2dce2d3f77e4afdadb4b559bf44b95318aac5e44854cc056bec1414243177e469feccdf8a5bf21697916f004706ac784fc70a9ce221703ff29c91581884e5903b5d4a6127a3b570eda54801cf7641a17b13490bb8a3d3be04ee01a96030087800f62f02f47e6ca3d76a3e832c8cdfbeefa3ffbd57acc133d9a7d684161e565dd53636a48410cd38d322620c3fac516a79e5831edf3dab2e81c484f583628c617f85f066351f403163cea6e939484ab33bdaaaa27b23695999aa0e68ae9bff10bf9dfbabcd2785b286600e940359f8e2122c708ed62e7a358accafd224da40151104d77017d4c91fa5b35cce8ca7a728d1b37e0
2026-03-12 23:45:44 -05:00

121 lines
3.2 KiB
Bash

#!/bin/bash
# Collect local Mac KPIs: scripts, databases, packages, disk, processes
source "$(dirname "$0")/../lib/common.sh"
log "Collecting local Mac KPIs..."
OUT=$(snapshot_file local)
# Scripts in ~/bin
bin_count=$(ls -1 ~/bin/ 2>/dev/null | wc -l | tr -d ' ')
bin_size_mb=$(du -sm ~/bin/ 2>/dev/null | cut -f1 || echo 0)
# Shell scripts in home
home_scripts=$(ls -1 ~/*.sh 2>/dev/null | wc -l | tr -d ' ')
# Templates
template_count=$(ls -1 ~/Desktop/templates/ 2>/dev/null | wc -l | tr -d ' ')
# SQLite databases
db_count=$(find ~/.blackroad -name "*.db" -type f 2>/dev/null | wc -l | tr -d ' ')
db_size_mb=$(du -sm ~/.blackroad/ 2>/dev/null | cut -f1 || echo 0)
# Package managers
brew_count=$(brew list 2>/dev/null | wc -l | tr -d ' ' || echo 0)
pip_count=$(pip3 list 2>/dev/null | tail -n +3 | wc -l | tr -d ' ' || echo 0)
npm_global=$(npm list -g --depth=0 2>/dev/null | tail -n +2 | wc -l | tr -d ' ' || echo 0)
# Cron jobs
cron_count=$(crontab -l 2>/dev/null | grep -cv '^#\|^$' || echo 0)
# Git repos (local)
git_repos=$(find ~/ -maxdepth 3 -name ".git" -type d 2>/dev/null | wc -l | tr -d ' ')
# Disk usage
disk_used=$(df -g / | tail -1 | awk '{print $3}')
disk_total=$(df -g / | tail -1 | awk '{print $2}')
disk_pct=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
# Processes
process_count=$(ps aux | wc -l | tr -d ' ')
# Network connections
net_connections=$(netstat -an 2>/dev/null | grep ESTABLISHED | wc -l | tr -d ' ' || echo 0)
# Downloads & Documents
downloads_count=$(ls -1 ~/Downloads/ 2>/dev/null | wc -l | tr -d ' ')
documents_count=$(ls -1 ~/Documents/ 2>/dev/null | wc -l | tr -d ' ')
# FTS5 memory index
fts_entries=0
if [ -f ~/.blackroad/markdown.db ]; then
fts_entries=$(python3 -c "
import sqlite3
c = sqlite3.connect('$HOME/.blackroad/markdown.db')
try:
r = c.execute('SELECT count(*) FROM markdown_fts').fetchone()
print(r[0])
except:
print(0)
" 2>/dev/null || echo 0)
fi
# Systems.db count
systems_count=0
if [ -f ~/.blackroad/systems.db ]; then
systems_count=$(python3 -c "
import sqlite3
c = sqlite3.connect('$HOME/.blackroad/systems.db')
try:
r = c.execute('SELECT count(*) FROM systems').fetchone()
print(r[0])
except:
print(0)
" 2>/dev/null || echo 0)
fi
cat > "$OUT" << ENDJSON
{
"source": "local",
"collected_at": "$TIMESTAMP",
"date": "$TODAY",
"scripts": {
"bin_tools": $bin_count,
"bin_size_mb": $bin_size_mb,
"home_scripts": $home_scripts,
"templates": $template_count
},
"databases": {
"sqlite_count": $db_count,
"blackroad_dir_mb": $db_size_mb,
"fts5_entries": $fts_entries,
"systems_registered": $systems_count
},
"packages": {
"homebrew": $brew_count,
"pip3": $pip_count,
"npm_global": $npm_global
},
"automation": {
"cron_jobs": $cron_count,
"local_git_repos": $git_repos
},
"disk": {
"used_gb": $disk_used,
"total_gb": $disk_total,
"pct": $disk_pct
},
"system": {
"processes": $process_count,
"net_connections": $net_connections
},
"files": {
"downloads": $downloads_count,
"documents": $documents_count
}
}
ENDJSON
ok "Local: ${bin_count} tools, ${db_count} DBs, ${brew_count} brew, ${cron_count} crons, ${disk_pct}% disk"