Script Directory

Your commands, saved once. One click on every server.

You already know the command. You have typed it forty times. Save it once with a {{variable}} where the bit that changes goes, and it follows you to every connection you open.

How It Works

How it works

Step 01 - You

Save.

Paste the command you keep retyping. Name it, tag it, and mark the bits that change.

Step 02 - CtrlOps

Fills.

Every {{variable}} you wrote becomes a prompt at run time. One script covers every service.

Step 03 - It

Runs.

One click on whichever server you have open. Output lands live in the terminal.

Same Command, Three Servers

Typing it once is fine. It is the third time that stings.

Both sides are tailing the nginx error log on three different boxes. Left: remember the path, get it slightly wrong, search your shell history, then do the whole thing again on the next server, and again on the one after that. Right: one saved script, three clicks. Watch how much of the left lane is work you have already done.

Retyping a command on three servers versus running one saved script
Try It Yourself

This one is real. Go on, drive it.

A working copy of the Scripts panel, running in your browser. It starts empty, exactly like a fresh install. Create a script, watch it find your variables as you type, then run it - and try to break it, because it will fail for real.

An interactive Script Directory you can use
Connection

No scripts yet

web-01 · terminal

Output appears here when you run a script.

There is no Schedule button in here because there is not one in the app either. Scripts run when you click Run, on the one server you have open - and the library itself lives on your machine, not on any of them.

Where Scripts Live

The library is on your machine. That is the whole trick.

Scripts are not installed on a server, so they are not stuck on one. They sit in the app's data folder on your computer, which means every connection you open already has them - the box you set up this morning included.

Scripts are stored on your computer and available on every connection
Your computer

App data folder

tail-error-logs
restart-service
disk-usage
pm2-restart
over your own SSH
web-014 scripts

root@203.0.113.17

db-024 scripts

root@198.51.100.23

billing-prod4 scripts

root@192.0.2.44

Nothing was copied to any of them.

What that gets you

  • A new server is useful the moment you connect to it - the library is already there.
  • Nothing is installed on the server, so there is nothing to clean up when you stop using it.
  • Your commands are not sitting in someone else’s database.

What it costs you

  • A teammate does not get your library. There is no sharing today.
  • A fresh install starts empty - the app data folder is worth backing up.

The same local-first stance runs through the rest of the app - see how the AI Terminal handles your server data.

From real users

Set it up once, then it is one click.

Nobody was asked about saved commands. It is just what people mention once they have stopped retyping the same thing on every box.

x.com

CtrlOps Scripts feature is a huge DevOps productivity boost. Save, reuse & run scripts directly from the panel. 🚀

Product Hunt

finally something that replaces my mess of ssh tabs and random bash scripts. the playbook feature is underrated, set up my common fixes once and now its just one click. great launch guys..

PV
Prakash Vasani
Where It Runs

Your commands stay yours. And nothing fires on its own.

A saved-command library is a fair picture of how you run your infrastructure. It sits on your machine, it moves over your own SSH connection, and it does precisely nothing until you click Run.

Scripts stay on your computer and only run when you click Run

Where do the scripts live?

In the app’s data folder on your computer. They are not uploaded anywhere, and they are not written to your servers - which is exactly why they are available on all of them.

What runs on its own?

Nothing. A script executes when you click Run, on the one connection you have open, and the output goes to the terminal in front of you. There is no daemon and no agent installed on the server.

What can CtrlOps see?

The connection is a plain SSH session from your machine to your server. Your commands and their output do not route through a CtrlOps server on the way.

Script Directory FAQ

Questions worth asking before you save one.

It is a personal library of shell commands. You save the things you run all the time - restart nginx, tail an error log, check disk usage - and run them with one click on any server you are connected to. Scripts live on your computer rather than on a server, so the same library is there on every connection you open. You reach it from the Scripts panel in the AI Terminal header.
Write {{variable_name}} anywhere in the command and CtrlOps detects it as you type. When you click Run, a Run Variables box asks for each one, substitutes your answers, and executes the result. It means one tail-log script with a {{service}} placeholder covers nginx, php-fpm, mysql and everything else, instead of one script per service. You can try that on this page without installing anything.
In the CtrlOps app data directory on your own computer. They are never uploaded to a CtrlOps server and never written to the machines you connect to. That is precisely why they follow you around: a server you added five minutes ago already has your whole library available to it, because nothing had to be installed there.
Yes. Because the library is local to your machine, every connection you open can run every script in it. What matters is which connection is currently open: a script always runs against the server you are looking at, so check the connection name in the header before you hit Run. To run the same script somewhere else, switch to that server first and run it again.
You get a "Script failed, check terminal output" toast, and the real error is printed in the terminal area. CtrlOps does not swallow it or reword it - if tail says the file does not exist, that is what you see. Scroll up in the terminal if the output has already moved on.
No. Scripts run when you click Run, and there is no cron or scheduler in the Scripts panel. This is a library for the commands you run by hand, not an automation engine. If you want files copied to S3 on a schedule, that is the Backup module, which does write a crontab for you. For anything else recurring, a real cron job on the server is the right tool.
No. There is no broadcast or fan-out. A script runs on the single connection you have open, so three servers means switching to each one and clicking Run. If you genuinely need to push one command to a whole fleet at once, use Ansible or a similar configuration -management tool - CtrlOps is not trying to replace one. What it does do well is make switching between those servers instant.
They solve opposite halves of the same problem. The AI Terminal is for commands you do not know: describe what you need in plain English, review the command it writes, approve it. The Script Directory is for commands you know too well and are tired of retyping. In practice they feed each other - you ask the AI for something once, and when it turns out to be useful you save it as a script.
Get started

Stop retyping it. Save it once.

Take the three commands you type most this week and turn them into one-click scripts that work on every server. 1-month free trial, no credit card.

Start instantly· No credit card· No sneaky autorenewals