xs
Three screens. One product story.

Remote access that survives real networks.

CommandPlane keeps install, fleet visibility, and connection policy in one place. The landing page now just shows those three surfaces directly.

devices

See the real fleet as soon as devices report in

Search by tag, compare versions, and spot online versus offline agents from one screen.

Search by tag, host, or version without bouncing between views.
See online and offline agents in one place as the fleet changes.
Use the exact product screen instead of a hand-built mock panel.
enrollment

Generate install links with the right defaults already baked in

Approval requirements, tags, diagnostics, and bootstrap scripts stay in one flow instead of scattered across docs.

Default tags and rollout settings stay attached to the install flow.
Approval requirements and diagnostics live next to the generated link.
Operators can issue a clean install command without maintaining docs by hand.
connection

Give security teams one hostname and a short allowlist

Custom domains and static egress live alongside DNS instructions so rollout friction stays low.

Give security teams one branded hostname instead of a moving target.
Keep DNS setup and the static egress allowlist in the same view.
Reduce rollout back-and-forth when networking needs predictable answers.
Start here

Put your own fleet in these screenshots.

Create an organization, enroll a device, and the same three surfaces above become the operator flow for your environment.

Create organization

Screenshot

© 2026 CommandPlane. All rights reserved.
Show env
[
  {"ASDF_DIR", "/opt/homebrew/opt/asdf/libexec"},
  {"ASDF_INSTALL_PATH", "/Users/erick/.asdf/installs/erlang/27.3.4"},
  {"ASDF_INSTALL_TYPE", "version"},
  {"ASDF_INSTALL_VERSION", "27.3.4"},
  {"BINDIR", "/Users/erick/.asdf/installs/erlang/27.3.4/erts-15.2.7/bin"},
  {"BROWSER", "open"},
  {"COLORTERM", "truecolor"},
  {"COMMAND_MODE", "unix2003"},
  {"EDITOR", "nvim"},
  {"EMU", "beam"},
  {"ERL_AFLAGS", "-kernel shell_history enabled"},
  {"GHOSTTY_BIN_DIR", "/Applications/Ghostty.app/Contents/MacOS"},
  {"GHOSTTY_RESOURCES_DIR",
   "/Applications/Ghostty.app/Contents/Resources/ghostty"},
  {"GHOSTTY_SHELL_FEATURES", "cursor,path,title"},
  {"GREP_COLOR", "37;45"},
  {"GREP_COLORS", "mt=37;45"},
  {"HOME", "/Users/erick"},
  {"KERL_CONFIGURE_OPTIONS", "--without-javac --without-wx"},
  {"LANG", "en_US.UTF-8"},
  {"LESS", "-g -i -M -R -S -w -X -z-4"},
  {"LESS_TERMCAP_mb", "\e[01;31m"},
  {"LESS_TERMCAP_md", "\e[01;31m"},
  {"LESS_TERMCAP_me", "\e[0m"},
  {"LESS_TERMCAP_se", "\e[0m"},
  {"LESS_TERMCAP_so", "\e[00;47;30m"},
  {"LESS_TERMCAP_ue", "\e[0m"},
  {"LESS_TERMCAP_us", "\e[01;32m"},
  {"LOGNAME", "erick"},
  {"LSCOLORS", "exfxcxdxbxGxDxabagacad"},
  {"LaunchInstanceID", "8BECDDBB-1718-4789-AD29-B55096ECDFCD"},
  {"MANPATH",
   "/usr/share/man:/usr/local/share/man:/Applications/Ghostty.app/Contents/Resources/ghostty/../man:"},
  {"MIX_ARCHIVES",
   "/Users/erick/.asdf/installs/elixir/1.18.4-otp-27/.mix/archives"},
  {"MIX_HOME", "/Users/erick/.asdf/installs/elixir/1.18.4-otp-27/.mix"},
  {"P9K_SSH", "0"},
  {"P9K_TTY", "old"},
  {"PAGER", "less"},
  {"PATH",
   "/Users/erick/.asdf/installs/erlang/27.3.4/erts-15.2.7/bin:/Users/erick/.asdf/installs/erlang/27.3.4/bin:/Users/erick/.asdf/plugins/elixir/shims:/Users/erick/.asdf/installs/elixir/1.18.4-otp-27/bin:/Users/erick/.asdf/installs/elixir/1.18.4-otp-27/.mix/escripts:/opt/homebrew/opt/postgresql@17/bin:/Users/erick/.local/bin:/Users/erick/.asdf/shims:/opt/homebrew/opt/asdf/libexec/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/opt/podman/bin:/opt/homebrew/opt/postgresql@17/bin:/Users/erick/.local/bin:/Applications/Ghostty.app/Contents/MacOS:/opt/homebrew/opt/fzf/bin"},
  {"PORT", "4000"},
  {"PROGNAME", "erl"},
  {"PWD", "/Users/erick/dev/commandplane/commandplane"},
  {"ROOTDIR", "/Users/erick/.asdf/installs/erlang/27.3.4"},
  {"SECURITYSESSIONID", "186b0"},
  {"SHELL", "/bin/zsh"},
  {"SHLVL", "4"},
  {"SOPS_AGE_KEY_FILE", "/Users/erick/.sops/key.txt"},
  {"SSH_AUTH_SOCK", "/private/tmp/com.apple.launchd.ceDv22TzI8/Listeners"},
  {"TERM", "screen-256color"},
  {"TERMINFO", "/Applications/Ghostty.app/Contents/Resources/terminfo"},
  {"TERM_PROGRAM", "tmux"},
  {"TERM_PROGRAM_VERSION", "3.5a"},
  {"TMPDIR", "/var/folders/gx/0sqm7g9d5dz4n4shns0s93f00000gn/T/"},
  {"TMUX",
   "/private/tmp/tmux-501/overmind-commandplane-1dRumWJZJRypjsMdggM4c,35921,0"},
  {"TMUX_CONF", "/Users/erick/.config/tmux/tmux.conf"},
  {"TMUX_CONF_LOCAL", "/Users/erick/.config/tmux/tmux.conf.local"},
  {"TMUX_PANE", "%0"},
  {"TMUX_PROGRAM", "/opt/homebrew/Cellar/tmux/3.5a/bin/tmux"},
  {"TMUX_SOCKET", "/private/tmp/tmux-501/default"},
  {"USER", "erick"},
  {"VISUAL", "nvim"},
  {"XDG_CONFIG_HOME", "/Users/erick/.config"},
  {"XDG_DATA_DIRS",
   "/usr/local/share:/usr/share:/Applications/Ghostty.app/Contents/Resources/ghostty/.."},
  {"XPC_FLAGS", "0x0"},
  {"XPC_SERVICE_NAME", "0"},
  {"_P9K_SSH_TTY", "/dev/ttys047"},
  {"_P9K_TTY", "/dev/ttys047"},
  {"__CFBundleIdentifier", "com.mitchellh.ghostty"},
  {"__CF_USER_TEXT_ENCODING", "0x1F5:0x0:0x0"},
  {"tmux_conf_24b_colour", "auto"},
  {"tmux_conf_battery_bar_length", "auto"},
  {"tmux_conf_battery_bar_palette", "gradient"},
  {"tmux_conf_battery_bar_symbol_empty", "◻"},
  {"tmux_conf_battery_bar_symbol_full", "◼"},
  {"tmux_conf_battery_hbar_palette", "gradient"},
  {"tmux_conf_battery_status_charging", "🔌"},
  {"tmux_conf_battery_status_discharging", "🔋"},
  {"tmux_conf_battery_vbar_palette", "gradient"},
  {"tmux_conf_copy_to_os_clipboard", "false"},
  {"tmux_conf_new_pane_reconnect_ssh", "false"},
  {"tmux_conf_new_pane_retain_current_path", "true"},
  {"tmux_conf_new_session_prompt", "false"},
  {"tmux_conf_new_window_reconnect_ssh", "false"},
  {"tmux_conf_new_window_retain_current_path", "false"},
  {"tmux_conf_theme", "disabled"},
  {"tmux_conf_theme_clock_colour", "#00afff"},
  {"tmux_conf_theme_clock_style", "24"},
  {"tmux_conf_theme_colour_1", "#080808"},
  {"tmux_conf_theme_colour_10", "#ff00af"},
  {"tmux_conf_theme_colour_11", "#5fff00"},
  {"tmux_conf_theme_colour_12", "#8a8a8a"},
  {"tmux_conf_theme_colour_13", "#e4e4e4"},
  {"tmux_conf_theme_colour_14", "#080808"},
  {"tmux_conf_theme_colour_15", "#080808"},
  {"tmux_conf_theme_colour_16", "#d70000"},
  {"tmux_conf_theme_colour_17", "#e4e4e4"},
  {"tmux_conf_theme_colour_2", "#303030"},
  {"tmux_conf_theme_colour_3", "#8a8a8a"},
  {"tmux_conf_theme_colour_4", "#00afff"},
  {"tmux_conf_theme_colour_5", "#ffff00"},
  {"tmux_conf_theme_colour_6", "#080808"},
  {"tmux_conf_theme_colour_7", "#e4e4e4"},
  {"tmux_conf_theme_colour_8", "#080808"},
  {"tmux_conf_theme_colour_9", "#ffff00"},
  {"tmux_conf_theme_focused_pane_bg", "#303030"},
  {"tmux_conf_theme_highlight_focused_pane", "true"},
  {"tmux_conf_theme_left_separator_main", ""},
  {"tmux_conf_theme_left_separator_sub", "|"},
  {"tmux_conf_theme_message_attr", "bold"},
  {"tmux_conf_theme_message_bg", "#ffff00"},
  {"tmux_conf_theme_message_command_attr", "bold"},
  {"tmux_conf_theme_message_command_bg", "#080808"},
  {"tmux_conf_theme_message_command_fg", "#ffff00"},
  {"tmux_conf_theme_message_fg", "#080808"},
  {"tmux_conf_theme_mode_attr", "bold"},
  {"tmux_conf_theme_mode_bg", "#ffff00"},
  {"tmux_conf_theme_mode_fg", "#080808"},
  {"tmux_conf_theme_mouse", "↗"},
  {"tmux_conf_theme_mouse_attr", "none"},
  {"tmux_conf_theme_mouse_bg", "none"},
  {"tmux_conf_theme_mouse_fg", "none"},
  {"tmux_conf_theme_pairing", "⚇"},
  {"tmux_conf_theme_pairing_attr", "none"},
  {"tmux_conf_theme_pairing_bg", "none"},
  {"tmux_conf_theme_pairing_fg", "none"},
  {"tmux_conf_theme_pane_active_border",
   "\#{?pane_in_mode,#ffff00,\#{?synchronize-panes,#d70000,#00afff}}"},
  {"tmux_conf_theme_pane_active_indicator", "#00afff"},
  {"tmux_conf_theme_pane_border", "#303030"},
  {"tmux_conf_theme_pane_border_style", "thin"},
  {"tmux_conf_theme_pane_indicator", "#00afff"},
  {"tmux_conf_theme_prefix", "⌨"},
  {"tmux_conf_theme_prefix_attr", "none"},
  {"tmux_conf_theme_prefix_bg", "none"},
  {"tmux_conf_theme_prefix_fg", "none"},
  {"tmux_conf_theme_right_separator_main", ""},
  {"tmux_conf_theme_right_separator_sub", "|"},
  {"tmux_conf_theme_root", "!"},
  {"tmux_conf_theme_root_attr", "bold,blink"},
  {"tmux_conf_theme_root_bg", "none"},
  {"tmux_conf_theme_root_fg", "none"},
  {"tmux_conf_theme_status_attr", "none"},
  {"tmux_conf_theme_status_bg", "#080808"},
  {"tmux_conf_theme_status_fg", "#8a8a8a"},
  {"tmux_conf_theme_status_left",
   " ❐ #S | ↑\#{?uptime_y, \#{uptime_y}y,}\#{?uptime_d, \#{uptime_d}d,}\#{?uptime_h, \#{uptime_h}h,}\#{?uptime_m, \#{uptime_m}m,} "},
  {"tmux_conf_theme_status_left_attr", "bold,none,none"},
  {"tmux_conf_theme_status_left_bg", "#ffff00,#ff00af,#5fff00"},
  {"tmux_conf_theme_status_left_fg", "#080808,#e4e4e4,#080808"},
  {"tmux_conf_theme_status_right",
   " \#{prefix}\#{mouse}\#{pairing}\#{synchronized}\#{?battery_status,\#{battery_status},}\#{?battery_bar, \#{battery_bar},}\#{?battery_percentage, \#{battery_percentage},} , %R , %d %b | \#{username}\#{root} | \#{hostname} "},
  {"tmux_conf_theme_status_right_attr", "none,none,bold"},
  {"tmux_conf_theme_status_right_bg", "#080808,#d70000,#e4e4e4"},
  {"tmux_conf_theme_status_right_fg", "#8a8a8a,#e4e4e4,#080808"},
  {"tmux_conf_theme_synchronized", "⚏"},
  {"tmux_conf_theme_synchronized_attr", "none"},
  {"tmux_conf_theme_synchronized_bg", "none"},
  {"tmux_conf_theme_synchronized_fg", "none"},
  {"tmux_conf_theme_terminal_title", "#h ❐ #S ● #I #W"},
  {"tmux_conf_theme_window_bg", "default"},
  {"tmux_conf_theme_window_fg", "default"},
  {"tmux_conf_theme_window_status_activity_attr", "underscore"},
  {"tmux_conf_theme_window_status_activity_bg", "default"},
  {"tmux_conf_theme_window_status_activity_fg", "default"},
  {"tmux_conf_theme_window_status_attr", "none"},
  {"tmux_conf_theme_window_status_bell_attr", "blink,bold"},
  {"tmux_conf_theme_window_status_bell_bg", "default"},
  {"tmux_conf_theme_window_status_bell_fg", "#ffff00"},
  {"tmux_conf_theme_window_status_bg", "#080808"},
  {"tmux_conf_theme_window_status_current_attr", "bold"},
  {"tmux_conf_theme_window_status_current_bg", "#00afff"},
  {"tmux_conf_theme_window_status_current_fg", "#080808"},
  {"tmux_conf_theme_window_status_current_format",
   "#I #W\#{?\#{||:\#{window_bell_flag},\#{window_zoomed_flag}}, ,}\#{?window_bell_flag,!,}\#{?window_zoomed_flag,Z,}"},
  {"tmux_conf_theme_window_status_fg", "#8a8a8a"},
  {"tmux_conf_theme_window_status_format",
   "#I #W\#{?\#{||:\#{window_bell_flag},\#{window_zoomed_flag}}, ,}\#{?window_bell_flag,!,}\#{?window_zoomed_flag,Z,}"},
  {"tmux_conf_theme_window_status_last_attr", "none"},
  {"tmux_conf_theme_window_status_last_bg", "#303030"},
  {"tmux_conf_theme_window_status_last_fg", "#00afff"},
  {"tmux_conf_uninstall_plugins_on_reload", "true"},
  {"tmux_conf_update_plugins_on_launch", "true"},
  {"tmux_conf_update_plugins_on_reload", "true"}
]