Diagnostics & Doctor Mode
v0.5.17 — Aksara includes a built-in self-diagnostics engine that checks your project's health across database, migrations, AI providers, settings, security, file-system, and cache.
v0.5.18 — Every diagnostic issue now includes structured autoremediation actions — machine-readable fix instructions that the Studio UI, CLI, and future agents can surface. See Autoremediation Hints for the full guide.
Quick Start
CLI
# Run all checks
aksara doctor run
# JSON output (for CI/CD)
aksara doctor run --format json
# Quick summary
aksara doctor summary
# AI-specific checks
aksara doctor ai
# Database-specific checks
aksara doctor db
# v0.5.18: Generate a fix-plan with structured actions
aksara doctor fix-plan
aksara doctor fix-plan --format json
aksara doctor fix-plan --only-errors --only-with-actions
Studio Dashboard
Navigate to Diagnostics in the Studio sidebar (or press d) to see a live diagnostics panel with:
- Summary banner — overall status with error/warning/info counts
- Issue cards — each issue with severity, category, message, and fix hints
- Filters — filter by severity (All / Errors / Warnings / Info)
- Search — press / to focus the search field
- Auto-refresh — updates every 10 seconds (toggle Live/Paused)
Python API
from aksara.diagnostics import run_all_checks
report = await run_all_checks()
print(f"Status: {report.overall_status}")
print(f"Errors: {report.stats['errors']}, Warnings: {report.stats['warnings']}")
for issue in report.issues:
print(f"[{issue.severity}] {issue.title}: {issue.message}")
if issue.hint:
print(f" Hint: {issue.hint}")
# v0.5.18: Autoremediation actions
for action in issue.actions:
print(f" → [{action.kind}] {action.title}")
What Gets Checked
| Check |
Kind |
Description |
| Database Connectivity |
database_connectivity |
Tries an actual connection to your PostgreSQL database |
| Migrations Status |
migrations_pending |
Detects unapplied migrations |
| Migration Conflicts |
migrations_conflict |
Finds duplicate migration prefixes |
| AI Profiles |
ai_profile_issue |
Validates AI provider profiles (v0.5.12 validator) |
| AI Provider Secrets |
ai_secret_missing |
Checks required env vars for AI providers |
| Required Settings |
settings_invalid |
Validates DATABASE_URL, pool sizes, thresholds |
| Cache Availability |
cache_unavailable |
Checks AKSARA_CACHE_URL / CACHE_URL |
| File-System Permissions |
file_system_unwritable |
Writes a probe file to temp and migrations dirs |
| Security |
security_warning |
Checks debug mode, Studio exposure, allowed origins |
Severity Levels
- error — Something is broken and must be fixed
- warning — Something is misconfigured or risky
- info — Informational, no action required
Exit Codes (CLI)
| Code |
Meaning |
0 |
No errors (warnings and info are OK) |
1 |
One or more errors detected |
CI/CD Integration
# GitHub Actions example
- name: Health Check
run: aksara doctor run --format json
# Shell script
if aksara doctor run --format json | jq -e '.stats.errors == 0'; then
echo "All clear"
else
echo "Issues found"
exit 1
fi
Data Models
DiagnosticIssue
| Field |
Type |
Description |
kind |
str |
Issue category (e.g., database_connectivity) |
severity |
"error" \| "warning" \| "info" |
Severity level |
title |
str |
Short human-readable title |
message |
str |
Detailed explanation |
hint |
str \| None |
Suggested fix |
meta |
dict \| None |
Extra metadata |
DiagnosticReport
| Field |
Type |
Description |
issues |
List[DiagnosticIssue] |
All findings, sorted by severity |
stats |
dict |
{errors, warnings, info} counts |
timestamp |
datetime |
UTC timestamp |
duration_ms |
float |
Total check duration in ms |
system |
dict |
Aksara version, Python version, OS, arch |
Studio Endpoint
Returns a DiagnosticReport JSON object with all check results.
Keyboard Shortcuts (Studio)
| Key |
Action |
| d |
Navigate to Diagnostics |
| / |
Focus search input |
| Esc |
Clear search and unfocus |
| 7 |
Navigate to Diagnostics (number key) |