# SillyTavern on two machines + GitHub
2026-09-26. JeffersonMind private repo already holds the papers. Do **not** put the whole SillyTavern folder on GitHub.
## Split of duties
| Place | Holds |
|---|---|
| GitHub `jmarshallpittman/JeffersonMind` | Corpus, briefs, timeline sheets, exported card, world-info JSON |
| External drive / local ST | Running app, Node-using host, chats, vectors, API config |
| Grok Project + bots | Workshop that fills papers (`git pull`, Scout, Archivist) |
| SillyTavern chat | Where Jefferson **speaks** |
This Grok thread does not teleport into the Project or GrokBot. Paste a short status into Project instructions; keep the repo as source of truth.
## What to put in Git
```text
JeffersonMind/
corpus/ # filled letters
st/
characters/Jefferson.png
characters/Jefferson.json
worlds/JeffersonMind.json
README.md
00_timeline.md … 05_redteam.md
scout_briefs.md
ingest_queue.md
```
That is enough to coordinate Jefferson (later characters = more PNGs under `st/characters/`).
## What not to commit
| Path | Why |
|---|---|
| Whole `SillyTavern\` tree, `node_modules`, ST’s own `.git` | Reinstall from upstream `release` branch |
| `config.yaml`, `secrets.json`, API presets with keys | Keys in git last forever |
| `data/_cache/` embeddings and thumbnails | Machine-specific, large |
| Most `chats/` | Private logs; export one talk if you care |
| `data/_uploads`, backups | Noise |
Suggested `.gitignore` if you add more ST dumps:
```text
st/**/secrets*
st/**/settings.json
st/**/chats/
*.bak
```
## External drive + two PCs
Running ST from the stick is fine. Git on the same drive is fine.
- Install **Node on each host**, not only on the stick.
- Keep the **drive letter stable** (`E:\SillyTavern` on both boxes, or the same mount). ST stores some absolute paths.
- Clone JeffersonMind **onto the drive** next to ST:
```text
E:\SillyTavern\ # app — update from SillyTavern/SillyTavern
E:\JeffersonMind\ # your git pack
```
Do not `git init` inside the official SillyTavern clone. That fights `git pull` of ST itself.
New machine: plug drive → Node present → start ST from `E:\SillyTavern` → import from `E:\JeffersonMind\st\` if that ST data dir is empty.
If each PC has its **own** ST `data/` directory, treat Git as the shuttle: export on A → commit → pull on B → import.
## Workflow
1. Machine A: export card + world info into `JeffersonMind/st/`, commit, push.
2. Machine B: `git pull`, import those two files (or copy PNG into B’s `characters/` and JSON into `worlds/` **while ST is stopped**), restart, globe-link, add new corpus files to Data Bank.
3. API keys only in each machine’s local ST config.
Rule: GitHub = definitions. Drive = running app + local chats + vectors.