A workspace that respects your workflow.
Every feature is built around the same principle: your servers, your terminal, your rules.
Daily SSH
Everything you need to open, organize, and move between sessions.
SSH sessions
Password and private-key authentication in 1.1.0. Known-host fingerprints are checked on connect.
Learn moreTabs & splits
Multi-session workspace with layout restore. You start each connection, and passwords are not stored.
Learn moreLocal terminal
Shell on this machine alongside remote sessions.
Learn moreOrganization
Keep your fleet readable as it grows.
Host organization
Groups, tags, search, sort, and drag reorder for the hosts you keep locally.
Learn moreSnippets
Reusable commands with $1–$9 placeholders and a destructive-command preview.
Learn moreCommand palette
Ctrl/Cmd+K surfaces hosts, snippets, and actions instantly. No mouse, no menus.
Learn moreSecurity & polish
Local-first posture and the small things that make a tool feel right.
Local-first security
SQLite on your machine. Private keys in the OS keychain. Passwords never stored.
Learn moreUpdates
The 1.1.0 app checks latest.json on the public download host. Checksums are in SHA256SUMS.txt.
Learn moreThemes
System, light, dark, Solarized Dark, and One Dark. Per-session font, cursor, and scrollback.
Learn moreOne workspace. Many sessions.
SSH, local PTY, SFTP transfer, and port forwarding live in the same tab bar. Split any pane horizontally or vertically, and the layout restores on the next launch. There is no silent auto-connect. Every reconnect is a deliberate choice.
- Status-colored tabs for local, SSH, SFTP, and port-forward, each with a live status dot.
- Layout restore saves your last split layout in local SQLite and reopens it on relaunch.
- Confirm-before-disconnect on every manual close, even when there are running processes.
- ▸..-
- ▸routes/-
- ▸middleware/-
- ·.envexcluded124 B
- ·package.json1.2 KB
- ·index.js4.6 KB
- ·composer.json0.5 KB
- ▸vendor/-
Your shell. On this machine.
Run a local PTY alongside your remote sessions. Same split, same keybindings, same theme. No scrollback sync and no auth. It is a shell on the machine you are using.
- Per-session shellDefault to your
$SHELL, or pin Bash / Zsh / PowerShell per session. - Same theme quirksColor, font, cursor, and scrollback settings apply to local panes too.
- No secrets leaveLocal panes never see the AI redaction path or the Plan Card.
- Status bar tracks itEach pane shows its own session id and idle timer in the status bar.
Reusable commands with placeholders.
Save a command once, invoke it from the palette, and fill in the variables. Destructive snippets get a confirmation preview before they run. Pinned snippets always surface at the top.
-
$1–$9placeholders, filled in the Run dialog. - Tags + full-text search, with type-and-Enter to add.
- Destructive snippets show a preview before run; per-host override available.
- tail-nginxTail nginx access log for a host#logs#nginx$1
- restart-nginxdestructiveValidate config, restart, and health-check#ops#nginx
- disk-topTop 10 directories by size under a path#storage$1
- deploy-apiGit-aware deploy with Plan Card#deploy#git$1
- tail-fpmTail php-fpm journal#logs#php$1
sudo nginx -t sudo systemctl restart nginx curl -fsS http://localhost/healthz
sudo tail -n 200 -f /var/log/nginx/access.log \ | grep -E 'POST /api/v1/login'
Fill, preview, run.
Run from the palette or the manager. The dialog shows the body with placeholders, asks for the values, and previews the resolved command. Read-only snippets skip the Plan Card.
- Target host is the active session, with a manual override.
- ⏎ to run, Esc to cancel. Pinned snippets get a hot key.
One keystroke. Anywhere.
Ctrl/Cmd+K opens a fuzzy-search palette that
knows about your hosts, snippets, themes, and AI modes. No menus, no mouse. The same shortcut also
opens the symbol & file palette inside a session.
- Hosts, snippets, AI modes, theme switching, and layout actions, all in one place.
- Fuzzy score across name, command, tags, and group.
- AI modes are palette entries, the same as hosts and snippets.
Dark by default. Yours if you want it.
System, light, dark, Solarized Dark, and One Dark. Per-session font, cursor, and scrollback settings. The appearance toggle (Light / Dark / System) applies to the whole app surface.
- The theme picker is a real preview. Each tile renders the actual palette.
- Per-session font, size, cursor style, and scrollback cap.
- All settings live in
bastion.db.
One product. Five surfaces.
SSH sessions, host organization, snippets, the palette, and themes share the same local-first security model. Try it on your fleet and see the difference.