v2.3.16 now available·See what's new →

Command Center
for servers & your machine

Server management over SSH and SFTP: run remote commands on your local machine or batch-execute them across many hosts, keep a reusable command library, schedule and chain multi-server workflows, and monitor resources — with an in-app AI assistant and a built-in MCP server for Claude, Cursor & Kiro.

Not sure which Mac? Apple menu → About This Mac: “Apple M1/M2/M3…” = Apple Silicon, “Intel” = Intel.

Linux or macOS terminal:curl -fsSL https://github.com/Rocky-Works/selfcmd/releases/latest/download/install.sh | bashinstall steps

Windows 10/11 · macOS 13+ (Intel & Apple Silicon) · Linux (tar.gz, x86_64) · Offline & private · Free Starter plan

bash — selfcmd
❯ # Download the installer for Windows
❯ selfcmd-windows-x64.exe
❯ # Launch — no Python, no setup
✓ SelfCmd ready — 3 connections loaded
6+
Tools imported
AES
Encryption
MCP
AI agents
100%
Offline

One interface for the whole ops workflow

From SSH management to resource monitoring — SelfCmd covers the full ops workflow without switching tools.

SSH Connection Manager

Organize servers with groups and tags, search instantly, and import sessions from Xshell, MobaXterm, FinalShell, SecureCRT, PuTTY and ~/.ssh/config. Reach servers behind a bastion with built-in jump-host (ProxyJump) support — password or key auth on both hops. Open an interactive terminal, or browse and transfer files with the built-in SFTP explorer — straight from a connection. Split the terminal area into two or four panes to watch several hosts side by side, and turn on synchronised input to type a command once and have it run on every session in the group. Quick-connect with ssh user@host too. Passwords are AES-encrypted at rest.

Split panes + synced inputTerminal + SFTPJump host / bastion

AI Assistant & MCP

Describe intent in plain language and the in-app AI assistant proposes a command you review before running — with one-click failure diagnosis. A built-in Model Context Protocol server also lets Claude, Cursor and other agents list/run your commands, tasks and workflows, read diagnostics (metrics, log tails, remote file reads and directory listings) and make guarded changes (run commands, write files) — reusing stored connections, fully offline. Safety first: action tools off by default, two-step + native desktop confirmation, per-connection access tiers, dangerous-command/sensitive-path screening, and a full audit log.

In-app AIMCP · Claude/CursorAudit + confirm

Command Library

Save your most-used commands as one-click buttons, organized by group and tag — drag a button to move it between groups — or switch to a “most-used” view (Top 10/20/custom N) ranked by how often you actually run them, with a “recent” row for the ones you just ran. Press Ctrl+K anywhere for a command palette: type a few letters, hit Enter. Clicking a button fills the command so you can read it before pressing Run; flip individual commands you trust to run on a single click. Every run is kept in a per-command history, so last run’s output is still there after the next one clears the screen. The editor gives you shell syntax highlighting and a live preview of the fully-expanded command. Parameterize with reusable {{variables}} — type “{{” in any command box to autocomplete them, or copy a variable’s reference in one click; the same variables also expand in tasks, workflows and SFTP paths. Export/import your whole library, and dangerous commands (rm -rf, mkfs, dd…) ask for a second confirmation before they run.

Ctrl+K command palettePer-command run history{{variables}} + autocomplete

Workflow Engine

Chain remote commands and SFTP transfers into reusable runs. Pick sequential or parallel execution, set per-step timeout, retry and stop-on-failure, and override the connection per step. Run the same workflow across several hosts with adjustable concurrency and one combined summary. Pass one step’s output into the next, watch live per-step progress, cancel any time, and export/import whole workflows as JSON.

Sequential / parallelMulti-host runsLive progress

Scheduled Tasks

Run commands on a schedule — one-time at a set moment, or repeating from every few seconds to hours — on a remote host or your local machine. Attach result checks to flag failures automatically, pause and resume individual tasks, watch a live countdown to the next run, and keep a per-task output log.

PeriodicOne-timeResult checks

Resource Monitor

Track CPU, memory, disk usage, disk I/O, network bandwidth — and SSD/NVMe disk life (SMART wear) — against thresholds you set, with a hold-duration so brief spikes don’t cry wolf. One host is a single row: enable several metrics on it at once, and rows turn amber then red as usage crosses your limits. Get non-blocking toast alerts, recovery notices and optional throttled email — never a pile-up of dialogs — open a trend view for any metric, and export/import your whole monitor set.

CPU · Mem · Disk · Net · Disk-lifeMulti-metric per hostTrend · export/import

Built-in Toolbox

A categorized toolbox: ping, port/service probing and same-LAN MAC lookup; SFTP/FTP transfer; a serial (COM-port) console for switches, routers and embedded boards; plus dev utilities — timestamp/epoch converter, cron expression helper, JSON/YAML formatter, base converter, checksums, text compare, keyword extract and a notes scratchpad. Pin the tools you use most to the sidebar for one-click access.

Net diag + serial consoleTimestamp · Cron · JSON/YAMLPin to sidebar

Multi-language UI

The whole interface — menus, dialogs, tooltips and messages — switches between English and Simplified Chinese instantly at runtime, no restart needed. Add another language by dropping a JSON file into the locales/ folder; the app auto-detects it. Fonts and layout scale cleanly from laptops to 4K.

EN / 中文Runtime switchHiDPI

Offline & Private

Everything runs on your machine — servers, credentials and logs never leave it, and the app never phones home or ships telemetry. Passwords are AES-encrypted at rest, and Pro licenses activate fully offline and bind to your device. Light and dark themes are built in and switch on the fly.

No phone-homeMachine-boundDark / Light
Spotlight — Workflow Engine

Chain tasks into reusable runs

Build workflows that combine SSH commands and SFTP transfers across your servers. Each step gets retry, stop-on-failure, and live progress — re-run a whole deploy or restart sequence with one click.

  • ✓Per-step retry & stop-on-failure
  • ✓Per-step SSH connection override
  • ✓SFTP transfer steps with auto mkdir
  • ✓Live progress, cancel, and last-run status
  • ✓Export / import workflows as JSON
workflow: deploy-prod.json
1Pull latest codeweb-01✓
2Upload config.envweb-01✓
3Restart serviceweb-01↻
4Health checkweb-01…
Spotlight — AI Assistant & MCP Server

Let Claude, Cursor or Kiro operate your servers — safely

SelfCmd ships a built-in Model Context Protocol server. AI agents reuse your saved connections to diagnose and act — fully offline, with a human in the loop for every change.

  • ✓Read-only by default: metrics, log tails, file reads, dir listings
  • ✓Guarded writes: run commands, run tasks/workflows, write files
  • ✓Two-step + native desktop confirmation before any action
  • ✓Per-connection access tiers: full / read-only / blocked
  • ✓Dangerous-command & sensitive-path screening + full audit log
MCP tools exposed to your agent
list_connectionsREAD
get_remote_metricREAD
tail_remote_logREAD
run_commandWRITE
run_workflowWRITE
write_remote_fileWRITE

Start free, scale when ready

No subscription. Pro is a one-time, offline license — your data never leaves your machine.

Starter

Free

 

Every feature, with generous limits — great for individuals.

Download
  • ✓Up to 5 SSH connections
  • ✓Up to 10 scheduled tasks
  • ✓Up to 30 library commands
  • ✓Up to 10 workflows & 10 monitors
  • ✓Groups, tags & session import
  • ✓Full toolbox: net diag, SFTP/FTP, timestamp/cron/JSON-YAML
  • —Unlimited resources
  • —Priority support
✦ Most Popular

Pro

$49$29one-time

Launch price — first 100 buyers

A one-time, offline license that removes every limit. Free updates within v2.

Get Pro

Online checkout coming soon — click to email us

  • ✓Unlimited connections, tasks & buttons
  • ✓Unlimited workflows & monitors
  • ✓Email alerts on thresholds
  • ✓Config & workflow export / import
  • ✓Offline activation, machine-bound
  • ✓No account, no phone-home
  • ✓Priority email support
  • —Multi-seat team licensing
  • —Volume discounts

Team

$149for 5 seats

 

Volume licensing for teams — 5 seats included, discounted extras.

Get Team

Online checkout coming soon — click to email us

  • ✓Everything in Pro
  • ✓5 seats included (~$30 each)
  • ✓Extra seats at $30 · volume discounts
  • ✓Shareable command & workflow libraries (export / import)
  • ✓Centralized licensing & invoicing
  • ✓Priority support

All plans store data locally — no cloud required. Pro is a one-time purchase, activated offline.

Online checkout is being finalized. To buy Pro or Team now, email [email protected] and we'll send an offline license.

Built for how ops teams work

See how SelfCmd solves everyday server management challenges.

1

Migrate from your old SSH client

Switching from Xshell, MobaXterm, FinalShell, SecureCRT or PuTTY? Import your saved sessions in seconds, then organize them with groups and tags.

ImportGroups & tagsOnboarding
2

Nightly Server Maintenance

Schedule disk cleanup, log rotation, and service restarts across many servers. SelfCmd runs them on your interval — no cron setup needed.

ScheduledMulti-serverAutomated
3

Deploy & Verify Workflow

Build a workflow: pull latest code → upload config → restart service → health check. Run it with one click, with retry and live progress.

WorkflowDeployOne-click
4

Verify a deploy, document the change

After deploying a new build: run File Checksum on the local artifact and the remote copy to confirm they match byte-for-byte. Open Text Compare to diff the old and new config side-by-side and spot unintended changes. Then paste the summary into Notes — timestamped, searchable, always at hand for the next incident review.

ChecksumText CompareNotes
5

Reach servers behind a bastion

Production hosts on a private network? Turn on the jump host (ProxyJump) for a connection and SelfCmd tunnels through your bastion — for the terminal, SFTP, scheduled tasks and monitoring alike, with password or key auth on each hop.

Jump hostPrivate networkProxyJump
6

Disk & Memory Alerts

Set an 85% disk threshold on production servers. Get a non-blocking toast — and optional email — the moment usage spikes, plus a recovery notice.

MonitorToast + emailRecovery
7

One row per server, many signals

Watch a fleet without clutter: enable CPU, memory, disk and SSD/NVMe disk-life (SMART wear) on each host as a single row. Catch drives approaching end-of-life before they fail, and see the worst metric color the row at a glance.

Multi-metricDisk life / SMARTFleet
8

AI-assisted incident triage

Point an MCP client — or the in-app AI assistant — at a host marked read-only: pull metrics, tail logs and read configs to find the cause. Any write action stays gated behind desktop confirmation.

AI / MCPRead-onlyDiagnose

Up and running in 2 minutes

No Docker, no cloud account, no subscription required.

❯ pip install -r requirements.txt
❯ python main_qt.py
✓ Ready

Changelog

v2.3.16Terminal Workspace, Command Palette & Multi-Host Workflows2026-10-11
  • —Terminals: a tabbed SSH workspace with a session tree, split panes (side by side, stacked or 2x2), pop-out windows; optional synchronised execution runs a command in every session that has it on (Ctrl+C stops them all), and recent connections reopen in one click
  • —Press Ctrl+K anywhere to open the command palette and find, fill or run a library command without the mouse; a floating always-on-top Quick commands bar keeps your daily commands one click away
  • —Command Library: batch find and replace across many commands, export the library as a document, bundle commands into a shell script and upload it to a server, see the last few outputs of a command (Recent runs), and get an extra confirmation before irreversible commands run
  • —Workflows can run once on each of several servers from a single window, with a concurrency limit, per-host progress and a summary; step outputs stay separate per host
  • —SFTP: compute checksums for selected files and compare them against a pasted checksum list, save downloads into a per-server folder, and choose Keep both or Overwrite when a file already exists
  • —Local commands: pick the local shell in Settings (Auto uses PowerShell on Windows, or choose cmd or WSL), with clearer notices when a command uses syntax the chosen shell does not understand
  • —Favorites sidebar is always visible with sensible default tools, an Open Tools button and a Tools shortcut on the collapsed rail; the Tools page gives every tool its own icon and drops the duplicate local shell entries; Test All Connections shows progress and an OK / failed / skipped summary, and logs in at most 8 hosts at a time
  • —Smaller touches: Monitor can start or stop only the selected rows, the serial console can timestamp logged lines, a system tray menu shows or hides the window and the scheduler status, and AI dialogs show reasoning progress for thinking models instead of looking frozen
v2.3.8Streaming Local Commands, Host Compare & Sortable Lists2026-09-12
  • —Local commands now stream their output line by line instead of appearing only after they finish, and a command the shell cannot run (a bare sudo that wants a TTY, for example) reports the error instead of taking the app down with it
  • —New Tools → Host Compare: pick two connections and a directory, then walk the tree comparing file contents host-to-host — a fast way to prove two servers really are identical after a deploy
  • —Click a column header in Connections, Tasks, Workflows and Monitor to sort by it, and newly created items now appear at the top of every list by default
  • —Ticking task checkboxes is enough for batch run/delete; you no longer have to also select each row for the action to see it
  • —One-line online installer for Linux and macOS: pipe install.sh to bash and it picks the right build for your architecture, installs it and registers the app menu entry
  • —The interface now picks its initial scale from your display instead of always starting at 100%, so 1440p and 4K screens are readable out of the box; empty-state guidance and the license pages no longer get their text clipped
  • —macOS: a sharp app and installer icon (built from a true 1024px master rather than an upscaled 16px frame), and the minimum supported version is now macOS 13 in exchange for the newer, faster Qt 6.10 runtime
v2.3.5macOS Startup Fix2026-09-07
  • —Fixed the macOS build refusing to launch with an OpenSSL symbol error (_SSL_get0_group_name): the bundle now uses cryptography’s own prebuilt static-OpenSSL wheel instead of whatever libssl the build machine happened to have
  • —The Linux release check installs the full documented Qt runtime and surfaces the real import error, so a broken build can no longer slip through as a vague failure
v2.3.4Folder Uploads, Large Transfers & Cross-Platform Packaging2026-09-07
  • —Drag a whole folder into the SFTP browser to upload it — dropping onto the file list works as well as onto the tree — and multi-gigabyte transfers no longer run the app out of memory
  • —macOS keeps your data outside the .app bundle, so connections, tasks and licenses survive an app upgrade or a read-only install location
  • —macOS and Linux are now packaged and treated as separate platforms rather than one lumped-together “Unix”, fixing paths and platform checks on both
  • —Admin panel: a documented way back in when you are locked out, reset links that actually work, and an explicit message when mail delivery is not configured instead of a silent no-op
  • —CI now launches every packaged build before it can be published, so a bundle that cannot start never reaches a release
v2.3.3Multi-Host Execution, Host Status & Reliability2026-09-01
  • —Run one command across many hosts
  • —SFTP tasks get a multi-host window
  • —Host availability now comes from one shared source across every connection picker
  • —Consistent typography throughout, a slightly larger default font, and a bottom window bar that shows how many windows are docked and highlights them while collapsed
  • —Fixed the status bar and monitor metric cells rendering as unreadable white blocks on some dark-theme setups
  • —Clearer failures for local commands: unexpanded {{variables}} are caught before anything runs, and Windows now warns when bash-only syntax is about to go through cmd.exe instead of leaving you with a cryptic error in the system language
  • —Readability fixes: SFTP tasks moved from the "More" menu onto the toolbar
v2.2.0Monitor Redesign, Serial & Online Licensing2026-08-22
  • —Monitoring redesigned: one row per server with a column for each metric (CPU, memory, disk, disk I/O, network, disk life); values read green when healthy and turn red the moment a threshold is crossed
  • —Watch several metrics on one server at once, with a shared or per-metric threshold; long-running monitors now keep the SSH connection alive and auto-reconnect if it drops
  • —Serial (COM-port) console now lives under Connections, right alongside your SSH hosts
  • —Command Library: a "most used" group surfaces your top commands (custom Top-N), plus a resizable/maximizable editor
  • —More reliable in-app feedback with built-in spam protection
  • —Help reorganized into a "Support & License" tab, with Check-for-update moved next to the version info
v2.0.30Jump Hosts, Deeper MCP & Reliability2026-08-14
  • —SSH jump host (ProxyJump / bastion): reach private servers through a bastion for the terminal, SFTP, scheduled tasks, workflows and monitoring — password or key auth on each hop, jump credentials encrypted at rest and stripped from shared exports
  • —MCP server gains read-only remote file tools (read file, tail log, list directory) plus a guarded write-file tool with sensitive-path screening; MCP connections are jump-host aware
  • —Workflow reliability: cancel now interrupts the in-flight command, and parallel runs no longer share step-output state between threads
  • —Terminal: smoother line-precise scrollback and a draggable scrollbar; edit dialogs (connections, tasks, workflows, monitors, SFTP) dock to the window bar so they’re easy to find when minimized
  • —Command boxes autocomplete {{variables}} as you type, with a one-click reference copy
  • —Groundwork for Linux (AppImage) packaging and a cross-platform test matrix on CI
v2.0.24AI Assistant, MCP & Command Library2026-07-01
  • —AI Command Assistant: describe intent in plain language, review the proposed command, then run it on a chosen connection — with one-click failure diagnosis
  • —Built-in MCP server for Claude / Cursor / Kiro: read-only tools by default, two-step + native desktop confirmation, per-connection access tiers, full audit log
  • —Command Library: reusable {{variables}} shared across tasks, workflows and SFTP paths; export / import the whole library; dangerous commands ask for a second confirmation
  • —New toolbox utilities, now grouped by category: timestamp / epoch converter, cron expression helper, JSON / YAML formatter
  • —Open an interactive terminal and browse files over SFTP straight from a connection; quick-connect with ssh user@host
  • —UI: larger row spacing and fonts, light/dark polish, and a layout that adapts from laptops to 4K displays
v2.0.2Update & Release Reliability2026-06-09
  • —Reliable in-app check-for-update feedback
  • —Cloudflare R2 upload / checksum compatibility fixes for installers
  • —Fixed a footer hydration warning on the website
v2.0.1Startup, Help & Licensing Polish2026-06-07
  • —Optional launch on Windows startup
  • —Reworked Help page (Support / Version sections)
  • —Get-license opens a pre-filled email with machine ID
  • —Feedback falls back to your email client when offline
  • —Unified domains and contact details
v2.0.0Major UI Overhaul2026-05-20
  • —Migrated to PySide6 Qt6 interface
  • —Added side-nav with lazy-loaded panels
  • —Live locale switching (EN / ZH)
  • —Dark / Light / System theme via qdarktheme
  • —Collapsible command groups with lazy rendering
v1.9.0Monitor & Alerts2025-02-15
  • —CPU / Memory / Disk usage monitoring
  • —Email alert via SMTP with throttle control
  • —Per-item enable/disable toggle
  • —Alert history and cooldown
v1.8.0Workflow Engine2024-12-10
  • —Visual task-flow builder
  • —Sequential and parallel execution modes
  • —SFTP upload steps inside workflows
  • —Export / import workflow JSON
v1.7.0Command Panel2024-10-05
  • —Collapsible command groups
  • —Tag-based filtering
  • —Single-click fill + double-click execute
  • —Batch execute dialog
v1.6.0Encrypted Storage2024-08-20
  • —Fernet AES password encryption at rest
  • —Per-install keystore
  • —Secure export / import of full config

Got questions?

Frequently Asked

What OS does SelfCmd run on?
Windows 10/11 (64-bit), macOS 13+, and Linux (x86_64) all have native downloads. macOS ships as two builds — Apple Silicon (arm64, for M-series Macs) and Intel (x86_64); pick the one matching your Mac (the Intel build also runs on Apple Silicon via Rosetta 2). Linux is a portable tar.gz that requires glibc 2.35+ (Ubuntu 22.04+, Debian 12+, Fedora 36+); older distros such as Ubuntu 20.04/18.04/16.04 are not supported. Extract it and run ./SelfCmd, or run bash install.sh to add it to your app menu (needs a desktop session; on minimal systems install libgl1/libxcb/fontconfig). On Linux and macOS you can also install in one line: curl -fsSL https://github.com/Rocky-Works/selfcmd/releases/latest/download/install.sh | bash — see the Docs page for the full steps. If you prefer, you can still run from the Python source with Python 3.10+.
Is there a free tier?
Yes. The Starter plan is free and includes every feature with generous limits — up to 5 connections, 10 tasks, 30 library commands, and 10 workflows/monitors. Pro removes the limits.
How does Pro licensing work?
Pro is a one-time, offline license. Activation happens entirely on your machine and binds to your device — no account to create, and the app never phones home.
Can I import from my current SSH client?
Yes. SelfCmd imports saved sessions from Xshell, MobaXterm, FinalShell, SecureCRT, PuTTY, and ~/.ssh/config. You can also scan a subnet to batch-add hosts.
Can I connect through a bastion / jump host?
Yes. Enable “Use a jump host (bastion)” on a connection and set the bastion’s host, user and credentials (password or key). SelfCmd opens the target through the bastion using ProxyJump — the same tunnel is used for the terminal, SFTP file browser, scheduled tasks, workflows and monitoring, and by the MCP server. Jump credentials are AES-encrypted at rest and stripped from shared exports.
Are my SSH passwords safe?
Yes. Passwords are encrypted at rest using Fernet (AES-128-CBC + HMAC-SHA256). The key is stored locally and never transmitted anywhere — everything stays on your machine.
How many servers can I manage?
Pro has no hard limit. SelfCmd handles hundreds of connections with built-in pagination, search, groups, and tags.
What does disk-life (SMART) monitoring need on the server?
It reads SSD/NVMe wear via SMART, so the target needs smartmontools (smartctl) — or nvme-cli for NVMe — installed, and the check must run with enough privilege (root or passwordless sudo). Where SMART data isn’t available (e.g. plain HDDs or restricted VMs), the metric simply shows N/A instead of failing the monitor.
What happens when a connection fails?
You get the specific reason immediately — authentication, timeout, connection refused, or DNS — instead of a spinner that silently retries. Per-module logs keep an error history.
How do I add more languages?
Drop a new JSON file (e.g. ja_JP.json) into the locales/ folder following the existing key structure. The app auto-detects available locales and switches at runtime.
Can the app suggest commands with AI?
Yes. Set an OpenAI-compatible endpoint (OpenAI, DeepSeek, or a local Ollama) in Settings → AI, then use the AI Command Assistant: describe your intent in plain language, review the proposed command, and run it on a selected connection. If a command fails, one click asks the AI to diagnose the cause and suggest a fix. Reasoning models (DeepSeek-R1, Qwen-QwQ, GLM-Z1 and the o-series) are supported too — you see live thinking progress instead of a frozen dialog, and every request has a total time budget. Nothing runs automatically — you always review first, and dangerous commands require confirmation.
Can I use SelfCmd with AI agents like Claude or Cursor?
Yes. SelfCmd includes a built-in MCP (Model Context Protocol) server, so any MCP client — Claude Desktop, Cursor, Kiro — can list and run your saved commands, tasks and workflows, and read metrics. It runs locally over stdio, reuses your saved connections, and stays fully offline. Read-only tools work out of the box; action tools are disabled by default and require an opt-in switch plus two-step human confirmation.
Does the app update itself?
Yes. SelfCmd checks for updates and can download and install the latest build from within the app — from Help → Check for updates, or straight from the tray icon’s right-click menu when the window is tucked away. You can also enable launch-on-startup in Settings.