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 workflowChoose 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.
This page is a customer-oriented guide. The source contract remains authoritative for exact behavior and release evidence.
migration/README.md