The sizes below are measured, not estimated. On one machine the directories span three orders of magnitude, which decides the backup strategy by itself.
| Directory / file | Holds | Measured | Back up? |
|---|---|---|---|
| profiles/ | Profile definitions (cordis.yml, cordis.patch.yml, per-profile node_modules) | 1 MB | Yes — this is your config |
| skills/ | Installed skills | 19 MB | Yes — reinstalling is work |
| storages/ | Runtime storage | 21 MB | Yes — opaque, but it is state |
| llm-deepseek/ | Local model state | 1 MB | Recommended |
| .credentials.yaml | Gateway and key references | a few hundred bytes | Yes, but keep it out of public backups — it references your keys |
| sessions/ | Session history | 896 MB | Optional: keep for records, skip for recovery |
| attachments/ | Session attachments | 275 MB | Same, and a big one |
| dsh-runtimes/ | Downloaded runtimes | 314 MB | No — reproducible |
| cache/ | Cache | 43 MB | No — rebuilt on demand |
| logs/ | Startup and runtime logs | 6 MB | Keep the last few; this is your only evidence |
| session-backups/, sessions-archive-big/ | Session backups and archives | varies | No |
By this table, only tens of megabytes really matter (profiles + skills + storages + credentials). The remaining ~1.5 GB is mostly regenerable.
Minimal backup command
cd ~/.dsh && tar -czf ~/dsh-config-$(date +%Y%m%d).tgz profiles skills storages llm-deepseek .credentials.yaml
This skips sessions and runtimes, so the archive lands in the tens of megabytes. Add sessions if you want history, but first understand why it is 896 MB.
Safe cleanup order
- cache and dsh-runtimes first — regenerable, lowest risk.
- Then sessions and attachments — the big ones, but gone means gone. Confirm nothing there needs revisiting.
- Keep the last few logs; deleting them all leaves you blind next time.
- Do not touch profiles, skills, storages, or credentials.