Problem
gradata install does too little. Four self-install gaps surfaced in a single diagnostic session on a fresh WSL host:
| # |
Gap |
Symptom |
| 1 |
No daemon supervision |
After install, :8765 is not listening. Dashboard shows "Local Gradata daemon not running. Run gradata sync locally, then refresh." User must manually python -m gradata.daemon every boot. |
| 2 |
No cloud credential bootstrap |
gradata sync fails with no cloud credential found. Run gradata cloud enable --key ... first. ~/.gradata/config.toml is never created by the installer. |
| 3 |
MCP registration is per-client and incomplete |
gradata install configures hooks only. Cursor users get an MCP entry via separate setup; Claude Code / Hermes / Codex users get nothing. The server itself works — wiring is the gap. |
| 4 |
No update check |
CLI has zero self-update awareness. No pip index versions check, no update available flag in gradata doctor. Users silently run stale versions for weeks. |
Proposed fix — gradata install should:
Acceptance criteria
- Fresh
pip install gradata && gradata install --agent claude-code on a clean WSL host results in:
:8765 listening within 5 seconds of install completing
gradata cloud status shows sync_enabled: True (if key provided) or a clear "run gradata cloud enable" hint (if --no-cloud)
claude mcp list shows the gradata entry
gradata doctor exits 0 with no [!] or [-] markers
- Same on macOS via launchd
- Re-running
gradata install is idempotent (no duplicate service units, no duplicate MCP entries)
Evidence
Diagnostic session 2026-05-13 confirmed all four gaps on a working WSL install of gradata 0.7.5 (editable, from /home/olive/work/gradata-sdk/Gradata). The MCP server binary itself responds correctly to an initialize handshake — code is fine, wiring is the gap.
Problem
gradata installdoes too little. Four self-install gaps surfaced in a single diagnostic session on a fresh WSL host::8765is not listening. Dashboard shows "Local Gradata daemon not running. Rungradata synclocally, then refresh." User must manuallypython -m gradata.daemonevery boot.gradata syncfails withno cloud credential found. Run gradata cloud enable --key ... first.~/.gradata/config.tomlis never created by the installer.gradata installconfigures hooks only. Cursor users get an MCP entry via separate setup; Claude Code / Hermes / Codex users get nothing. The server itself works — wiring is the gap.pip index versionscheck, noupdate availableflag ingradata doctor. Users silently run stale versions for weeks.Proposed fix —
gradata installshould:~/.config/systemd/user/gradata-daemon.serviceon Linux/WSL (withsystemd=truecheck); equivalent launchd plist on macOS; Windows service on native Windows. Runsystemctl --user enable --now gradata-daemon(orloginctl enable-lingerfor headless WSL).gradata install(skippable with--no-cloud). Write~/.gradata/config.tomlwith the key. Verify with one round-trip toapi.gradata.ai.gradata doctorupdate check: query PyPI once per day, cache result, emitupdate available: 0.7.5 -> X.Y.Zline. Bonus:gradata self-updatesubcommand that runspip install --upgrade gradata.Acceptance criteria
pip install gradata && gradata install --agent claude-codeon a clean WSL host results in::8765listening within 5 seconds of install completinggradata cloud statusshowssync_enabled: True(if key provided) or a clear "rungradata cloud enable" hint (if--no-cloud)claude mcp listshows the gradata entrygradata doctorexits 0 with no[!]or[-]markersgradata installis idempotent (no duplicate service units, no duplicate MCP entries)Evidence
Diagnostic session 2026-05-13 confirmed all four gaps on a working WSL install of gradata 0.7.5 (editable, from
/home/olive/work/gradata-sdk/Gradata). The MCP server binary itself responds correctly to aninitializehandshake — code is fine, wiring is the gap.