WebTerm is a browser-based terminal sandbox for the AI era. As AI coding tools become mainstream, CLI literacy matters for both engineers and non-engineers. But many beginners are afraid to open their local terminal because they might break something. WebTerm provides an ephemeral, no-signup, free, and safe environment to learn Linux commands, Git workflows, and CLI-based AI tools. Currently in beta — feedback is welcome!
Learn the terminal like a game — in a browser sandbox
An interactive platform for learning the terminal, Git, and Vim. Hand-drawn slides teach the concept; a real in-browser sandbox checks every command you type. Progress across a 3D world map with a companion that evolves. 12 courses, 129 lessons, all free.
Earlier this year I launched WebTerm here: a browser terminal where running `rm -rf /` breaks nothing. More than 1,000 people use it every day now.
Its UI is stripped down to almost nothing, which experienced developers liked. But it's for trying a command the moment you think of it, not for learning things in order, and there was nowhere to explain anything properly.
Engineers who want to get better keep asking me what they should be learning. AI writing the code doesn't end that. How much of the AI's work you refuse to leave as a black box is what decides whether you can step in as a professional, and the more work AI absorbs, the fewer chances there are to build that experience. So I built WebTerm Learn.
Hand-drawn slides teach the idea, then you type the real commands in a real terminal. Every command is checked as you go.
The curriculum is a 3D world map. Each course is a land, so you always know where to go next.
Missions drop you into real incidents: a release that took down production, a secret pushed to a repo.
Pilots meet an engine failure in a simulator, not in the air. Developers should have the same thing.
Terminal, Git, and Vim today, with data analysis, software development, networking, and security to come. All free, and the first lesson takes about a minute.
Whatever you think, I want to hear it. I'll read every comment and reply.
Thanks :) The code was written by AI, but almost every decision was mine. Answer checking, recovery when a learner breaks their environment, the pacing of each slide. I just didn't do the typing.
The first two took by far the hardest design work in the whole project.
Report
Just tried it. Really good git lessons. The other format that's on https://webterm.app/ is good too.
Thank you! Git is where I've poured the most hours, so that's great to hear. And glad you found webterm.app too, that's actually where the whole project started!
One day since launch! People from all over the world have started learning, and warm messages keep coming in. Thank you so much!
Report
The no-signup and free approach makes this really easy to try. I especially like the balance of hand-drawn explanations with a real terminal instead of learning everything from static examples.
No-signup was a very deliberate choice. I hated the idea of someone getting curious and then hitting a signup wall before even typing a single command. And yes, static examples were exactly what I was trying to get away from.
Glad it clicked!
Report
@daiaoki Checking every command as you go is where this gets hard, because on a real terminal there are usually five ways to get the same result, and a learner who reaches the right end state with different flags than you expected should still pass. Does the check compare the command string, or the resulting state of the sandbox filesystem?
Great question, and this was one of my biggest design worries too.
The checks run against the result wherever multiple commands can get you there: the sandbox filesystem, the git state (staging area, branches), or the command output. So git switch -c and git checkout -b both pass, and any regex that produces the right grep output counts, not just the one I had in mind.
The command string is only matched in the few lessons where a specific flag is itself the thing being taught.
That said, if you ever hit a check that rejects something a real terminal would accept, that's a bug in my book and I'd love to hear about it.
Report
The line about refusing to leave the AI's work as a black box is the right one, and it goes further than the terminal. I shipped a render queue an agent wrote, approved the diff twice without reading past the function signature, and lost three days to a stale job id. So the lesson I'd add is reading a diff, not typing commands, because the way people get hurt now is approving code rather than writing the wrong line. Free and no signup is the reason this one actually gets used.
Thanks for sharing this! Completely agree that reviewing agent output deserves its own lesson.
It's something I've been wanting to build, and the fun challenge is planting a bug that feels real instead of a puzzle.
Added to the course backlog!
Report
@daiaoki The bug I'd plant isn't a logic error, it's a fourth copy of a helper that already exists three files over. Nothing breaks, tests pass, and you only feel it six weeks later when you fix one of the four. A retry wrapper around a call that already retries internally is the version that cost me two days.
That’s a much better bug than a simple logic error.
The "fourth copy of a helper" example is exactly the kind of thing that passes every test but quietly increases the cost of maintaining the code. And the retry-on-top-of-retry case is painfully realistic.This makes me think the lesson should be less about "find the bug" and more about "spot what doesn’t belong in this diff."
Definitely adding these to the backlog. Thanks for the examples!
Yes, exactly. I think this is where our "Simulator" format could be a really good fit.
The idea is inspired by a flight simulator for pilots: instead of just learning concepts in a course, you’re put into a realistic situation and have to make decisions and deal with the consequences.
A code review scenario like this — where nothing is obviously broken and you have to go hunting through the code to figure out what doesn’t belong — would be perfect for it.
WebTerm
Hi Product Hunt! I'm Dai, the maker of WebTerm.
Earlier this year I launched WebTerm here: a browser terminal where running `rm -rf /` breaks nothing. More than 1,000 people use it every day now.
Its UI is stripped down to almost nothing, which experienced developers liked. But it's for trying a command the moment you think of it, not for learning things in order, and there was nowhere to explain anything properly.
Engineers who want to get better keep asking me what they should be learning. AI writing the code doesn't end that. How much of the AI's work you refuse to leave as a black box is what decides whether you can step in as a professional, and the more work AI absorbs, the fewer chances there are to build that experience. So I built WebTerm Learn.
Hand-drawn slides teach the idea, then you type the real commands in a real terminal. Every command is checked as you go.
The curriculum is a 3D world map. Each course is a land, so you always know where to go next.
Missions drop you into real incidents: a release that took down production, a secret pushed to a repo.
Pilots meet an engine failure in a simulator, not in the air. Developers should have the same thing.
Terminal, Git, and Vim today, with data analysis, software development, networking, and security to come. All free, and the first lesson takes about a minute.
Whatever you think, I want to hear it. I'll read every comment and reply.
@daiaoki What a cool product!
WebTerm
@patra
Thank you, and thanks for the kind words all over the thread today!
Cool gamified format :) Was the project itself also vibecoded?
WebTerm
@natalia_iankovych
Thanks :) The code was written by AI, but almost every decision was mine. Answer checking, recovery when a learner breaks their environment, the pacing of each slide. I just didn't do the typing.
The first two took by far the hardest design work in the whole project.
Just tried it. Really good git lessons. The other format that's on https://webterm.app/ is good too.
WebTerm
@patra
Thank you! Git is where I've poured the most hours, so that's great to hear. And glad you found webterm.app too, that's actually where the whole project started!
WebTerm
One day since launch! People from all over the world have started learning, and warm messages keep coming in. Thank you so much!
The no-signup and free approach makes this really easy to try. I especially like the balance of hand-drawn explanations with a real terminal instead of learning everything from static examples.
WebTerm
Thanks!
No-signup was a very deliberate choice. I hated the idea of someone getting curious and then hitting a signup wall before even typing a single command. And yes, static examples were exactly what I was trying to get away from.
Glad it clicked!
@daiaoki Checking every command as you go is where this gets hard, because on a real terminal there are usually five ways to get the same result, and a learner who reaches the right end state with different flags than you expected should still pass. Does the check compare the command string, or the resulting state of the sandbox filesystem?
WebTerm
@clement_avq
Great question, and this was one of my biggest design worries too.
The checks run against the result wherever multiple commands can get you there: the sandbox filesystem, the git state (staging area, branches), or the command output. So git switch -c and git checkout -b both pass, and any regex that produces the right grep output counts, not just the one I had in mind.
The command string is only matched in the few lessons where a specific flag is itself the thing being taught.
That said, if you ever hit a check that rejects something a real terminal would accept, that's a bug in my book and I'd love to hear about it.
The line about refusing to leave the AI's work as a black box is the right one, and it goes further than the terminal. I shipped a render queue an agent wrote, approved the diff twice without reading past the function signature, and lost three days to a stale job id. So the lesson I'd add is reading a diff, not typing commands, because the way people get hurt now is approving code rather than writing the wrong line. Free and no signup is the reason this one actually gets used.
WebTerm
@asadmalik901
Thanks for sharing this! Completely agree that reviewing agent output deserves its own lesson.
It's something I've been wanting to build, and the fun challenge is planting a bug that feels real instead of a puzzle.
Added to the course backlog!
@daiaoki The bug I'd plant isn't a logic error, it's a fourth copy of a helper that already exists three files over. Nothing breaks, tests pass, and you only feel it six weeks later when you fix one of the four. A retry wrapper around a call that already retries internally is the version that cost me two days.
WebTerm
@asadmalik901
That’s a much better bug than a simple logic error.
The "fourth copy of a helper" example is exactly the kind of thing that passes every test but quietly increases the cost of maintaining the code. And the retry-on-top-of-retry case is painfully realistic.This makes me think the lesson should be less about "find the bug" and more about "spot what doesn’t belong in this diff."
Definitely adding these to the backlog. Thanks for the examples!
WebTerm
@asadmalik901
Yes, exactly. I think this is where our "Simulator" format could be a really good fit.
The idea is inspired by a flight simulator for pilots: instead of just learning concepts in a course, you’re put into a realistic situation and have to make decisions and deal with the consequences.
A code review scenario like this — where nothing is obviously broken and you have to go hunting through the code to figure out what doesn’t belong — would be perfect for it.
I think we just found a great Simulator idea.