Skip to content

SSH · Serial · Version 1.7.0

Your terminal—and your runbooks—in one place.

Connect over SSH or serial. Turn repetitive procedures into guarded buttons with prompts, checks, approvals, and a complete audit trail.

It now arrives with 2,714 of them already built — Cisco, Junos, FortiGate, Proxmox, Asterisk and 15 more. Nothing to download; it is in the app.

PuTTY on steroids, if you want the short version.

Free. No account needed to download. Builds are currently unsigned — what that means.

Four terminal sessions arranged in a grid, each showing output from a different switch or PBX, with a panel of coloured buttons down the right-hand side.

A real workflow

Pointing forty switches at a new syslog server

Not a demo procedure. This is the shape of the job that comes back every few months, and the reason the buttons exist: it is four commands, and the risk is never the four commands — it is doing them forty times, at ten past six.

  1. Connect to the devices

    Pick them out of a folder and open them together. SSH and serial in the same window, in tabs or a grid.

  2. Press the procedure button

    Built once, by whoever knows the procedure. Everyone else presses it — and can still read every command in it.

  3. Answer the prompt

    The button asks for the value that changes: the syslog collector, the NTP server, the VLAN. One button covers every site.

  4. Confirm the change

    A gate in front of anything irreversible. Answer no and the run stops there, before the write.

  5. Run it across the selected sessions

    Broadcast fires the button at every connected session, waiting for each device's prompt rather than firing blind.

  6. Review the audit log

    Which button, against which connection, when, and what came back. Exports to CSV or JSON for the ticket.

A button paused mid-run, asking for input: a dialog with fields for a host and a count, each labelled with the placeholder its answer will fill.

Step three: the button stops and asks. Nothing has been sent to a device yet.

How a button is put together

Who this is for

Network engineers

One button, forty switches

Push the same change across an estate with a prompt for the value and a gate before it commits — instead of pasting the same block into the thirty-eighth device at ten past six.

What it looks like for Network engineers

Buttons are built from blocks, not config files

A button sends text to the session. It can also wait for a prompt, ask you a question part way through, branch on what came back, or call another button. You build it by stacking coloured blocks — the same way you would explain the procedure to a colleague.

Or you start from one of the 2,714 that ship with the app, copy it into a set of your own and change the two lines that are wrong for your kit. Reading someone else's button is the fastest way to learn what the blocks do, which is most of why they are there.

Values that are the same every time but different on every engineer's machine — your syslog collector, your TFTP host, your site code — go in global variables. Set once, used by every button, and never published when you share the set.

The blocks

send
Types text into the session.
expect
Waits for matching output before continuing.
delay
Waits a fixed time.
form
Asks the operator for input; answers fill {{VAR}} placeholders in later steps.
confirm
Yes/no gate. Answering no stops the script.
pause
Stops until the operator resumes.
if
Branches on what the session returned.
while
Repeats its steps until a pattern appears. Always bounded.
forEach
Walks a list held in a variable, running its steps once per item.
download
Copies a file off the host over SFTP into the downloader's transfer folder.
upload
Sends a file from the downloader's transfer folder to the host over SFTP.
logStart
Begins writing the session output to a file on the downloader's machine.
logStop
Closes the session log the script opened.
exit
Stops the script.
runScript
Copies a script from your library to the host, runs it, then deletes it.
callMacro
Runs another button from this bundle.
callSet
Runs every button in another set from this bundle.

Reload a switch, safely

What a real button looks like once it is built

  1. Confirm

    Asks yes or no: “Reload core-sw-01 now? Everything on it drops.”

    Answering no stops the script here.

  2. Send
    copy running-config startup-config

    Sends Enter afterwards.

  3. Expect

    Waits for #\s*$ for up to 15.0 s

  4. Send
    reload

    Sends Enter afterwards.

  5. Expect

    Waits for Proceed with reload for up to 10.0 s

  6. Send

    Sends Enter afterwards.

Procedures you can read before you run them

Export a set of buttons and share it. Import someone else's. Every set on this site is shown in full — every step, every command, exactly as it will be sent — before you download it. Nothing is hidden behind a download button, and anything that reboots or erases is flagged.

This is the community's work, and it is separate from what ships with the app. Listings say which is which, so you never download a set you already have.

All 15 sets

Juniper Junos

Changes device state

EX, MX and SRX: candidate config, commit confirmed, BGP and policies.

Juniper

The app already ships Juniper Junos.

by Nathan Kirk 82 downloads rev 1

Fortinet FortiGate

Changes device state

FortiOS policies, VPNs, SD-WAN and the session-table diagnostics.

Fortinet

The app already ships Fortinet FortiGate.

by Nathan Kirk 124 downloads rev 1

F5 BIG-IP

Changes device state

tmsh: virtual servers, pools, members, certificates and failover.

Other / vendor neutral
by Nathan Kirk 77 downloads rev 1

What you are agreeing to

This runs commands on your production equipment. Here is where it stands, including the parts that are not finished.

Free, with no account
Download it and use it. An account is only needed to publish a button set, not to read or download one.
Credentials stay in the OS vault
Passwords and passphrases go to DPAPI, Keychain or libsecret — never a config file, never an export.
The assistant cannot run anything
It reads the transcript and proposes a command. You press the key. There is no setting that changes that.
Shared sets are readable first
Every button's full script is on the page before the download button, with destructive steps flagged.
The builds are unsigned
Signing certificates are not being paid for yet, so SmartScreen will warn you. That is expected, not a compromise.
Every download has a SHA-256
While the builds are unsigned that checksum is your only integrity check, so it is worth running.

Security and architecture in full

Why I built SmartCom Revisited

I spend my days on switches, routers, phone systems, Linux servers and things with a DB9 on the back. The work is not difficult so much as repetitive and unforgiving: the same procedure, on the same kind of device, for the fifteenth time — and the one time it goes wrong is the time somebody was in a hurry.

The usual answer is to write a script, and then you have a script per job, per vendor, per site, in a language the next person will not maintain. I wanted the procedure to live where the session lives — to ask for the bits that change, stop before the irreversible step, and leave a record afterwards.

More about the project, and where it stands

There is an assistant, and it reads rather than types

It sees the session transcript and suggests the next command. It is read-only by design: it proposes, you press the key. Point it at Claude or OpenAI, or run Ollama on your own machine so nothing leaves the building.

It is a convenience, not the point of the product — the buttons are. Everything it does.

And it tells you what the command does, while you type it

Type into a session and it works out what you are actually running — not the first word, so sudo -u root tcpdump -i eth0 is a tcpdump question. The page opens beside the terminal, and every example is a small builder: fill in the blanks, then copy it, put it on the command line and edit it, or run it.

It picks the page that matches what you are connected to — Cisco IOS on a switch, Windows at a PowerShell prompt — and anything that looks destructive shows you the command and the box it is going to before it is sent. Around 7,400 pages, cached locally, working offline.

Documentation, not a safety review. How it works.

Get version 1.7.0

Windows installer and portable build, Debian and RPM packages, an AppImage, and macOS disk images for Apple silicon and Intel. All 64-bit.