Spin up an isolated MQTT namespace in milliseconds with one HTTP call — no signup, no cluster to manage.
One POST, one curl, working credentials in milliseconds. No accounts, no console, no waiting.
Each call returns an isolated EMQX namespace with its own client credentials and quotas.
Tenants are reaped server-side by either a fixed lifetime or an idle lifetime with no active MQTT connections.
Full MQTT 5 over TLS (8883) and WSS (8084), backed by EMQX 6.
Point your agent at the skill, or run the curl flow yourself. Choose a fixed lifetime or let an idle tenant disappear after its inactivity window.
Use the agent skill at https://zero.emqx.io/SKILL.md to provision a disposable MQTT tenant and publish a hello message.
Paste this into Claude Code, Cursor, or any tool-using agent. The skill at /SKILL.md documents the full POST /v1/instances API; your agent reads it and proceeds without further setup.
curl -sS https://zero.emqx.io/SKILL.md
Pipe into any agent harness that ingests markdown skills.
curl -sS -X POST https://zero.emqx.io/v1/instances
Returns 201 Created with lifecycle, credentials.username, credentials.password, mqtts.host, wss.host, and either expires_at (fixed) or idle_ttl_seconds (idle).
eval "$(curl -sS -X POST https://zero.emqx.io/v1/instances | jq -r ' @sh "export INSTANCE_ID=\(.instance_id) MQTT_PASSWORD=\(.credentials.password) MQTTS_HOST=\(.mqtts.host)"')"
Sets $INSTANCE_ID, $MQTT_PASSWORD, and $MQTTS_HOST in your current shell.
mqttx pub \ -h "$MQTTS_HOST" -p 8883 -l mqtts \ -u "$INSTANCE_ID" -P "$MQTT_PASSWORD" \ -t demo/topic -m hello
Topics are bare names; EMQX scopes them to your tenant via namespace_as_mountpoint.
Turn any IoT device into an AI agent your apps, models, and other agents can talk to and call.
Common questions about Zero EMQX. Click any item to expand.
Zero EMQX gives AI agents and developers an isolated MQTT 5 namespace via a single HTTP call — no account, no cluster to manage. It's designed for prototypes, demos, and agent experiments that can later move to a longer-lived EMQX deployment.
AI agents, developers, and teams that want a real MQTT broker in seconds — for prototypes, tutorials, demos, integration tests, and tool-using agents.
No. POST /v1/instances returns working credentials immediately — no account, no console, no payment information.
Each tenant uses either a fixed lifetime or an idle lifetime set by the operator. When its lifecycle is reached, the server-side reaper deletes the namespace and credentials automatically. Fixed tenants return expires_at; idle tenants return their inactivity duration and no fixed expiration timestamp.
Per-tenant publish rate limits and a global tenant cap are configurable by the operator. If a cap is hit, the API returns an HTTP error rather than silently degrading. Defaults are sized for prototyping, not production load.
MQTT 5 over TLS on port 8883 and WebSockets+TLS (WSS) on port 8084, backed by EMQX 6. Plain MQTT (1883) and plain WebSocket (8083) are not exposed.
Yes. Each tenant is its own EMQX namespace, and namespace_as_mountpoint scopes topics under the namespace name. Your demo/topic cannot collide with — or be read by — another tenant's demo/topic.
No. Zero EMQX is throw-away by design — tenants auto-expire and there is no SLA. For long-lived workloads, move to EMQX Platform / Enterprise.
Not at the moment. If you need a fresh tenant, call POST /v1/instances again — provisioning takes milliseconds and you get new credentials in a new namespace.
Yes. Zero EMQX and Device Agent are complementary. Zero EMQX gives you a quick, isolated MQTT namespace for prototypes, demos, and agent experiments. Device Agent is a broader product for connecting real devices to AI agent workflows, so you can start with Zero EMQX and adopt Device Agent when your project needs device-side integration, modeling, and fleet workflows.
Point your agent at /SKILL.md — a markdown skill that documents the full POST /v1/instances flow. Agents like Claude Code or Cursor read it and proceed without further setup.