Run comprehensive joelclaw health checks, including postboot/daily checks for NAS, MinIO, Convex, Postgres, Typesense, Inngest, Panda/Flagg authority split, k8s, worker, Redis, OTEL, tests, repo sync, memory pipeline, and disk. Use when: 'system health', 'postboot check', 'daily system check', 'health check', 'is everything working', 'system status', 'how's the system', 'check everything', or at session start to orient.
71
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Run scripts/postboot.sh for the read-only postboot/daily topology sweep. It checks the Flagg/Panda authority split, NAS mounts, NFS tuning, custom NAS MinIO, Central Postgres, local Convex, Typesense, Inngest, and shadow Central health without printing secrets. The daily automation also reviews recent Codex infra transcripts so completed work does not stay trapped in chat.
The current health script is still too Panda-centric: it treats Panda-era k8s/PDS/NodePort surfaces as if they were the whole joelclaw system. That is no longer aligned with the Central migration vision.
Health needs to become lane-based:
JOELCLAW_CENTRAL_URL, outbox backlog, fresh capture timestamps, and transcript backup freshness.Until that rewrite lands, read red Panda/k8s/PDS checks as migration TODOs, not proof that Flagg Central is dead.
~/Code/joelhooks/joelclaw-runtime/skills/joelclaw-system-check/scripts/postboot.shRun scripts/health.sh for the older full system health report with 1-10 score. This is heavier because it includes tests and TypeScript.
~/Code/joelhooks/joelclaw-runtime/skills/joelclaw-system-check/scripts/health.shUse this after a reboot, after storage/network work, and for the daily automation.
Default command:
POSTBOOT_NAS_BENCHMARK_MIB=1 \
~/Code/joelhooks/joelclaw-runtime/skills/joelclaw-system-check/scripts/postboot.shDefault posture:
s3 proof paths.POSTBOOT_HEAVY=1.health.sh unless POSTBOOT_RUN_FULL_HEALTH=1..env, MinIO keys, Convex admin keys, or Postgres URLs with passwords.100.67.156.41:39000 as canonical.29990 as a warning/reference surface only.JOELCLAW_CENTRAL_URL and direct Typesense helpers to still point at Panda until explicit Central cutover.Critical checks:
| Check | What Green Means |
|---|---|
| authority split env | Flagg still points Central capture/search at Panda while Flagg is shadow |
| Inngest direct health | the authoritative Inngest endpoint responds on /health; on Flagg this falls back to http://panda:8288 if INNGEST_URL is unset |
| Run capture health | Panda /api/runs/health returns ok=true with local Machine auth |
| Typesense configured health | configured Typesense endpoint responds on /health |
| NAS launchd label | system/com.joelclaw.central.nas-mounts is loaded with no failing last exit |
| NAS route 10GbE/MTU | route to 192.168.1.163 uses en0 and MTU 8192 |
| NAS mounts status | /Volumes/nas-nvme and /Volumes/three-body are mounted from LAN IP exports |
| NAS verifier write probe | service checkout verify-nas.sh passes |
| NFS tuned options | live mounts show rsize=524288,wsize=524288,readahead=128 |
| custom MinIO ready/live | custom NAS MinIO responds on 39000 |
| Central Postgres | socket, TCP, and readiness checks pass |
| local Convex | backend /version and dashboard respond |
Warning/reference checks:
3900129990joelclaw status and joelclaw inngest status CLI wrappers, because those can reveal local env drift even when the authoritative endpoint is healthyIf postboot.sh fails, fix critical failures first. Do not chase warning/reference failures before the required path is green.
The daily automation should review recent Codex infra sessions after the health script runs.
Preferred indexed search:
joelclaw sessions search \
"NAS three-body MTU MinIO Convex Postgres Typesense Inngest Panda Flagg Central postboot" \
--source typesense \
--machine all \
--runtime codex \
--limit 10 \
--extractIf indexed Codex results are stale, irrelevant, or missing today's work, use a bounded local raw fallback:
tail -n 80 ~/.codex/session_index.jsonl
find ~/.codex -type f -name "rollout-*.jsonl" -mtime -2Review only bounded snippets, final answers, commands, and receipts. Do not dump full transcripts or secrets.
Promote durable facts into the right surface:
skills/system-architecture/SKILL.mdskills/three-body/SKILL.mdskills/minio/SKILL.mdskills/local-convex/SKILL.md.brain/resources/*.svxTreat in-progress subagent threads and sessions without a final answer as leads, not architecture truth.
Active Codex automation:
daily-joelclaw-postboot-system-check/Users/joel/Code/joelhooks/joelclaw-runtimePOSTBOOT_NAS_BENCHMARK_MIB=1 skills/joelclaw-system-check/scripts/postboot.sh, summarize failures/warnings, review recent Codex infra transcripts, report uncaptured durable facts, and avoid secret output.| Check | What | Green (10) | Yellow (5-7) | Red (1-3) |
|---|---|---|---|---|
| k8s cluster | pods in joelclaw namespace | 4/4 Running, 0 restarts | partial pods | no pods |
| pds | AT Proto PDS on :9627 | version + collections | pod running, host publish degraded | pod not running |
| worker | system-bus on :3111 | 16+ functions | responding, low count | down |
| inngest server | :8288 reachable | responding | — | down |
| agent-mail | Flagg-local MCP mail on :8765 | alive + mailbox visible | degraded counts/search | unavailable |
| redis/gateway | Redis + gateway session queues | connected, low pending queue | connected, backlog rising | unavailable |
| typesense/otel | Typesense health + OTEL query path | healthy + queryable | healthy, query degraded | unavailable |
| tests | isolated per-file bun test in system-bus | 0 fail | — | failures |
| tsc | tsc --noEmit | clean | — | type errors |
| repo sync | monorepo HEAD vs origin/main | in sync | ahead/behind | repo unavailable |
| memory pipeline | joelclaw inngest memory-health | healthy checks | degraded checks | failing checks |
| pi-tools | extension deps installed | all 3 deps | — | missing |
| git config | user.name + email set | set | — | missing |
| active loops | joelclaw loop list | queryable | query degraded | unavailable |
| gogcli | Google Workspace auth | account authed, token valid | token stored, no password | not configured |
| disk | free space + loop tmp | <80% used | — | >80% |
| stale tests | __tests__/ + acceptance tests | clean | — | present |
Use the agent-session-capture-backup skill when the check needs proof that Pi/Claude/Codex transcript activity is captured and backed up across Flagg, Blaine, and Panda.
Fast audit/repair command from ~/Code/joelhooks/joelclaw:
bun scripts/agent-session-audit-backup.ts \
--hosts flagg,blaine,panda \
--central-url http://joels-mac-studio.tail7af24.ts.net:3111 \
--backup-root /Volumes/three-body/sessions \
--repair-env \
--sync=true \
--replay-outbox \
--replay-limit 250 \
--replay-max-bytes 10485760Daily durable workflow:
system/agent-session.capture-backup.verifysystem/agent-session.capture-backup.requestedTZ=America/Los_Angeles 15 5 * * */Volumes/three-body/sessions/receipts/*.jsonTreat stale or empty /Volumes/three-body/sessions as a critical backup failure even when runs_dev Typesense indexes are fresh. Typesense is derived; raw transcripts and run blobs are the source of truth.
Repo drift: cd ~/Code/joelhooks/joelclaw && git fetch origin && git status -sb
pi-tools broken: cd ~/.pi/agent/git/github.com/joelhooks/pi-tools && bun add @sinclair/typebox @mariozechner/pi-coding-agent @mariozechner/pi-tui @mariozechner/pi-ai
PDS unreachable: curl -fsS http://localhost:9627/xrpc/_health then kubectl get deploy,svc,pods,pvc -n joelclaw | rg 'bluesky-pds|NAME' (or if pod down: kubectl rollout restart deployment/bluesky-pds -n joelclaw)
Worker down: joelclaw inngest restart-worker --register
Stale tests: rm -rf ~/Code/joelhooks/joelclaw/packages/system-bus/__tests__/ && find ~/Code/joelhooks/joelclaw/packages/system-bus/src -name "*.acceptance.test.ts" -delete
System-bus test false reds: the health script runs each src/**/*.test.ts file in its own Bun process because several legacy tests monkey-patch globals or use mock.module. If the aggregate health check is green but raw bun test is red, suspect inter-file mock leakage before treating runtime code as broken.
Loop tmp bloat: rm -rf /tmp/agent-loop/loop-*/ (only when no loops are running)
When a run appears stuck after first step:
joelclaw run <run-id>If trace shows Finalization failure with "Unable to reach SDK URL":
Verify registration/health:
joelclaw inngest status
Verify function is present where expected:
joelclaw functions | rg -i "manifest-archive|<function-name>"
Check for stale app registrations in Inngest UI/API and remove stale SDK URLs.
Assume possible handler blocking (not just network): review recent step code for filesystem/Redis/subprocess blocking before step response.
d952451
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.