This post is adapted from my LinkedIn article published on 19th May 2026.
I have been building this terminal since March 2023. Three years of releases, mostly from before AI became the default way to code side projects.
I put a working shell on my personal site and I could not stop adding to it ¶
A personal website without a terminal always felt incomplete to me.
Not a screenshot of a terminal. Not a fake prompt that types Hello, World! and stops. A shell that actually responds, where commands do things, some of them talk back, and a few of them depend on who you are and what you typed five minutes ago.
On 30 March 2023 I shipped the first commands on jamieede.com/terminal
: help, weather, ping, whoami. A real terminal in the browser, backed by Cloudflare Workers at the edge.
That was three years ago.
ChatGPT had only been public for a few months. Tools like Cursor were not yet the default workflow for side projects. Nobody was posting “I built this entire app in one afternoon with AI” as the normal way to ship. For most of us, a feature still meant: read docs, write code, deploy, find the bug yourself, repeat.
This terminal was built in that era, and it has been growing in that spirit ever since.
Not a one-shot demo. Not a generated portfolio gimmick. A long-running project I kept returning to when I had an evening and an idea: one more command, one more easter egg, one more “what if the filesystem actually felt real?”
This week I deployed the biggest update yet. The story below is as much about time as it is about tech.
It started as a joke and became a lab ¶
Like a lot of developers my age, The Matrix left a mark. Green text, cryptic oracles, the feeling that the interface itself might be hiding something.
So I built a browser terminal backed by Cloudflare Workers at the edge: a small API, a Hugo page, and enough JavaScript to make it feel like a real shell, with typing effects, scrollable history, tab completion, and session history on the arrow keys.
The first commands were practical enough: weather, ping, whoami, dad jokes, Base64 encode/decode. Useful demos of edge compute. Fun to show people.
Then the project did what side projects do when you enjoy them: it grew.
Why I mention the timeline ¶
I am not against AI coding tools. I use them now like everyone else.
But I think it matters that this project’s DNA is pre-AI-assistant:
Then (2023)
- You shipped small, real slices
- Easter eggs were designed, not prompted
- You lived with every line you wrote
Now (2026)
- It is tempting to ship huge, vague slices
- Hidden behavior can feel disposable
- It is easy to forget what you did not write
The terminal on jamieede.com/terminal
is the sum of years of incremental craft: Matrix rain and boot sequences, Durable Object history, a custom calc parser without eval, filesystem commands, glitches, Konami codes, pills that change what the shell shows you.
You cannot prompt your way to that kind of cohesion in a single session. Someone has to care across dozens of small releases. I cared, over three years, mostly without an AI writing the architecture for me.
That is the story I want to tell: a side project that outlasted the hype cycle.
What was deployed this week (and why I am mentioning it) ¶
The latest release is less “more commands” and more “the page is part of the experience”:
On load, Matrix rain fades into a fake Linux boot sequence before you get a MOTD. If you are impatient, you can rush it. If you are not, you can sit with it.
While you work, the output occasionally glitches, as if something else is briefly in control.
If you remember the 90s, a certain key sequence still does something to the whole screen.
In the shell itself, there is now a filesystem worth exploring: ls, cd, cat, find, su, pwd. Some paths only show up when you look with the right flags. Some files are encrypted or split across directories. Switching users can open doors that were locked a moment ago.
And yes, sudo, hack, oracle, redpill, bluepill are in the help list. They may be jokes. They may not be only jokes. sudo make me a sandwich is probably safe. sudo rm -rf / probably is not, but you were going to try it anyway.
I document what I am willing to admit in the Terminal Changelog . Everything else, you discover.
Under the hood (for the engineers in the comments) ¶
If you care about the stack, this is not a toy glued to a static page:
- Cloudflare Workers run the command API at the edge. Low latency, global, cheap to operate.
- Durable Objects (SQLite) store per-IP command history. I wanted a practical way to learn Durable Objects, and
history/!!needed somewhere to live. - Edge caching keeps joke, quote, and fact APIs snappy without hammering third parties.
- Rate limiting keeps one curious visitor from becoming everyone’s problem.
- Streaming responses for slower commands (
weather,ping,pokemon) so you see progress instead of a frozen prompt. - A custom math parser for
calc, with noeval(), because I like sleep.
The front end is Hugo plus vanilla JavaScript: scoped “matrix” styling on the console only, accessible labels, aria-live on output, instant printing for long responses so help does not take forever.
It is the kind of project that teaches you more than a tutorial because you keep asking: What would a real terminal do here? Then you implement just enough of the answer.
What I would tell anyone building something similar ¶
1. Ship the smallest real thing first.
My 2023 launch was a short list of commands and a Worker. That was enough to be proud of.
2. Treat easter eggs as product, not clutter.
Hidden behavior is why people share personal sites. The Konami code, the pills, the glitch effect. They are not distractions from the engineering; they are why strangers stay for ten more minutes.
3. Separate “API” from “experience.”
The Worker is the brain. The site is theater. That split made it easy to add filesystem commands and Matrix flair without turning the Hugo theme into spaghetti.
4. Write a changelog when you want repeat visitors.
People who find something cool want proof you are still playing too. A public changelog turns one visit into “I wonder what is there this month.”
5. Start before you outsource the thinking.
The best version of this project exists because I kept asking “what would a real terminal do?”, not “what would a model guess?” If you are starting something today, use AI as leverage, but protect the parts that need your taste: pacing, secrets, tone. Those are what make people stay.
Try it and tell me what you break ¶
Open jamieede.com/terminal .
Type help for the official list.
Type help --verbose if you want usage hints.
Assume there is more than either list shows.
If you find something I did not document, I want to hear about it. The best feedback I get is: “I typed X and Y happened.”
If you try it, you are using something that began when building still felt slow and deliberate, and that I have kept improving long after AI made fast feel normal.
Wake up, Neo… the shell is waiting.