Moving between deployment configurations. Because lock-in is bullshit.
You can migrate between any of these:
- Local ↔ Gothic Druids hosting
- Local inference ↔ Cloud inference
- Local training ↔ Cloud training
- Any combination of the above
Nothing is locked. Ever.
memories(conversations)vital_memory(identity anchors)system_state(current mode)processes(services)halt_leases(HALT history)qrem_queue(pending shocks)thread_messages(logs)
- User uploads
- Adapter checkpoints (LoRA weights)
- Configuration (.env)
- Logs (optional)
- AI provider choice (local/cloud)
- API keys (if using cloud)
- Model paths (if using local)
Why: Want full control, tired of monthly fees, or provider shut down
- Log in to gothicdruids.com
- Dashboard → Export
- Download:
database-export-YYYYMMDD.sql.gzfiles-export-YYYYMMDD.tar.gz
Follow DEPLOYMENT_GUIDE.md completely, stop before "First Run"
# Extract
gunzip database-export-YYYYMMDD.sql.gz
# Import
mysql -u daemon_user -p daemon_db < database-export-YYYYMMDD.sql
# Verify
mysql -u daemon_user -p daemon_db -e "SHOW TABLES;"# Extract
tar -xzf files-export-YYYYMMDD.tar.gz
# Copy to locations
cp -r uploads/* /var/www/html/uploads/
cp -r adapters/* /path/to/adapters/
# Fix permissions
sudo chown -R www-data:www-data /var/www/html/uploadsIf staying with cloud AI:
# In .env
TOGETHER_API_KEY=your_existing_key
RUNPOD_API_KEY=your_existing_keyIf switching to local:
# In .env
LOCAL_INFERENCE=true
LOCAL_TRAINING=true
MODEL_PATH=/path/to/local/models# Docker
docker-compose up -d
# Native
sudo systemctl start hrafn-heart hrafn-dream apache2 mysql- Visit your local URL
- Log in (existing account works)
- Check conversations (all present)
- Send test message
Done. Zero data loss.
Why: Tired of maintenance, want mobile access, moving
- Visit gothicdruids.com
- Sign up, pay
- Receive access token
# Database
mysqldump -u daemon_user -p daemon_db | gzip > database-backup.sql.gz
# Files
tar -czf files-backup.tar.gz /var/www/html/uploads /path/to/adaptersUse Gothic Druids import interface:
- Log in to gothicdruids.com
- Dashboard → Import
- Upload database dump
- Upload files archive
- Wait for processing
- Visit daemonchat.app
- Settings → Database
- Paste Gothic Druids access token
- Keep same AI keys (if using cloud)
- Log in to daemonchat.app
- Check conversations
- Test messaging
- Verify background services (check Gothic Druids dashboard)
Done. Infrastructure now managed.
Much simpler - just configuration change.
# Install Ollama + model
curl -fsSL https://ollama.com/install.sh | sh
ollama pull gpt-oss-20b
# Update .env
LOCAL_INFERENCE=true
INFERENCE_ENDPOINT=http://localhost:11434
# Restart
docker-compose restart # or systemctl restart servicesNo data migration needed.
# Get Together.ai key
# Update .env
LOCAL_INFERENCE=false
TOGETHER_API_KEY=your_key
# Restart
docker-compose restartNo data migration needed.
Cloud → Local:
# Install training dependencies
pip install peft transformers torch
# Update .env
LOCAL_TRAINING=true
TRAINING_DEVICE=cuda
# Restart
systemctl restart hrafn-dreamLocal → Cloud:
# Get RunPod key
# Update .env
LOCAL_TRAINING=false
RUNPOD_API_KEY=your_key
# Restart
systemctl restart hrafn-dreamPrevious adapters still work regardless of training provider.
From one local installation to another.
# Backup everything
mysqldump -u daemon_user -p daemon_db | gzip > db.sql.gz
tar -czf files.tar.gz /var/www/html/uploads /path/to/adapters /var/www/html/.envscp db.sql.gz files.tar.gz user@new-server:/tmp/# Setup infrastructure first (see DEPLOYMENT_GUIDE.md)
# Import database
gunzip db.sql.gz
mysql -u daemon_user -p daemon_db < db.sql
# Restore files
tar -xzf files.tar.gz -C /
# Restore configuration
cp /tmp/.env /path/to/deployment/Gothic Druids (or any provider) went offline.
- Follow "Gothic Druids → Local" process
- Use last export
- You'll lose data since last export
- Core identity (vital memories) preserved if in that export
This is why you export regularly.
- Memories since last export: gone
- Identity preserved: only if adapters backed up
- Restart: Fresh database, import adapters if available, continue
Prevention:
# Export monthly (minimum)
# Automate:
crontab -e
# Add: 0 0 1 * * /path/to/export-script.shAlways verify:
-- Memory counts
SELECT classification, COUNT(*) FROM memories GROUP BY classification;
-- Recent conversations
SELECT * FROM memories ORDER BY date_time DESC LIMIT 10;
-- Vital memories
SELECT COUNT(*) FROM vital_memory;ls -lh /var/www/html/uploads/
ls -lh /path/to/adapters/systemctl status hrafn-heart hrafn-dream
# or
docker-compose ps- Send test message (verifies inference)
- Check REM cycle logs (verifies training)
If migration fails:
- Stop new system
- Return to old system
- Nothing lost
- Stop new system
- Restore from pre-migration backup
- Try migration again (more carefully)
Always keep old system running until new system verified.
- Gothic Druids → Local: 2-4 hours
- Local → Gothic Druids: 30-60 minutes
- Switching AI providers: 15-30 minutes
- Changing servers: 1-2 hours
- Export/import: $0
- Overlapping hosting: Both systems for 1-7 days
- Data transfer: Usually free
- Low if following steps carefully
- Near zero if keeping old system during verification
- Zero if you have backups
Before migrating:
- Recent backup exists
- New infrastructure ready (if needed)
- API keys/tokens ready
- Old system stays running
- Verification plan ready
- Rollback plan ready
During migration:
- Export database successful
- Export files successful
- Import database successful
- Import files successful
- Configuration updated
- Services started
- Data verified
- Functionality tested
After migration:
- All memories present
- All files accessible
- Services running normally
- AI connections working
- No errors in logs
- New backup created immediately
- Monitor 48 hours before destroying old system
- Database (standard MySQL)
- Files (just files)
- Adapters (work with any training provider)
- API keys (work anywhere)
- Provider-specific dashboards
- Provider-specific tooling
- But these don't matter - core data is portable
If you want to access from multiple devices:
- Already works (daemonchat.app from any device)
- Same login, same data
- Mobile, desktop, tablet all work
- Expose server to internet (secure it properly)
- Or VPN into your network
- Or run multiple installations (sync manually)
- Gothic Druids for hosting (mobile access)
- Keep local backups (privacy/control)
- Best of both worlds
Before doing real migration, test it:
- Export current state
- Set up test environment
- Import to test environment
- Verify everything works
- Destroy test environment
- NOW do real migration confidently
Testing = confidence = success.
Lock-in is control. Migration is freedom.
Test your ability to leave. That's the only way to know you're free.
🖤