Skill v1.0.1
currentAutomated scan100/100+3 new
version: "1.0.1" name: fleet description: 'Deep fleet census — discover all oracles across all nodes, collect versions, skills, status. Use when user says "fleet", "census", "all oracles", "fleet status", or wants a complete picture of the oracle network.' argument-hint: "[--quick | --deep | --diff | --map]" zombie: true archived_reason: 'moved to zombie tier via #327 (usage audit, 3,685 sessions mined)' archived_date: 2026-05-13 metadata: internal: true
/fleet — Deep Fleet Census
Count the stars. Know the constellation. The fleet is one body, many hands.
Discover all oracles across all nodes, collect versions, installed skills, last activity, and health status. The complete picture of the oracle network.
Usage
/fleet # Standard census — nodes + oracles + status/fleet --quick # Fast — just count nodes and oracles from contacts/fleet --deep # Deep — ping all, collect versions + skills + activity/fleet --diff # Compare — what changed since last census/fleet --map # Visual — show fleet topology
Step 0: Detect & Load
date "+🕐 %H:%M %Z (%A %d %B %Y)" && ORACLE_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)if [ -n "$ORACLE_ROOT" ] && [ -f "$ORACLE_ROOT/CLAUDE.md" ] && { [ -d "$ORACLE_ROOT/ψ" ] || [ -L "$ORACLE_ROOT/ψ" ]; }; thenPSI="$ORACLE_ROOT/ψ"elseORACLE_ROOT="$(pwd)"PSI="$ORACLE_ROOT/ψ"fi
Load Contacts
if [ ! -f "$PSI/contacts.json" ]; thenecho "❌ No contacts.json. Run /contacts first to register fleet members."exit 1fi
Step 1: Discover Nodes & Oracles
Parse contacts.json into nodes:
python3 -c "import jsondata = json.load(open('$PSI/contacts.json'))contacts = data.get('contacts', {})nodes = {}for name, info in contacts.items():maw = info.get('maw', name)node = maw.split(':')[0] if ':' in maw else 'local'if node == name:node = 'local'if node not in nodes:nodes[node] = []nodes[node].append({'name': name,'maw': maw,'repo': info.get('repo', ''),'notes': info.get('notes', '')})total = sum(len(v) for v in nodes.values())print(f'📡 Fleet Census: {total} oracles across {len(nodes)} nodes')print()for node in sorted(nodes):print(f' 🏗 {node} ({len(nodes[node])} oracles)')for oracle in nodes[node]:repo = f' [{oracle[\"repo\"]}]' if oracle['repo'] else ''print(f' · {oracle[\"name\"]}{repo}')if oracle['notes']:print(f' {oracle[\"notes\"]}')"
Step 2: Ping & Collect (--deep mode)
For each non-local node, send a wormhole ping:
echo ""echo "🔍 Deep scan — pinging all nodes..."echo ""
For each oracle, attempt:
# For local oracles — check repo directlyif [ -d "$HOME/Code/github.com/Soul-Brews-Studio/$REPO_NAME" ]; thenORACLE_DIR="$HOME/Code/github.com/Soul-Brews-Studio/$REPO_NAME"# Last commitLAST_COMMIT=$(git -C "$ORACLE_DIR" log --oneline -1 2>/dev/null)# Last activity (most recent file in ψ/)LAST_ACTIVITY=$(find "$ORACLE_DIR/ψ" -name '*.md' -type f 2>/dev/null | xargs ls -t 2>/dev/null | head -1)# Installed skills countSKILL_COUNT=$(ls "$ORACLE_DIR/.claude/settings"*.json 2>/dev/null | head -1 | xargs python3 -c "import json, systry:data = json.load(open(sys.argv[1]))cmds = [k for k in data.get('permissions',{}).get('allow',[]) if 'SKILL.md' in str(k)]print(len(cmds))except: print('?')" 2>/dev/null || echo "?")fi# For remote oracles — ping via maw heymaw hey $MAW_ADDRESS "fleet census ping — report: version, skill count, last commit" 2>&1
Step 3: Report
Standard Output
📡 Fleet Census — [DATE]Node Oracles Status Last Activity─────────────── ──────── ───────── ─────────────oracle-world 4 ✅ alive 2h agowhite 2 ✅ alive 4h agomba 3 ⏳ remote unknownclinic-nat 1 ⏳ remote unknownTotal: N oracles | M nodes | X alive | Y remote─── Oracle Details ───oracle-world/boonkeeperRepo: Soul-Brews-Studio/boonkeeper-oracleLast commit: abc1234 — descriptionSkills: N installedNotes: Server infra. Foundation operator.oracle-world/mawjs-oracleRepo: Soul-Brews-Studio/mawjs-oracleLast commit: def5678 — descriptionSkills: N installedNotes: maw-js runtime. Budded from.[... for each oracle ...]
--map Mode
📡 Fleet Topologyoracle-world ─┬─ boonkeeper (server infra)├─ mawjs-oracle (maw-js runtime)├─ mawui-oracle (living lens)└─ skills-cli-oracle (the whetstone) ← YOU ARE HEREwhite ────────┬─ mawjs (maw-js origin)└─ white-wormhole (federated proxy)mba ──────────┬─ vpnkeeper (VPN infra)├─ homekeeper (home infra)└─ voltclinic-nat ───── neo (the soul)Legend: ← YOU ARE HERE marks this oracleLines show node membership, not communication paths
--diff Mode
Compare current census with last saved census:
LAST_CENSUS="$PSI/memory/fleet-census-latest.json"
Show:
- New oracles (added since last census)
- Removed oracles (no longer in contacts)
- Changed oracles (different repo, notes, or node)
- Activity delta (commits since last census)
Step 4: Save Census
CENSUS_FILE="$PSI/memory/fleet-census-latest.json"
Save structured JSON with timestamp, node list, oracle details, and ping results. This enables --diff on next run.
Rules
- Discover from contacts — never hardcode nodes or oracles
- Local first — check local repos directly before pinging remote
- No secrets — census never includes .env, tokens, or credentials
- Save for diff — always save census for future comparison
- Generic — works for ANY fleet, ANY contacts.json
- Timeout — don't hang on unresponsive remote nodes (5s timeout per ping)
ARGUMENTS: $ARGUMENTS