Overview
FERAL instances on the same network automatically discover each other via mDNS and replicate memory using CRDTs (Conflict-free Replicated Data Types). All sync is peer-to-peer — no cloud relay is involved.TLS Setup
Generate a CA and peer certificates using OpenSSL:FERAL_SYNC_PASSPHRASE) is still checked as a belt-and-suspenders layer on top of TLS.
Static Peer List
When mDNS is blocked (enterprise networks, Docker, VPNs), use a static peer list:Troubleshooting mDNS
| Symptom | Cause | Fix |
|---|---|---|
| ”zeroconf not installed” warning | Missing dependency | pip install feral-ai[sync] |
| Peers not discovered | mDNS blocked by firewall | Open UDP port 5353, or use FERAL_SYNC_PEERS |
| Peers discovered but sync fails | Passphrase mismatch | Ensure FERAL_SYNC_PASSPHRASE matches on all nodes |
| TLS handshake error | Certificate not signed by CA | Re-sign peer cert with the same CA |
| ”Invalid passphrase” in logs | Passphrase env var not set on one node | Set FERAL_SYNC_PASSPHRASE on all nodes |
Conflict Resolution
- Notes / Knowledge: Last-Writer-Wins by HLC timestamp
- Episodes: Union merge (never delete remote episodes)
- Execution log: Append-only (INSERT OR IGNORE)
