About 13 MB, fetched once and then cached: real Python, compiled to run in this tab. After it loads nothing you type leaves your machine — there is no server on the other end of this page.
Output
Or paste Python
Use Operator instead (needs your own API key)
Your key is held in this tab's memory only — never saved, never sent anywhere but Anthropic, and gone when you close the page. Anyone asking you to paste an API key into a web page is asking for a lot of trust; this page is open source, and playground.js is the file that makes the call.
Example programs
Every one of these was written by Scribe and then executed, at build time, by the same interpreter this page runs. The source and the output below are what that run produced — none of it is typed by hand, and a test fails the build if this file and a fresh run ever disagree.
Loading the examples…
The code in The Matrix was never a programming language. This is the one it pretended to have — invented, written down, and made to run.
Nothing in the film runs
The falling green characters are a visual effect. They have no grammar, no meaning attached to any symbol, and no way to be executed. Nobody could type them into a computer and get an answer back, because there is nothing behind them to answer.
So this project is not "recreate the Matrix language." There is nothing to recreate. It is the other thing:
Invent the language the film pretended to have.
A real one, with rules a program either follows or is rejected for breaking.
It stores values, makes decisions, repeats work, defines functions that
remember where they were written, and handles numbers, text, true and false,
and lists. It is Turing-complete, which is the technical way of saying there
is no arbitrary ceiling on what you can express in it. Programs live in files
ending in .rain, and there is an interpreter that runs them, an
interactive prompt for trying things a line at a time, and a test suite that
has to stay green before any of this changes.
When a program runs, its own source and its own output fall through a window as glyphs. Nothing on that screen is generated at random. Every character that falls came from the program you ran.
Now run one yourself
Everything above had already happened before you arrived. What comes next has not.
The button below fetches Python — the real one, compiled to run inside a browser — along with this project's package, and starts the actual interpreter in this tab. Everything you have read so far cost about 100 KB, most of it the typeface this page is set in; this costs roughly 13 MB, fetched once and then cached, and took about three seconds on a fast connection. That is the whole reason it waits for you to ask. After it loads, nothing you type leaves your machine, because there is no server on the other end of it: the language is running on your device, and this page has nowhere to send anything even if it wanted to.
Describe a program and Scribe writes it, needing no account and no key. Edit what it wrote, or ignore it and type MatrixLang directly. Then run it, and watch it fall.
Two faces
Every program can be written and read two ways. Here is one program, twice:
construct i = 1 dejavu i <= 5 trace i i = i + 1 flatline
ア i ナ ァ テ i セ ォ ト i i ナ i タ ァ ラ
Neither of those is a translation of the other. The program is read once, into a single structure, and that structure can be printed in either face — which is why the conversion loses nothing and can be run in both directions without drift. Feed the glyphs back in and the text comes out again — spacing normalized to the canonical form, and otherwise the program you started with. Run either face and the same thing happens.
Names you chose and text you quoted stay as you wrote them here, because this is source you are meant to keep editing. The cascade window is stricter: it transliterates everything, so what falls is a wall with no Latin in it, and the table is reversible, so it can be read back rather than merely watched.
The glyphs are ordinary Unicode half-width katakana. They are not the film's own glyph designs, and nothing here uses them.
What it looks like
You do not need to know any of those keywords to get a program out of this. Scribe takes a plain-English request and writes the MatrixLang for it. It is not an AI: it is a fixed catalogue of phrasings it was taught in advance, matched exactly, so the same request always produces the same program — and a request outside the catalogue is refused with the closest phrasing it does know, rather than answered with a guess.
Below is every example on this page: what was asked for, what Scribe wrote, and what that program printed. None of it was typed here by hand. It was produced by running the real interpreter, and a test compares this page against a fresh run, so an example cannot quietly go stale.
construct names a value, trace prints one,
dejavu loops, redpill is if,
agent defines a function, jackout returns from one,
and flatline closes whichever of those you opened. There are
twenty-four keywords in total.
add 5 and 3
trace 5 + 3
ト ォ タ ゥ
8
count from 1 to 5
construct i = 1 dejavu i <= 5 trace i i = i + 1 flatline
ア i ナ ァ テ i セ ォ ト i i ナ i タ ァ ラ
1 2 3 4 5
make a list of 1 2 3
construct xs = [1, 2, 3]
ア xs ナ ヘァネ ィネ ゥホ
This one declares rather than prints: it binds a list to
the name xs, and printing is what trace does.
if 5 is greater than 3 trace bigger
redpill 5 > 3 trace "bigger" flatline
レ ォ ソ ゥ ト "bigger" ラ
bigger
define a function that doubles
agent double(n) jackout n * 2 flatline
エ doubleクnケ ヨ n カ ィ ラ
This one declares too: double now exists,
but nothing has called it yet, and a function that is never called has
nothing to say.
Transliterator
Type in either box — the other updates as you type. Both directions run the same reversible table the falling cascade decodes from, through the real interpreter this page loads, not a copy guessed at in the browser.
A few glyphs in that box are not letters — one marks the next glyph as uppercase, another marks the next character as a literal passthrough rather than something encoded. The full table: