Glossary

Key concepts used throughout the Odoo Sync documentation. Use Index for a full index of models, methods, and technical terms.

AST

Abstract Syntax Tree. A tree-structured, machine-readable representation of a language expression. In Odoo Sync, the odoo_schema JSON object is parsed into an AST whose nodes describe field mappings, relational operators, and traits.

broadcast

Routing mode by which an event is sent to all possible targets in the swarm. A single event is created and marked as sent as soon as it reaches the swarm, even if noone’s listening.

CID

Content Identifier. A SHA-1 digest (HTTP transport) or CIDv1 hash (Kubo/IPFS transport) that uniquely and immutably identifies a blob. Once assigned, a cid never changes. Any node that holds the blob can serve it; duplicates are automatically merged. See ip.cid.

content addressing

Storage strategy where each blob is named by the hash of its contents rather than by a URL or database ID. Enables zero-cost deduplication and location-independent retrieval across swarm nodes.

decentralized

A system, organization, or network where control, decision-making, and operations are distributed across multiple local entities rather than being concentrated in a single central authority.

direct

Routing mode by which an event is sent to a single specified target in the swarm. One event is created for each target and marked as sent when it reaches that specific target.

Ed25519

The elliptic-curve digital signature algorithm used to sign every outbound event. Each peer holds an Ed25519 keypair; the public key is encoded into the PeerID via the libp2p identity-multihash scheme.

ESB

Enterprise Service Bus — a software architecture that allows different, disconnected business applications to communicate with each other. It acts as a centralized “message broker” or middleman, handling message routing, data transformation, and protocol conversion.

event

A single signed message exchanged over the P2P network, represented by the ip.event model. Events carry a JSON payload, a list of referenced CIDs, and routing metadata. State machines track delivery (routing_state) and import (mapping_state) independently.

fan-out

Messaging pattern where a single event is routed to multiple or all possible targets. The HTTP Transport uses fan-out to implement the broadcast routing mode. The Kubo / IPFS Transport uses Kubo’s more advanced mesh network pattern.

gateway

The local node managed directly from Odoo (is_gateway = True). Each swarm has exactly one gateway; it orchestrates export, delivery, and import for all other nodes in the swarm.

idempotent

An operation that produces the same result no matter how many times it is applied. In Odoo Sync, event import is idempotent: re-delivering the same event (e.g. after a network retry) does not create a duplicate record because the upsert logic matches and updates the existing one.

mapping

The bidirectional mapping engine embedded in an ip.schema record. An AST (stored in odoo_schema) is a JSON object that maps Odoo field names to mapping descriptors; the engine uses it to translate Odoo records → JSON payloads on export and JSON payloads → Odoo records on import.

node

A transport-agnostic network participant represented by ip.node. A node inherits a peer cryptographic identity, belongs to one swarm, and carries transport-specific connection parameters (URL, API key, etc.).

peer

A cryptographic identity consisting of an Ed25519 keypair, represented by ip.peer. Peers are created lazily when a new PeerID is seen in an arriving event. A peer may be linked to an Odoo partner or user.

PeerID

A Base58btc-encoded identifier derived from an Ed25519 public key using the libp2p identity-multihash encoding (12D3KooW… format). Uniquely identifies a peer across all swarms and is immutable once assigned.

protocol

A live topic where nodes actively talk back to each other, carrying coordination signals rather than business records. The only built-in protocol is the heartbeat / presence topic; planned protocols include acknowledgement. See Protocols.

PubSub

Publish-Subscribe. The messaging pattern used by Odoo Sync: publishers emit events on a named topic channel; all subscribed nodes receive them. Routing mode (broadcast or direct) is configured per topic.

schema

An ip.schema record that holds a JSON Schema for payload validation (data_schema) and a mapping AST (odoo_schema) for bidirectional record translation.

semantic

That carries meaning, holds context, is interpretable. Makes the difference between a list of ingredients and a recipe.

swarm

A named synchronization network represented by ip.swarm. All nodes in a swarm share the same transport type (offline, http, or kubo). A single gateway orchestrates routing; topics define which records are exchanged and how.

topic

An ip.topic record that configures a PubSub channel: which schema to use, which swarms to publish on, and when to export, import, deliver, and garbage-collect records. Infrastructure (automations, crons) is auto-created and self-healed whenever the topic is saved.

trait

An AST hook that modifies mapping behaviour for a specific field. The built-in is_cid trait makes any relational field transparently store and retrieve binary blobs as content addressing CID references.

upsert

Update a record if it already exists, create it if it does not. Controlled by the __root__ directive in the mapping: the match key identifies the existing record and on_miss decides what to do when none is found.