Code it live.⚡ RTCode.io Ship it to Earth.🌐 RTEdge.net
RTCode.io is a real-time, two-way HTML playground: edit the source or the live page, and the other side follows as you type. RTEdge.net serves what you build from 337 cities, on name.rt.ht or your own domain, one keystroke later.
⚡ Start Shipping Read the docs
- Reloads per HTML or CSS edit
- 0
- Keystroke to deploy
- Ctrl S
- Cities per deploy
- 337
Input HTML
<style>
h1 { color: oklch(62% .21 30); rotate: -3deg }
</style>
<h1>Hello, Earth!</h1>
<p>Edit me here, <b>or in the output</b>.</p>
edits · reloads 0
✏️ Type on either side. Double-click a number, then press ↑ or ↓ (Shift ×10, Alt ×0.1). Point at the output to find its source.
⚡ Playground RTCode.io
Edit either side.
Nothing reloads.
Instant I ⇄ O Sync patches the live page as you type, and turns changes made in the page into exact edits of your source. HTML and CSS edits keep scroll, focus, form input and script state; script edits and Load restart the output on purpose.
- Instant I ⇄ O Sync
- Live in either direction, a one-shot Sync when you choose, or Load for a clean restart. The engine behind it is IOSyncKeeps a two-way map between your HTML and the live page, patches only what an edit touches, checks the result, and rolls back if a patch fails..
- Locate F8
- Your cursor lights up its element in the output. Point at the output to reveal its source, then edit either one.
- Select
10rem& ↑ ↓ - Nudge every selected number by 1, 10, 100 or 0.1, and watch the design follow.
- Output settings
- Size, orientation, zoom, color scheme and fullscreen, saved in the playground's link along with your code.
- Versions & Smart Undo
- Every deployment is a version you can compare and restore. When the editor has nothing left to undo, Ctrl Z keeps going through what you deployed.
- Remote Output Experimental
- Mirror the live output to phones, tablets and TVs with a link or a QR code.
IOSync · adversarial edit steps passed
182,789 / 182,789
From the June 2026 run; the post lists every engine, step and caveat.
FastPath162,025 / 162,025
FastPath Strict162,025 / 162,025
Locate (F8), median answer≈ 12 ms
Locate used to take about 1 s.
Read the receipts and the caveats: “Break, then Forge” →✨ Agents Agent 📂 Share™
Bring the agent
you already use.
Agent 📂 Share™ links a playground tab to a folder on your computer. Codex, Claude Code, or any agent that reads AGENTS.md or CLAUDE.md, then works on your live playground: it sees what you see, edits your source and checks the result as it happens.
- 📄 Code and 🟦 selections
📄.htmlsyncs both ways with the editor;📄.selshows what you have selected right now.- 📜 Console
- Every console line from the page and its workers lands in
📜.json. - 📸 Screenshots
- While capture is on,
📸.pngshows the output after each edit. - 📍 Pins and comments
- Point at an element or a region and say what you mean. Your agent gets the pin, your comment and a picture.
- ⚙️ Evals
- Your agent writes
io.eval.jsoro.eval.js; the playground runs it and answers in the matching.eval.json. - Your subscription
- Keep using the Codex or Claude subscription you already have.
Agent Share needs Chrome or Edge on a computer, because it uses the File System ObserverA browser API that reports changes inside a folder you have shared with a page, so the playground sees your agent's edits as soon as they are saved. API. Agent Share™ is patent-pending.
📂 my-app/the folder you shareAGENTS.md · CLAUDE.mdhow to work here, written for your agent📄.htmlyour source, synced both ways📄.selyour selections, live📜.jsonthe console📸.pngthe output, as pixels📍.0.json · 📍.0.pnga pin, its comment and its cropio.eval.js → .jsoncode the playground runs for your agent
⚙️ Workers edge compute
One worker.
Your browser first, then the edge.
A <script type=worker edge> runs in the playground's service worker while you edit. Deploy, and the same code answers on RTEdge.net; request.rt.edge tells it where it is running.
- Static URL imports
- Import JavaScript and WebAssembly modules from static URLs. They are bundled fresh each time you deploy.
- WebAssembly
- Stream it from a URL, embed its bytes or compile it ahead of time. The worker in FIG. 5 does all three, live at the edge.
- Scoped KV storage
env.KV.open()gives your worker a key–value store per person, per domain or per route (FIG. 4).- Request metadata
request.rtcarries the signed-in user and, at the edge, the visitor's data center and country.
env.KV.open( … )| Everywhere | One domain | One route | |
|---|---|---|---|
| Shared | { } | { domain } | { route } |
| Per person | { user } | { user, domain } | { user, route } |
export default {
fetch: async (request, { KV }) => {
const { user, route } = request.rt
if (!user) return new Response('Sign in first', { status: 401 })
const notes = KV.open({ user, route }) // this person, this route
await notes.put('seen', new Date().toISOString())
return Response.json({ user, seen: await notes.get('seen') })
}
}
<iframe src=:1+2+3+4></iframe>
<script type=worker edge io:guest>
let wasm
export default {
fetch: async r => {
wasm ??= await WebAssembly.instantiateStreaming(
fetch('//rc.efn.kr/add.wasm'))
const { add } = wasm.instance.exports
const p = new URL(r.url).pathname
const z = p.slice(1).split('+')
.reduce((z, x) => add(z, +x), 0)
return Response.json({ streaming: { p, z } })
}
}
</script>
GET wasm.rt.ht/:1+2+3+4
"z": 10 is 1 + 2 + 3 + 4, added by a streamed add.wasm on RTEdge.net. The code is an excerpt.
🆔 Access Sign in 1 Way™
Sign-in in
four characters.
Every deployment answers ::si, ::sa, ::su and ::so. Visitors sign in with GitHub, Google, Microsoft or Apple, and your worker reads request.rt.user. You write no sign-in code.
::si- Sign in, then come back to the same page, query and hash.
::sa- Sign in as another account.
::su- The signed-in email as JSON, or
null. ::so- Sign out of this site.
edge:userandio:user- Decide who may view a page and who may open its source: people, whole email domains, or anyone signed in.
- Sessions
- Sessions are signed with ECDSA P-384A digital signature over a short-lived session. The edge checks it on every request before your code sees
request.rt.user. and checked at the edge. Multi-factor sign-in and passkeys work through your identity provider. Each site keeps its own session.
This page is a deployment too, so the same suffixes work right here.
fetch('::su')
const user = await fetch('::su').then(r => r.json())
// "you@example.com", or null when signed out
<meta edge:user="example.com alice@example.org"> <!-- may view -->
<meta io:user=example.com> <!-- may open the source with ? -->
🌐 Network RTEdge.net
Deploy to Region: Earth.
RTEdge.net serves your pages and runs your edge workers on Cloudflare's network, so each visitor is answered from a data center near them. There is no region to pick.
337cities
125+countries
500 Tbpsof network capacity
< 50 msfor 95% of Internet users
The drawing marks a few of the cities. The live map comes from rtedge.net and loads Mapbox, so it waits for your click.
name.rt.htor your own domain- Start on a short
name.rt.htaddress and move to your own domain when you are ready. rt.ht is a Public Suffix Listrt.ht is listed there, so browsers treat every name.rt.ht as its own site, with its own cookies, storage and sign-in., so each name is its own site. ?opens the source- Add
?to a page's address to open its source in RTCode.io, exactly as deployed. It is public unless you restrict it. ??lists versions- Add
??to see the versions you deployed. *is your index- Add
*to list every deployment you own or edit under that path. - Post-quantum TLS
- Connections use hybrid post-quantum key agreement (X25519MLKEM768Classic X25519 combined with ML-KEM-768, a post-quantum key exchange. Your browser uses it when it supports it; qi.rt.ht shows what a host offers.), and edge workers can use ML-KEM and ML-DSA. Verify it.
- Measure it yourself
- lt.rt.ht compares our latency with other edge platforms, from your own browser.
- Data center
- Round trip to it
- Connection
- Your country
Read from /::edge, which every RTEdge.net host answers.
::qr Experimental
<img src="/::qr?t=https://rtcode.io/">
✏️ Edit the highlighted text. Without t=, a page's ::qr encodes its own address.
▶ Try it no install
Open a real playground, right on this page.
FIG. 9 loads RTCode.io with a small example. Select a number and press ↑ or ↓, edit the heading in the output, or open it in its own tab to deploy it.
<meta name=color-scheme content="light dark">
<style>
h1 { color: oklch(62% .21 30); rotate: -3deg }
</style>
<h1>Hello, Earth!</h1>
<p>Select a number above, then press ↑ or ↓.
Or edit this line in the output.</p>
<iframe src=:where …></iframe>
<script type=worker edge>
export default {
fetch: r => Response.json({
runtime: r.rt.edge ? 'RTEdge.net' : 'RTCode.io playground',
user: r.rt.user })
}
</script>
Hello, Earth!
Select a number above, then press ↑ or ↓. Or edit this line in the output.
❓ Questions
Frequently asked
Have another question? Ask us anything.
What is RTCode.io?
RTCode.io is Elefunc’s live, bidirectional playground for HTML, CSS, JavaScript, and Workers. Build with your agent, inspect and compose Output, then deploy the same source when it is ready.
What is RTEdge.net?
RTEdge.net is Elefunc's deployment network. It runs apps in 337 cities on 500 Tbps of capacity, keeping most users within 50ms while handling routing, auth, and scale.
What are Workers?
Workers are backend functions that run in the playground and at the edge. Static URL imports for JavaScript and WebAssembly let you test modules live and ship the same code.
Which AI agents can I use?
Any coding agent that works in a local folder. RTCode.io writes AGENTS.md (for Codex and compatible agents) and CLAUDE.md (for Claude Code) into the shared folder, plus a pin-use skill, so you keep using the subscription you already have.
Which browsers does RTCode.io support?
RTCode.io runs in current browsers; browsers.page lists the latest versions. Agent 📂 Share™ and pins need Chrome or Edge on a computer, because they use the File System Observer API.
Where does my code run?
While you edit, everything runs in your own browser: the output lives in an isolated frame with its own service worker. When you deploy, RTEdge.net serves your page and runs your edge worker on Cloudflare's network: 337 cities, under 50 ms for 95% of Internet users.
Who can see my source code?
Anyone can open a deployment's source by adding ? to its URL, unless you restrict it. The source becomes private to you and your editors when the page has an edge worker without io:guest, or any io:user or edge:user rule. io:user widens access to the people or domains you list. edge:redact hides content from the served page, not from ?.
Do I have to write sign-in code?
No. Append ::si, ::sa, ::su or ::so to a deployment URL to sign in, switch accounts, read the signed-in email or sign out; workers read request.rt.user. People sign in with GitHub, Google, Microsoft or Apple.
Can I use my own domain?
Yes. Start on name.rt.ht and move to a custom domain when you are ready. Each name.rt.ht and each custom domain is its own site, with its own cookies and sign-in.
Is it post-quantum?
Connections to Elefunc hosts use hybrid post-quantum key agreement (X25519MLKEM768), and you can check this at qi.rt.ht. Edge workers deployed since October 1, 2026 can use ML-KEM and ML-DSA through Web Crypto. Platform session signatures still use ECDSA P-384.
Who owns what I build?
You do. In the words of the Terms: “The things you make on RTCode are yours, “RTCode” is ours.”
What’s coming next?
RTCode.ai Coming soon, Elefunc's AI services, and two web components in development: <ai-agent> Coming soon and the <fs-explorer> file explorer Coming soon.
📚 Further reading Elefunc Engineering
Receipts over slogans.
How the playground and the network are built and tested: exact numbers, honest caveats.
- Post-Quantum Web Crypto: ML-KEM and ML-DSA on RTEdge.net, and When Browsers FollowOne worker, 40 checks, in the browser and at the edge.
- Elefunc Selected for Both Anthropic's Cyber Verification Program and OpenAI's Trusted Access for CyberDefensive security work on our auth, agents, edge and playground.
- File Systems Access for Web AgentsOne file interface for memory, OPFS, folders and edge storage.
- zoo.do: an 11.2 KB proxy that treats many objects as oneServed straight from the playground page it was built in.
- Break, then Forge: 182,789 Edits Against Our Two-Way HTML Sync EnginesHow IOSync and FastPath were tested, caveats included.
- analog-clock: a custom HTML element that tells time without a timerOne file, written and published from a playground.
- GitFar: GitHub-compatible APIs from git on diskThe git service behind deployment versions.
- About Elefunc EngineeringWho writes here, and why the posts favor receipts over slogans.
Stop waiting.
Open a playground, write a line of HTML, and send it around the world.
Ctrl S · 1 keystroke