You pick one during setup and can switch whenever you want in Settings.
>_ termio shellreal
Your commands actually run.
Everything runs in an isolated Linux container on OpenRouter. What you see is the real output, errors included.
Real Ubuntu box with real files
Python, Node.js and npm already installed
Upload and download files
Network access if you turn it on
Works with any tool-capable model
Runs on your OpenRouter key. Usually a few cents or less per command.
>_ termio litefree
A simulated terminal.
Nothing actually runs. A model reads your command and writes what a terminal would probably print, so it can be wrong sometimes.
Free with OpenRouter's free models or a free Mistral key
Or use your own OpenAI, Claude, Gemini, xAI, DeepSeek or Groq key
Remembers what you "did" earlier in the session
Shows a LITE badge so you know it's fake
No real files, network or execution
Good for messing around or learning commands without spending anything.
Cost
Usually a few cents.
Termio itself is free and I don't take a cut. The shell runs on OpenRouter using your own key, so you just pay them for what you use, and for most commands that's a few cents or less.
Where the cents go
Two things: the model's tokens (depends on the model, cheap ones are really cheap) and the time the container spends running your stuff.
container time$0.0001/sec
waking up a container$0.003
container sitting idle$0
You'll need a bit of credit on your OpenRouter account, even with free models, since container time still counts. OpenRouter's docs ↗
Want it completely free? Use Lite.
Termio Lite runs on OpenRouter's free models (around 50 requests a day) or a free Mistral key (around 1B tokens a month right now). It won't touch your OpenRouter credits.
Just remember it's simulated. Fine for playing around, not for when you need the real output.
Commands run on a real hosted Linux machine. No emulator, no WebAssembly thing pretending to be a shell.
02
Exact command strings
Quotes, pipes, redirects, variables, multiline stuff. It goes through exactly how you typed it.
03
Real output
You see what the command actually printed, errors and exit codes included. ls and df columns stay lined up too.
04
One command, one run
It runs what you typed and waits for the next one. It won't go off retrying stuff on its own.
05
Files that stick
Upload files, work on them, download the results. Stuff in your home folder is still there after the container sleeps.
06
Pick any model
Try a model for one session or make it your default. Prices come straight from OpenRouter.
Network
No internet unless you want it.
Network is off by default. Turn it on and the container can only reach an allowlist, not the whole internet.
A few defaults are there for package managers, and you can add your own domains. Local stuff, private IPs and raw IPs get blocked no matter what.
container → allowliston
api.github.com default
pypi.org default
*.pythonhosted.org default
+ your custom domains
What it does
Runs commands in a hosted Linux container
Returns real stdout and stderr
Keeps home directory files between sleeps
Reaches allowlisted domains when networking is on
Has a free Lite mode if you just wanna play around
Where the limits are
Can't touch your phone, computer or local files
Not a VPS, not a bot host, not a web server
Commands time out after 2 minutes by default (5 max)
No interactive full-screen apps like vim or top
Doesn't generate images, video or audio
openrouter:shell is in beta, so Termio is too. It's bound by whatever the hosted container allows, and I can't grant root or install things the environment doesn't support. Model availability, pricing and container lifetime are controlled by OpenRouter, not Termio.
Pulled live from OpenRouter. Prices per 1M tokens, input / output.
Loading models…
plus a tiny bit for container time
FAQ
The questions people actually ask, including the dumb ones.
Basics
Is this just an AI with a fake terminal prompt thrown on top?
Not in Termio Shell. Commands run inside a real isolated Linux container and the output you see is the actual stdout and stderr those commands produced.
The AI turns what you type into a shell call, but it isn't making up the output. If you create a file, run Python, compile code, install a package, or completely mess up a command, that happens inside the container. Verify it yourself:
uname -a
cat /etc/os-release
id
ps aux
df -h
You can even download a Linux root filesystem and chroot into Alpine. That's a real userspace on the sandbox's kernel, not a model roleplaying a terminal.
The one exception is Termio Lite, which is fake on purpose. It's the free mode where a model guesses the output, and there's a LITE badge whenever you're using it so you don't mix them up.
What's the difference between Termio Shell and Termio Lite?
Termio Shell actually runs your commands in a Linux container through openrouter:shell. Real files, real errors, real everything. It uses your OpenRouter key, usually a few cents or less per command.
Termio Lite doesn't run anything. A model just guesses what the terminal would print. It's free with OpenRouter's free models or a free Mistral key, but since nothing really ran, it can be wrong.
So basically: Shell when you need the real thing, Lite when you're just messing around.
Do I need an account?
Not a Termio one, that doesn't exist. You just need an API key: OpenRouter for Termio Shell, or OpenRouter / Mistral / whatever provider you want for Lite.
Your key stays in your browser and goes straight to the provider. There's no Termio server for it to touch.
What devices does Termio support?
Anything with a decent browser. Phones, tablets, laptops, desktops, even a TV if its browser isn't trash.
Can you use Termio on a TV? Technically, yes. Should you type Linux commands with a TV remote? Unless you have several years to spare, probably not.
Why make this when I can already use Shell on OpenRouter?
Because you can. Nobody is stopping you.
Termio literally uses openrouter:shell underneath. It just wraps an actual terminal around it, with sessions, history, files, network controls, model picking, and a free Lite mode.
If you'd rather use OpenRouter Shell directly, go for it. I made Termio because I wanted to. Not every project needs to solve a previously unsolved problem.
Is there a Discord server?
Yep. Come report bugs, show off what you got running, or just hang around.
Termio itself is free. The shell runs on OpenRouter with your own key, so you pay them for the model's tokens plus the time the container spends running. With a cheap model that's usually a few cents or less per command.
You'll need a bit of credit on your OpenRouter account though, even if you pick a free model, since container time still counts.
If you don't want to spend anything at all, use Termio Lite.
Okay but how much exactly?
Container time is $0.0001 per second while your command runs. Waking up a new or sleeping container counts as at least 30 seconds, so $0.003. After that, a warm container only pays for what it uses, and it costs nothing while it's just sitting there.
On top of that you pay for the model's tokens, which depends on the model. Prices show up in the model picker.
So a cheap model gets you a lot of commands for a dollar. Premium models and huge sessions will obviously eat more.
Commands stop working and Termio tells you you're out of OpenRouter credits. It won't fake any output. Top up, or switch to Lite in the meantime.
Does the developer get any of the money?
Nope. No cut, no subscription, nothing in between. You pay OpenRouter (or your Lite provider) directly with your own key.
Why does a simple command use like 10K–20K tokens?
Because the command itself isn't using 20K tokens. There's a lot more happening behind the scenes.
The model gets Termio's instructions, the tool definition, shell info, previous results and the rest of the session before it runs anything.
So you might type:
fastfetch
and think, "that's literally one word."
Meanwhile the model is apparently writing its autobiography backstage.
Pick a cheap model and it doesn't really matter. Pick a premium one and you'll feel it.
Termio Lite
What is Termio Lite?
A fake terminal, on purpose. Instead of running your command, a model reads it and writes what the terminal would probably print.
It's off by default. You can pick it during setup or turn it on later in Settings.
How do I use Lite for free?
Two ways:
OpenRouter free models. Just grab a free OpenRouter key. You get around 50 requests a day.
A free Mistral key. Mistral gives you around 1B tokens a month for free right now, which is a lot.
Those limits are up to OpenRouter and Mistral, so they can change.
Is Lite output real?
No. Nothing runs, so it's an educated guess. Most of the time it looks right, sometimes it's confidently wrong.
Don't use it to check if a script works or to trust a result for anything important. That's what the real shell is for.
Which providers work with Lite?
OpenRouter (free models), Mistral, OpenAI, Anthropic (Claude), Google Gemini, xAI (Grok), DeepSeek and Groq.
Add your key, pick a model, and it plays the terminal. If you use your own paid key, that provider bills you, not OpenRouter.
Termio isn't affiliated with any of them btw.
How do I know if I'm in Lite or the real shell?
There's a LITE badge in the top bar when you're in Lite. No badge means your commands are really running.
Does Lite remember what I did earlier?
Yeah, within the session. If you "make" a folder, later commands try to stay consistent, so ls after mkdir test should show test.
It's still a model keeping track, not a real filesystem, so in long sessions it can forget stuff.
Can Lite run vim, top, or ssh?
No. Interactive stuff isn't supported, you'll just get an error instead of a fake vim screen.
Can I switch between Shell and Lite?
Yep, whenever you want in Settings.
Where does my Lite key go?
Same as your OpenRouter key: it stays in your browser and goes straight to that provider when you run a command. If you use your own key in Lite, your commands go to that provider instead of OpenRouter.
Using the shell
Does it have Python and Node.js?
Yes. Python 3, Node.js and npm are installed by default, so you can use them right away:
Mostly. Commands run in your home directory. When the container sleeps (after 5 minutes idle), files in home are saved and loaded back next time.
What's not restored: running processes, environment variables, and system-level stuff like packages you installed with apt. Files outside home aren't saved either.
OpenRouter keeps saved container files for 30 days after the container was last used. Termio can also back up changed files to your browser so a fresh container doesn't wipe your work.
How long can a command run?
2 minutes by default, 5 minutes max per command. After that it times out and you'll see the timeout instead of output.
Long builds, huge downloads or anything that's meant to run forever aren't a good fit.
Can I switch models without changing my default?
Yes. In the model picker, Try model switches only the current session. If you like it, Make default saves it for future sessions.
Each model also has a details page with pricing, context length, supported input/output types and its description. Shell needs a model that supports tool calling.
Is this fully stable? Can I install any tools?
Probably, yeah. It depends on the tool. A lot of normal Linux packages should work, but some won't because of sandbox or network limitations. You'll need networking on and the right domains allowlisted for most installs.
Termio and openrouter:shell are both still in beta, so expect the occasional bug or something randomly deciding it doesn't want to work today.
How do I run another Linux distribution inside Termio?
Termio's container runs Ubuntu, but you can run an Alpine userspace inside it with chroot, which also gets you Alpine's apk package manager. Here's the full walkthrough, using Fastfetch as the example.
1. Enable networking Networking is off by default. Turn it on and add this custom domain to the allowlist:
dl-cdn.alpinelinux.org
2. Download the Alpine Mini Root Filesystem Termio runs on x86_64, so grab the x86_64 rootfs:
mkdir -p /alpine && tar -xzf alpine-minirootfs-3.20.9-x86_64.tar.gz -C /alpine
4. Verify Alpine works Each command runs on its own, so an interactive chroot won't persist between commands. Pass the command straight to Alpine instead:
chroot /alpine /bin/sh -c 'cat /etc/os-release'
You should see something like:
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.20.9
PRETTY_NAME="Alpine Linux v3.20"
5. Set up DNS and TLS certificates
cp /etc/resolv.conf /alpine/etc/resolv.conf
mkdir -p /alpine/etc/ssl/certs
cp -a /etc/ssl/certs/. /alpine/etc/ssl/certs/
Skip this and apk will probably throw TLS certificate errors at you.
OS: Alpine Linux 3.20.9 x86_64
Kernel: Linux 6.18.36-cloudflare-firecracker-...
Packages: ... (apk)
Shell: sh
To be clear: this isn't booting another kernel or a VM. chroot just gives the process Alpine's userspace and root filesystem, on top of Termio's existing kernel.
Note: since /alpine is outside the home directory, it won't survive the container sleeping. Extract it under ~ if you want it to stick around.
Can I work with images?
Probably. I haven't tested image tools much, so no promises.
It depends on the tool, its dependencies, and whether it plays nice with the sandbox. If it works, nice. If it explodes, well, now we know.
I don't know how to install X. What command do I use?
Termio can't magically give you a command that installs anything you name.
It assumes you already know your way around Linux. Different software has different install methods, dependencies and repos, and some of it just won't work inside the sandbox.
If you're still learning, Termio Lite is a decent free place to practice commands without burning credits.
The dumb ones
Can I run GTA 6?
Sure, if you can fit it into about 1.2GB of RAM and 3.7GB of disk. So, no.
And no, Termio Lite can't "simulate" it either. It'll just tell you the command wasn't found, which is honestly the most realistic output possible.
Does this mean I can host bots on it?
No. The container sleeps after 5 minutes idle, commands time out after a few minutes, and background processes don't survive. It's a terminal, not a hosting plan.
Does this mean I can DDoS people!!??
Obviously not. What did you think this was?
You're probably not DDoSing anyone from your own PC, never mind from a tiny sandbox with allowlisted network access.
And if you try anyway, you've found a remarkably stupid way to get your OpenRouter account banned and potentially reported to the relevant authorities. Termio is a terminal, not a complimentary botnet.
Can I hack people?
No. Termio isn't for breaking into accounts, attacking systems, or anything else you very obviously don't have permission to do.
Having a Linux shell does not come with a complimentary license to commit cybercrime.
Can I sue the developer or OpenRouter if my account gets banned or I get caught by the feds?
No. Nice try.
If you paste some random "ULTRA MEGA HACK TOOL 2026" from GitHub without understanding a single line, break OpenRouter's rules and get banned, that's not suddenly the developer's problem.
Termio comes with a Linux shell, not legal immunity for script kiddies.
Nothing matches that. Ask in the Discord.
Go type something.
Nothing runs on your device, so you can't break anything. Probably.
Termio isn't running some hidden backend collecting your commands. Your browser stores your setup, and OpenRouter runs the actual shell work. That's basically it, a straight line from you to the model. Below is the honest breakdown, skipping the legal padding.
Last checked against the source · Sep 27 2026
Where stuff actually goes
There's no Termio server sitting in between you and the model. Your browser talks straight to OpenRouter, or straight to your chosen provider if you use Termio Lite with your own key.
Stays on your device
Your browser
your API key
settings + history
saved sessions
file backups
Goes out
OpenRouter
the commands you type
whatever model you picked
shell requests
files you upload
Lite: your provider instead
Runs there
Hosted container
the actual Linux box
files inside it
terminal output
exit codes
What's local vs what isn't
"Runs in your browser" doesn't mean nothing ever leaves. A hosted terminal has to send your commands somewhere to actually run them. Here's the split, no sugarcoating.
stays put
API key
Sits in your browser's IndexedDB. Only used in the request header when talking to OpenRouter directly. Never touches a Termio server, never shows up in a URL. Lite provider keys work exactly the same way.
goes out
Your commands
Whatever you type, the model you're using, and any shell instructions go to OpenRouter to be processed. In Lite with your own key, they go to that provider (Mistral, OpenAI, etc.) instead. That's kind of the whole point of the tool.
stays put
Sessions and history
Your settings, command history, and saved sessions live in your browser. So do the filesystem backups if you've got that on.
goes out
Files and output
Anything you upload lands in the OpenRouter workspace. Container files, terminal output, everything the shell spits out lives on their hosted infra, not yours.
What's actually stored locally
There's no account system, no Termio cloud, none of that. It's just IndexedDB keeping things around so you don't lose your setup every reload.
Settings
Your model choice, interface stuff, network toggle, custom domains you've allowed, feature flags — the boring config stuff.
Terminal history
Saved sessions, past commands, which models you used, container references, the rendered output blocks.
File records
Just metadata — file name, size, status, the OpenRouter file ID. The actual file contents live on OpenRouter, not in your browser.
Filesystem backups
If a file you made changes to, it can get mirrored into IndexedDB so a fresh container doesn't just wipe your work out of nowhere.
Yeah, there's analytics
Not gonna dress this up. Termio uses Google Analytics, measurement ID G-HNR5XW5LXZ.
What that actually means
It's page views and basic interaction stuff, that's it. Your prompts, commands, API key, and terminal output never get sent to analytics. Standard Google Analytics rules apply on their end since it's their infra processing it.
Network access is off by default
The container can't reach the internet unless you flip that on, and even then it's not a free-for-all.
Default
network_policy: disabled. The shell can't make outbound requests at all until you turn it on.
If you turn it on
You get an allowlist, not open internet. Stuff like api.github.com, pypi.org, and *.pythonhosted.org are in by default, plus whatever custom domains you add.
What gets blocked regardless
Private network stuff, local addresses, raw IPs, sketchy schemes, malformed hosts, and the OpenRouter API endpoints themselves get rejected even as custom entries.
Ways to clear your stuff
You're not locked in. Local data can be wiped from inside Termio, and remote files can be deleted from OpenRouter too.
Clear your API key
Wipes the stored key out of IndexedDB.
Delete remote files
The "remove & delete from OpenRouter" option actually deletes it from their workspace, not just from your view.
Full reset
Wipes settings, sessions, history, file records, and backups after you confirm you actually want that.
The other companies involved
OpenRouter and Google run their own infra and set their own rules for it, not Termio.
OpenRouter
Handles the auth, model routing, file storage, billing, and the actual hosted containers your commands run in.
If you use Termio Lite with your own Mistral, OpenAI, Anthropic, Gemini, xAI, DeepSeek or Groq key, your commands go to that provider under their own privacy policy and terms. Termio isn't affiliated with any of them.
Made in Romania
Termio is made in Romania, built and maintained as a small solo project. There's no company behind it, no VC funding, no office, and no legal department writing paragraphs nobody wants to read.
It's a browser terminal made for running a real Linux environment from pretty much any device, without needing powerful hardware of your own. Termio is still new and actively being built, with features added and changed based on actually using the thing rather than some five-year corporate roadmap.
Everything is handled by one person in Romania, from writing the code and fixing bugs to keeping the service running. The same person building Termio uses it too, so privacy isn't something delegated to a policy team. The goal is simply to be clear about what Termio does with your data and what it doesn't do.