Source: https://mokxi.com/docs/editor/real-internet
Updated: 2026-10-26

Getting started The editor Placing parts Wiring Sticky notes Drawing on the canvas Tidying up Pinned comments Frames Reusable blocks Making chips Custom chips The code editor and compiling Writing assembly Run and the serial monitor The serial plotter The operating point, sweeps and frequency response The debugger Kix, Mokxi's AI helper WiFi, simulated Real internet Bluetooth, simulated The properties panel Undo, copy and paste Keyboard shortcuts Saving and autosave Sharing a project Exporting PNG and SVG Send a program to a real board VS Code and GitHub with Mokxi Run a prebuilt firmware SPICE netlists Working on a phone Install it as an app Boards Parts Accounts and plans Live collaboration Classrooms Lessons and the learning game Hobby builds Troubleshooting Reference

Docs / The editor / Real internet

# Real internet

Let a WiFi board reach real web services, webhooks and public MQTT brokers. Free once you sign in, with more on Pro, and off until you turn it on.

## Turning it on

It works on every board with simulated WiFi, the ESP32 and ESP8266 boards,
the Pico W and the Uno R4 WiFi among them (see
WiFi, simulated).

Open the Cloud panel and tick Real internet. Mokxi checks your account
first:

- Signed out, the switch says to sign in free, and your board keeps the
simulated network.

- On Free, signed in with your email address confirmed, it turns on with
Free's allowance (below).

- On Pro, the student price, Teacher, Classroom, Pro for work and the free
Pro trial, it turns on with the bigger allowance.

Every session starts with it off, so a project never reaches the internet just
by being opened. The one exception is a board on the access point
Wokwi-GUEST, which is what a project imported from Wokwi uses: as on Wokwi,
that access point reaches the internet, so the switch turns itself on when the
project runs. Untick it and it stays off until you reload.

While it is on:

- a request for a name outside .mokxi goes out through Mokxi's gateway, and
the answer comes back to your sketch, https:// included (the gateway does
the TLS, so use http.begin("https://..."));

- time.mokxi, weather.mokxi, echo.mokxi, api.mokxi and the board's own
address stay simulated;

- every request still shows in the Cloud panel's log, with a note saying it
went through the gateway.

A webhook is a POST the same way: http.addHeader("Content-Type", "application/json") and http.POST("{\"temp\":21.5}").

## MQTT

A sketch publishes one MQTT message with one HTTP POST to mqtt.mokxi:

The gateway sends it to the broker as MQTT over WebSockets. The brokers are the
public test brokers test.mosquitto.org (the default), broker.hivemq.com and
broker.emqx.io. Watch the topic from any MQTT client to see it arrive.

What it does not do, honestly: PubSubClient and other libraries that open a
raw TCP connection to port 1883 do not work, because the simulated board has
no TCP socket and our gateway cannot open one either. Publishing is one way:
the gateway does not subscribe or bring messages back to the board. Topics with
+ or # are refused.

## Time

configTime() works and getLocalTime() answers, but the clock is the
simulation's own, which starts at 2026-01-01 00:00:00 UTC: NTP is a UDP
protocol, and real internet carries HTTP. For the real time of day, ask a time
API over HTTP with the switch on.

## The limits

Free
Pro

Requests a day, per account
100
1,000

Requests a day, per project
50
500

Requests a minute, per account
10
30

Requests a minute, per project
10
20

Request body
1,024 bytes
2,048 bytes

Response kept
2,048 bytes
4,096 bytes

MQTT message
512 bytes
1,024 bytes

Days are UTC. On Free, one network also shares 300 requests a day and 20 a
minute across every account signed in on it.

- Past a limit the board gets status 429 with a sentence saying which limit
it hit. Put a delay() in your loop: a reading every ten seconds for a
quarter of an hour is ninety requests.

- Sizes: a longer response is cut, and the log says so. A body that is not
text (an image, say) is left out.

- Time: the host gets 4 seconds to answer.

- Methods: GET and POST, on ports 80, 443, 8080 and 8443.

- Redirects are not followed. A 301 or 302 comes back to your sketch as it
is, with the address it points at as the body.

- What is refused: private and local addresses (10.x, 192.168.x,
127.0.0.1, 169.254.x and the IPv6 equivalents), names like localhost or
anything under .local or .internal, a name that resolves to one of those,
Cloudflare's and Mokxi's own hosts, and any host we have had to stop. Your
sketch gets a refusal with the reason in the Cloud panel. WiFiClientSecure
is still refused; use a plain WiFiClient or none.

## What we keep

Counts, and nothing else: how many requests each account, project and network
sent today, so the daily limits work, and how many the whole service sent. A
network is counted under a scrambled code that changes every day, never its
address. No address, URL, header or body is stored or logged.

## In a class

For a student in a class, real internet is off unless the teacher turns it
on, whatever plan the student is on. A teacher whose class tools are on (Pro,
Teacher, Classroom or the trial) can switch it on for a class, and the class
then has Pro's limits; until then the student's switch says it is off for their
class. Accounts marked as under 13 follow the same rule.

Previous: WiFi, simulated Next: Bluetooth, simulated

### On this page

Turning it on MQTT Time The limits What we keep In a class
