Migrating from SillyTavern
Luker is a downstream fork of SillyTavern and maintains full data compatibility. Migrating from SillyTavern to Luker takes just a few simple steps, and all your data can be used seamlessly.
Migration Steps
1. Back Up Your Existing Data
Before migrating, it's recommended to back up SillyTavern's data/ directory:
cp -r SillyTavern/data/ SillyTavern-data-backup/2. Install Luker
Follow the steps in Getting Started to install Luker.
3. Copy the Data Directory
Copy SillyTavern's data/ directory to Luker's data root (default: ./data):
cp -r SillyTavern/data/* Luker/data/If you've customized dataRoot in config.yaml, copy to the corresponding path.
4. Migrate the Configuration File
Migrate your customized settings from SillyTavern's config.yaml to Luker's config.yaml. It's recommended to start with Luker's default config file and migrate your custom values one by one, rather than overwriting the entire file.
5. Migrate Third-Party Extensions
If you have third-party extensions installed, copy SillyTavern's global extensions directory to Luker:
cp -r SillyTavern/public/scripts/extensions/third-party/* Luker/public/scripts/extensions/third-party/6. Copy User Settings (Multi-User Mode)
If you have multi-user mode enabled (enableUserAccounts: true), user data is stored in data/<username>/ subdirectories. The directory structure is identical to SillyTavern's — just copy them over.
7. Start Luker
node server.jsOn first launch, Luker will automatically detect the existing data and load it normally.
Data Compatibility
Luker is fully compatible with SillyTavern's data formats. The following data types can be used directly:
| Data Type | Compatibility | Notes |
|---|---|---|
| Character Cards (PNG/JSON) | ✅ Fully compatible | Supports V1/V2 specs |
| Chat Logs (.jsonl) | ✅ Fully compatible | Incremental sync endpoints are backward compatible |
| World Info | ✅ Fully compatible | Entry format unchanged |
| Presets | ✅ Fully compatible | Luker automatically separates connection parameters |
| Personas | ✅ Fully compatible | — |
| Extension Settings | ✅ Fully compatible | Third-party extensions work as before |
| Group Chats | ✅ Fully compatible | — |
| API Keys (secrets) | ✅ Fully compatible | secrets.json format unchanged |
Luker's Additional State Files
During operation, Luker generates some additional state files in the data directory to store data for Luker-exclusive features:
.luker-state.<chat_id>.json— Chat state files storing integrity checksums for incremental sync, etc.- Character card state files — Storing card-bound presets, Memory Graph data, editing assistant sessions, etc.
- Preset state files — Storing preset-associated world info and other extension state
These files do not affect SillyTavern's original data. If you need to migrate data back to SillyTavern, simply ignore these state files. SillyTavern won't read them and won't error due to their presence.
Notes
Node.js Version: Luker requires Node.js >= 20. Verify your Node.js version before migrating.
Third-Party Extensions: SillyTavern's third-party extensions work normally in Luker. Luker uses the same extension loading mechanism, with extensions located in
public/scripts/extensions/third-party/.Configuration File: SillyTavern's
config.yamlis format-compatible with Luker's, but Luker adds some new configuration sections (such assso,hostWhitelist, etc.). Settings likerequestProxyalready exist in SillyTavern and require no additional handling. It's recommended to start with Luker's defaultconfig.yamland migrate your custom settings. See Configuration for details.Preset Decoupling: Luker separates API connection parameters from presets. After migration, your presets still work normally — Luker automatically handles field classification during loading.
Bidirectional Compatibility: Since Luker doesn't modify SillyTavern's original data formats, you can switch between the two at any time. Just note that data generated by Luker-exclusive features (such as Memory Graph, Orchestrator) won't be available in SillyTavern.
Docker Deployment: If you're using Docker, refer to Luker's provided
docker-compose.ymlreference configuration and mount the data directory as a volume.