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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
Start free, scale when ready
No subscription. Pro is a one-time, offline license — your data never leaves your machine.
Starter
Every feature, with generous limits — great for individuals.
- ✓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
Pro
Launch price — first 100 buyers
A one-time, offline license that removes every limit. Free updates within v2.
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
Volume licensing for teams — 5 seats included, discounted extras.
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.
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.
Nightly Server Maintenance
Schedule disk cleanup, log rotation, and service restarts across many servers. SelfCmd runs them on your interval — no cron setup needed.
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.
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.
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.
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.
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.
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.
Up and running in 2 minutes
No Docker, no cloud account, no subscription required.
Changelog
- —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
- —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
- —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
- —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
- —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
- —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
- —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
- —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
- —Reliable in-app check-for-update feedback
- —Cloudflare R2 upload / checksum compatibility fixes for installers
- —Fixed a footer hydration warning on the website
- —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
- —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
- —CPU / Memory / Disk usage monitoring
- —Email alert via SMTP with throttle control
- —Per-item enable/disable toggle
- —Alert history and cooldown
- —Visual task-flow builder
- —Sequential and parallel execution modes
- —SFTP upload steps inside workflows
- —Export / import workflow JSON
- —Collapsible command groups
- —Tag-based filtering
- —Single-click fill + double-click execute
- —Batch execute dialog
- —Fernet AES password encryption at rest
- —Per-install keystore
- —Secure export / import of full config
Got questions?