Skip to content

feat: add volute doctor command for self-diagnosis and bug-report bundles (#829) - #839

Merged
hekataion merged 2 commits into
mainfrom
feat/829-volute-doctor
Jul 24, 2026
Merged

feat: add volute doctor command for self-diagnosis and bug-report bundles (#829)#839
hekataion merged 2 commits into
mainfrom
feat/829-volute-doctor

Conversation

@hekataion

Copy link
Copy Markdown
Collaborator

Summary

volute doctor — the one command a user runs when something breaks, since Volute keeps no telemetry.

Default mode

Runs local health checks and prints pass/fail:

  • Daemon reachable + version
  • Setup complete + provider configured (names only, never values)
  • DB opens + migration count
  • Node/npm versions
  • Install type (system/user-systemd/user-launchd/manual)
  • Isolation mode (sandbox config)
  • Disk space in ~/.volute
  • Per-mind process status

--bundle flag

Writes volute-doctor-YYYY-MM-DD-HHMMSS.tar.gz containing:

  • Diagnostic report + system info + volute status output
  • Redacted config.json (secrets.json is never read)
  • Redacted shared and per-mind env.json (all values masked)
  • Scrubbed daemon and mind log tails

Redaction guarantees

  • Secret-named keys (apiKey, token, password, etc.) → entire subtree masked
  • env maps → all values masked unconditionally
  • Credential-shaped strings anywhere → masked
  • Log text: key=value pairs, Bearer tokens, known token prefixes (sk-, vmt_, xoxb-, etc.) → scrubbed

All redaction helpers are pure and tested (15 tests in test/doctor-redaction.test.ts).

Verification

  • volute doctor prints readable diagnostics
  • volute doctor --bundle creates tarball
  • Bundle contains no secrets (verified by planting secrets in every location)
  • All tests pass (3266, including 15 new redaction tests)

Fixes #829

🤖 Generated with Claude Code

…dles (#829)

volute doctor runs local health checks (daemon, setup, provider, DB, node,
install type, isolation, disk, minds) and prints pass/fail results.

volute doctor --bundle writes a sanitized tarball for attaching to bug reports:
redacted config.json (secrets.json never read), env.json with all values masked,
scrubbed daemon and mind log tails, status output. Aggressive redaction — secret
keys, OAuth tokens, Bearer headers, and credential-shaped strings are all masked.

The redaction helpers (redactValue, redactConfigJson, redactEnvJson, redactLogText)
are pure and tested by test/doctor-redaction.test.ts (15 tests).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions github-actions Bot added the feat label Jul 23, 2026
Reports whether  will work by detecting
Chrome-family browsers using the same logic as the pages extension.

Co-Authored-By: Claude <noreply@anthropic.com>
@hekataion
hekataion enabled auto-merge (squash) July 24, 2026 15:16
@hekataion
hekataion merged commit f973487 into main Jul 24, 2026
6 checks passed
@hekataion
hekataion deleted the feat/829-volute-doctor branch July 24, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: volute doctor — self-diagnosis and a shareable support bundle

2 participants