Overview / Start here

Migrate from Mosquitto or EMQX

Inventory effective behavior, map requirements, test a candidate and plan state handling, cutover and rollback with agent-readable skills.

Agent-operated migration workflow

Choose the Mosquitto skill or EMQX skill, then the cutover/rollback skill. Use them yourself or with an agent and the tools you already operate. Preserve a private migration case and the first unfinished checkpoint.

Inventory effective behavior

Resolve includes, environment overrides, secrets, plugins, listeners, identity, ACL semantics, client versions/QoS, retained/session needs, rules and sinks. Record where a setting came from without exporting its secret value. The included ngz-iot migration audit can classify a single source configuration file; the skill covers the wider dependency and operating process.

Decide mappings before moving traffic

Requirement Candidate boundary
MQTT listeners and TLS Matching nginx ingress configuration.
Identity and topic policy Supported file, mTLS or JWT policy with explicit ACL decisions.
Persistent broker state Selected PostgreSQL-backed profile and tested recovery.
Rules and sinks Declared rule/schema dialect and bridge delivery contract.
Cluster behavior Externally fenced whole-node HA where applicable.
Customer adapter Public C Bridge SDK available in every tier.

Compare ACL/filter behavior carefully. Broad wildcard subscription acceptance, per-message delivery filtering and narrow subscription admission can differ between brokers. A passing reference scenario does not resolve every customer compatibility decision. Read the scenario contract and compatibility decisions.

Verify a candidate

Test the exact client contract with selected credentials, transports, QoS, payload bytes, metadata, retain, Will, reconnect and offline requirements. Current MQTT 3.1.1 includes QoS 2; MQTT 5 keeps its declared QoS 0/1 profile. Enhanced auth, arbitrary plugins, distributed cluster behavior and unsupported provider semantics need explicit alternatives or remain blockers.

Use isolated targets and one side-effect owner. Check destination commitment independently of broker acknowledgement. Preserve failures and unresolved choices.

Plan state and cutover

Decide retained reseed/reconciliation, client reconnect/resubscription and the handling of offline/session state. Rehearse candidate rejection and rollback, including after target writes. Keep source ownership until the agreed boundary is satisfied. Never claim lossless automatic import from a configuration audit.

Use Tiers for runtime/service scope, MQTT coverage for protocol limits and Get Start for installation/operations.

Implementation authority

This page is a customer-oriented guide. The source contract remains authoritative for exact behavior and release evidence.

migration/README.md