Features¶
A high-level map of what Odoo Sync provides. Each card links to the relevant guide or reference section.
Blobs are identified by a content hash (CID). Any node that has pinned a CID can serve it; deduplication is free. Any binary served over the network is only fetched once.
Events targeted at offline nodes are queued until back online.
The key (from_peer, seqno) is unique on ip.event.
Duplicate payloads are silently discarded at with no extra application logic.
A single ip.schema record drives both export (Odoo → JSON) and import (JSON → Odoo).
Relations, upserts, defaults, and binary blobs are declared once and work in both directions.
Payloads validated against a JSON Schema draft-07 definition before import/delivery. Malformed or schema-incompatible payloads are rejected at the network edge.
Export mode (instant / batch), import mode (instant / batch), delivery mode (push / pull), and routing mode (broadcast / direct) all configurable per topic.
Topics auto-create and self-heal their base.automation and ir.cron records.
Archiving a topic or its infrastructure deactivates any automated routing.
Network swarms can be restricted to select DBs or open for new members to easily join. Transport type is fixed per swarm; multiple swarms can coexist on the same Odoo instance.
sync_http delivers events with a direct HTTPS POST — no daemon required.
sync_kubo routes through a Kubo sidecar for gossip networks and large binary payloads.
Built-in coordination protocols run on top of the same topic infrastructure. The heartbeat / presence protocol flushes pending events the moment a node comes back online.
The framework is application-agnostic.
sync_discuss shows the pattern: federated Discuss channels with real-time delivery and content-addressed attachments, built entirely on core primitives.
Incoming Features¶
Each ip.peer carries a trust_level (unknown / trusted / blocked).
The gateway enforces it at the network edge before any data touches the database.
Every node has an Ed25519 keypair. Every event is signed by the sender and verified before import. Unsigned or tampered events are rejected at ingestion.
The schema AST will be analysed at save time for unreachable paths, conflicting operators, and model-field mismatches — catching mapping errors before the first event is ever sent.
Every synced record will carry a full version history in the Odoo chatter. Concurrent edits from different nodes will be detected and surfaced for manual or automatic conflict resolution.