[{"content":"BMC can open the AWS console in a dedicated, isolated Chrome profile per AWS account. Each profile has its own cookies and session — no cross-account contamination.\nEnable #{ \u0026#34;console\u0026#34;: { \u0026#34;chrome_profiles\u0026#34;: true, \u0026#34;chrome_binary\u0026#34;: \u0026#34;google-chrome\u0026#34; } } For Brave or Chromium:\n{ \u0026#34;console\u0026#34;: { \u0026#34;chrome_profiles\u0026#34;: true, \u0026#34;chrome_binary\u0026#34;: \u0026#34;brave-browser\u0026#34; } } How it works #On first use for a profile, BMC:\nCreates a new Chrome profile directory at ~/.config/bmc/chrome/profiles/\u0026lt;profile-name\u0026gt;/ Copies extensions and preferences from your default Chrome profile (without cookies or login data) Opens Chrome with that profile pointing at the AWS console URL Subsequent opens reuse the same profile directory, so your session persists between uses.\nReset a profile #Delete the profile directory to reset it:\nrm -rf ~/.config/bmc/chrome/profiles/\u0026lt;profile-name\u0026gt;/ BMC will recreate it fresh on next use.\nNotes # Profile directories are not managed by BMC after creation — deleting them is safe This feature is marked Experimental in the configuration reference Firefox users: see Firefox Containers instead ","date":null,"permalink":"/advanced/chrome-profiles/","section":"Advanced","summary":"\u003cp\u003eBMC can open the AWS console in a dedicated, isolated Chrome profile per AWS account. Each profile has its own cookies and session — no cross-account contamination.\u003c/p\u003e\n\u003ch2 id=\"enable\" class=\"relative group\"\u003eEnable \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#enable\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-json\" data-lang=\"json\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003e\u0026#34;console\u0026#34;\u003c/span\u003e: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;chrome_profiles\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#66d9ef\"\u003etrue\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;chrome_binary\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;google-chrome\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eFor Brave or Chromium:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-json\" data-lang=\"json\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003e\u0026#34;console\u0026#34;\u003c/span\u003e: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;chrome_profiles\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#66d9ef\"\u003etrue\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;chrome_binary\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;brave-browser\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"how-it-works\" class=\"relative group\"\u003eHow it works \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#how-it-works\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003eOn first use for a profile, BMC:\u003c/p\u003e","title":"Chrome Profiles"},{"content":"BMC is available via Nix, as a .deb/.rpm package, via Homebrew, or as a plain binary.\nNix #nix profile (recommended) #nix profile add github:wearetechnative/bmc nix-env #nix-env -iA bmc -f https://github.com/wearetechnative/bmc/archive/main.tar.gz NixOS — configuration.nix #{ inputs.bmc.url = \u0026#34;github:wearetechnative/bmc\u0026#34;; # ... environment.systemPackages = [ inputs.bmc.packages.${system}.bmc ]; } Linux #Debian / Ubuntu (.deb) #Download the .deb for your architecture from GitHub Releases and install:\nsudo dpkg -i bmc_\u0026lt;version\u0026gt;_linux_amd64.deb Architecture File x86_64 bmc_\u0026lt;version\u0026gt;_linux_amd64.deb ARM64 bmc_\u0026lt;version\u0026gt;_linux_arm64.deb Red Hat / Fedora / SUSE (.rpm) #sudo rpm -i bmc_\u0026lt;version\u0026gt;_linux_amd64.rpm Architecture File x86_64 bmc_\u0026lt;version\u0026gt;_linux_amd64.rpm ARM64 bmc_\u0026lt;version\u0026gt;_linux_arm64.rpm One-liner (any distro) #curl -fsSL https://github.com/wearetechnative/bmc/releases/latest/download/bmc_$(curl -s https://api.github.com/repos/wearetechnative/bmc/releases/latest | grep tag_name | cut -d\u0026#39;\u0026#34;\u0026#39; -f4 | tr -d v)_linux_$(uname -m | sed \u0026#39;s/x86_64/amd64/;s/aarch64/arm64/\u0026#39;).tar.gz \\ | tar -xz bmc \u0026amp;\u0026amp; sudo mv bmc /usr/local/bin/ macOS / Homebrew #brew install wearetechnative/tap/bmc Or download the binary directly from GitHub Releases:\nArchitecture File Apple Silicon (M1/M2/M3) bmc_\u0026lt;version\u0026gt;_darwin_arm64.tar.gz Intel bmc_\u0026lt;version\u0026gt;_darwin_amd64.tar.gz Manual binary install #Download the archive for your platform from GitHub Releases, extract, and place bmc on your $PATH:\ntar -xzf bmc_*.tar.gz bmc sudo mv bmc /usr/local/bin/ Verify installation #bmc version bmc doctor bmc doctor checks all required and optional dependencies and prints install hints for anything missing.\nNext step #→ Setup — Shell integration\n","date":null,"permalink":"/installation/","section":"Installation","summary":"\u003cp\u003eBMC is available via Nix, as a \u003ccode\u003e.deb\u003c/code\u003e/\u003ccode\u003e.rpm\u003c/code\u003e package, via Homebrew, or as a plain binary.\u003c/p\u003e\n\u003ch2 id=\"nix\" class=\"relative group\"\u003eNix \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#nix\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ch3 id=\"nix-profile-recommended\" class=\"relative group\"\u003enix profile (recommended) \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#nix-profile-recommended\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003enix profile add github:wearetechnative/bmc\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"nix-env\" class=\"relative group\"\u003enix-env \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#nix-env\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003enix-env -iA bmc -f https://github.com/wearetechnative/bmc/archive/main.tar.gz\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"nixos--configurationnix\" class=\"relative group\"\u003eNixOS — configuration.nix \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#nixos--configurationnix\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-nix\" data-lang=\"nix\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  inputs\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003eurl \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;github:wearetechnative/bmc\u0026#34;\u003c/span\u003e;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#75715e\"\u003e# ...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  environment\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003esystemPackages \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e [ inputs\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003epackages\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e${\u003c/span\u003esystem\u003cspan style=\"color:#e6db74\"\u003e}\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc ];\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"linux\" class=\"relative group\"\u003eLinux \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#linux\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ch3 id=\"debian--ubuntu-deb\" class=\"relative group\"\u003eDebian / Ubuntu (.deb) \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#debian--ubuntu-deb\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cp\u003eDownload the \u003ccode\u003e.deb\u003c/code\u003e for your architecture from \u003ca href=\"https://github.com/wearetechnative/bmc/releases/latest\" target=\"_blank\" rel=\"noreferrer\"\u003eGitHub Releases\u003c/a\u003e and install:\u003c/p\u003e","title":"Installation"},{"content":"bmc profsel interactively selects an AWS profile and exports it as AWS_PROFILE in your current shell.\nUsage #bmc profsel # Interactive profile selection bmc profsel -p myprofile # Pre-select a profile by name bmc profsel -l # List all profiles in tabular format bmc profsel --json # Output selected profile as JSON Shell integration required #bmc profsel must be invoked through the shell wrapper for AWS_PROFILE to be set in your current shell. Install it once with:\nbmc install-shell-integration See Shell Integration for details.\nJSON output #--json outputs the selected profile as a JSON object:\n{ \u0026#34;source_profile\u0026#34;: \u0026#34;technative-long-term\u0026#34;, \u0026#34;profile_name\u0026#34;: \u0026#34;technative-prod\u0026#34;, \u0026#34;profile_arn\u0026#34;: \u0026#34;arn:aws:iam::123456789012:role/...\u0026#34; } Useful for scripting — pipe into jq or other tools.\nRecent profiles #The interactive picker shows recently used profiles at the top (last 10, labelled \u0026ldquo;recent\u0026rdquo;). History is stored in ~/.local/share/bmc/console-history.json.\n","date":null,"permalink":"/commands/profsel/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc profsel\u003c/code\u003e interactively selects an AWS profile and exports it as \u003ccode\u003eAWS_PROFILE\u003c/code\u003e in your current shell.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc profsel              \u003cspan style=\"color:#75715e\"\u003e# Interactive profile selection\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc profsel -p myprofile \u003cspan style=\"color:#75715e\"\u003e# Pre-select a profile by name\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc profsel -l           \u003cspan style=\"color:#75715e\"\u003e# List all profiles in tabular format\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc profsel --json       \u003cspan style=\"color:#75715e\"\u003e# Output selected profile as JSON\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"shell-integration-required\" class=\"relative group\"\u003eShell integration required \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#shell-integration-required\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003e\u003ccode\u003ebmc profsel\u003c/code\u003e must be invoked through the shell wrapper for \u003ccode\u003eAWS_PROFILE\u003c/code\u003e to be set in your current shell. Install it once with:\u003c/p\u003e","title":"profsel"},{"content":"Shell integration is required for bmc profsel to set AWS_PROFILE in your current shell session.\nInstall #bmc install-shell-integration This installs a shell wrapper function:\nzsh / bash: appends to ~/.zshrc or ~/.bashrc Fish: writes ~/.config/fish/functions/bmc.fish (auto-loaded, no restart needed) NixOS + Fish: prints a programs.fish.functions snippet instead of writing files After installation, restart your shell or source the config file.\nHow it works #The wrapper intercepts bmc profsel and evaluates the output so AWS_PROFILE is set in the parent shell:\nzsh / bash\nbmc() { if [[ \u0026#34;$1\u0026#34; == \u0026#34;profsel\u0026#34; ]]; then eval \u0026#34;$(command bmc profsel \u0026#34;$@\u0026#34;)\u0026#34; else command bmc \u0026#34;$@\u0026#34; fi } Fish\nfunction bmc if test \u0026#34;$argv[1]\u0026#34; = \u0026#34;profsel\u0026#34; eval (command bmc profsel $argv) else command bmc $argv end end NixOS / home-manager #If your shell config is managed by home-manager, bmc install-shell-integration prints manual snippets instead of writing files.\nhome-manager (home.nix)\nprograms.zsh.initContent = \u0026#39;\u0026#39; bmc() { if [[ \u0026#34;$1\u0026#34; == \u0026#34;profsel\u0026#34; ]]; then eval \u0026#34;$(command bmc profsel \u0026#34;$@\u0026#34;)\u0026#34; else command bmc \u0026#34;$@\u0026#34; fi } \u0026#39;\u0026#39;; Fish (home.nix)\nprograms.fish.functions.bmc = \u0026#39;\u0026#39; if test \u0026#34;$argv[1]\u0026#34; = \u0026#34;profsel\u0026#34; eval (command bmc profsel $argv) else command bmc $argv end \u0026#39;\u0026#39;; ","date":null,"permalink":"/setup/shell-integration/","section":"Setup","summary":"\u003cp\u003eShell integration is required for \u003ccode\u003ebmc profsel\u003c/code\u003e to set \u003ccode\u003eAWS_PROFILE\u003c/code\u003e in your current shell session.\u003c/p\u003e\n\u003ch2 id=\"install\" class=\"relative group\"\u003eInstall \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#install\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc install-shell-integration\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThis installs a shell wrapper function:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ezsh / bash\u003c/strong\u003e: appends to \u003ccode\u003e~/.zshrc\u003c/code\u003e or \u003ccode\u003e~/.bashrc\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFish\u003c/strong\u003e: writes \u003ccode\u003e~/.config/fish/functions/bmc.fish\u003c/code\u003e (auto-loaded, no restart needed)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNixOS + Fish\u003c/strong\u003e: prints a \u003ccode\u003eprograms.fish.functions\u003c/code\u003e snippet instead of writing files\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eAfter installation, restart your shell or source the config file.\u003c/p\u003e","title":"Shell Integration"},{"content":"BMC is configured via ~/.config/bmc/config.json.\nExample #{ \u0026#34;mfa\u0026#34;: { \u0026#34;enabled\u0026#34;: true, \u0026#34;totp_script\u0026#34;: \u0026#34;/usr/bin/rbw get my-aws-mfa-entry --field totp\u0026#34;, \u0026#34;copy_command\u0026#34;: \u0026#34;wl-copy\u0026#34;, \u0026#34;paste_command\u0026#34;: \u0026#34;wl-paste | wtype -\u0026#34; }, \u0026#34;ec2\u0026#34;: { \u0026#34;auto_start_stopped\u0026#34;: \u0026#34;prompt\u0026#34;, \u0026#34;columns\u0026#34;: [\u0026#34;InstanceId\u0026#34;, \u0026#34;Name\u0026#34;, \u0026#34;PrivateIP\u0026#34;, \u0026#34;PublicIP\u0026#34;, \u0026#34;State\u0026#34;, \u0026#34;Hibernate\u0026#34;, \u0026#34;Scheduler\u0026#34;] }, \u0026#34;console\u0026#34;: { \u0026#34;firefox_containers\u0026#34;: true } } Reference # Key Type Default Description mfa.enabled bool false Enable MFA session management mfa.totp_script string \u0026quot;\u0026quot; Shell command to generate a 6-digit TOTP code mfa.copy_command string \u0026quot;\u0026quot; Command to copy TOTP to clipboard (receives code via stdin) mfa.paste_command string \u0026quot;\u0026quot; Command to simulate paste keystroke 300ms after copy ec2.auto_start_stopped string \u0026quot;prompt\u0026quot; always / never / prompt — what to do when connecting to a stopped instance ec2.columns []string all columns Columns to show in EC2 tables, in order console.firefox_containers bool false Open AWS console in Firefox container tabs via the Granted extension console.chrome_profiles bool false Open AWS console in isolated Chrome profiles per AWS account console.chrome_binary string \u0026quot;google-chrome\u0026quot; Chrome binary to use (\u0026quot;chromium\u0026quot;, \u0026quot;brave-browser\u0026quot;, etc.) EC2 columns #The ec2.columns field controls which columns appear in EC2 instance tables and in what order. Available values:\nColumn Description InstanceId EC2 instance ID Name Value of the Name tag PrivateIP Private IPv4 address PublicIP Public IPv4 address State Instance state (running, stopped, etc.) Hibernate Whether hibernation is enabled (yes/no) Scheduler Whether the InstanceScheduler tag is set (yes/no) Profile AWS profile name (always shown in ec2find) Unknown column names render as n/a.\n","date":null,"permalink":"/setup/configuration/","section":"Setup","summary":"\u003cp\u003eBMC is configured via \u003ccode\u003e~/.config/bmc/config.json\u003c/code\u003e.\u003c/p\u003e\n\u003ch2 id=\"example\" class=\"relative group\"\u003eExample \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#example\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-json\" data-lang=\"json\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003e\u0026#34;mfa\u0026#34;\u003c/span\u003e: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;enabled\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#66d9ef\"\u003etrue\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;totp_script\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;/usr/bin/rbw get my-aws-mfa-entry --field totp\u0026#34;\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;copy_command\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;wl-copy\u0026#34;\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;paste_command\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;wl-paste | wtype -\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  },\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003e\u0026#34;ec2\u0026#34;\u003c/span\u003e: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;auto_start_stopped\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;prompt\u0026#34;\u003c/span\u003e,\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;columns\u0026#34;\u003c/span\u003e: [\u003cspan style=\"color:#e6db74\"\u003e\u0026#34;InstanceId\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;Name\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;PrivateIP\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;PublicIP\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;State\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;Hibernate\u0026#34;\u003c/span\u003e, \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;Scheduler\u0026#34;\u003c/span\u003e]\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  },\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  \u003cspan style=\"color:#f92672\"\u003e\u0026#34;console\u0026#34;\u003c/span\u003e: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    \u003cspan style=\"color:#f92672\"\u003e\u0026#34;firefox_containers\u0026#34;\u003c/span\u003e: \u003cspan style=\"color:#66d9ef\"\u003etrue\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"reference\" class=\"relative group\"\u003eReference \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#reference\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eKey\u003c/th\u003e\n          \u003cth\u003eType\u003c/th\u003e\n          \u003cth\u003eDefault\u003c/th\u003e\n          \u003cth\u003eDescription\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003emfa.enabled\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003ebool\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eEnable MFA session management\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003emfa.totp_script\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003estring\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eShell command to generate a 6-digit TOTP code\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003emfa.copy_command\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003estring\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eCommand to copy TOTP to clipboard (receives code via stdin)\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003emfa.paste_command\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003estring\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e\u0026quot;\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eCommand to simulate paste keystroke 300ms after copy\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003eec2.auto_start_stopped\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003estring\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e\u0026quot;prompt\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003ealways\u003c/code\u003e / \u003ccode\u003enever\u003c/code\u003e / \u003ccode\u003eprompt\u003c/code\u003e — what to do when connecting to a stopped instance\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003eec2.columns\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e[]string\u003c/td\u003e\n          \u003ctd\u003eall columns\u003c/td\u003e\n          \u003ctd\u003eColumns to show in EC2 tables, in order\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003econsole.firefox_containers\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003ebool\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eOpen AWS console in Firefox container tabs via the \u003ca href=\"https://addons.mozilla.org/en-US/firefox/addon/granted/\" target=\"_blank\" rel=\"noreferrer\"\u003eGranted\u003c/a\u003e extension\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003econsole.chrome_profiles\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003ebool\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003efalse\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eOpen AWS console in isolated Chrome profiles per AWS account\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003econsole.chrome_binary\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003estring\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e\u0026quot;google-chrome\u0026quot;\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003eChrome binary to use (\u003ccode\u003e\u0026quot;chromium\u0026quot;\u003c/code\u003e, \u003ccode\u003e\u0026quot;brave-browser\u0026quot;\u003c/code\u003e, etc.)\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"ec2-columns\" class=\"relative group\"\u003eEC2 columns \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#ec2-columns\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003eThe \u003ccode\u003eec2.columns\u003c/code\u003e field controls which columns appear in EC2 instance tables and in what order. Available values:\u003c/p\u003e","title":"Configuration"},{"content":"bmc console opens the AWS Management Console in your browser for the current or selected AWS profile.\nUsage #bmc console # Open console for current profile (AWS_PROFILE) bmc console -p myprofile # Open console for a specific profile bmc console -p # Force interactive profile selection bmc console -s ec2 # Open console at a specific service URL Browser options #Firefox containers with Granted (recommended) #The Granted Firefox extension enables container tabs — each AWS profile opens in its own isolated container with separate cookies and sessions.\nSetup:\nInstall Firefox Install the Granted extension from the Firefox Add-ons store Enable in ~/.config/bmc/config.json: { \u0026#34;console\u0026#34;: { \u0026#34;firefox_containers\u0026#34;: true } } How it works:\nWhen firefox_containers = true, BMC passes the AWS console URL to the Granted extension via a special URL scheme (granted-containers://). Granted opens it in a Firefox container tab named after the AWS profile. Each profile gets its own isolated session — you can be logged in to multiple AWS accounts simultaneously in separate tabs without any cross-contamination.\nIf Firefox is not your default browser, Granted still works as long as Firefox is installed.\nChrome profile isolation #Opens the console in a dedicated Chrome profile per AWS account. See Chrome Profiles for setup details.\n{ \u0026#34;console\u0026#34;: { \u0026#34;chrome_profiles\u0026#34;: true, \u0026#34;chrome_binary\u0026#34;: \u0026#34;google-chrome\u0026#34; } } Default browser #Without either option, BMC opens the AWS console URL in your system default browser.\nMFA #If MFA is enabled and the session has expired, bmc console automatically refreshes it before opening the browser. See MFA setup.\n","date":null,"permalink":"/commands/console/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc console\u003c/code\u003e opens the AWS Management Console in your browser for the current or selected AWS profile.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc console              \u003cspan style=\"color:#75715e\"\u003e# Open console for current profile (AWS_PROFILE)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc console -p myprofile \u003cspan style=\"color:#75715e\"\u003e# Open console for a specific profile\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc console -p           \u003cspan style=\"color:#75715e\"\u003e# Force interactive profile selection\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc console -s ec2       \u003cspan style=\"color:#75715e\"\u003e# Open console at a specific service URL\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"browser-options\" class=\"relative group\"\u003eBrowser options \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#browser-options\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ch3 id=\"firefox-containers-with-granted-recommended\" class=\"relative group\"\u003eFirefox containers with Granted (recommended) \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#firefox-containers-with-granted-recommended\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cp\u003eThe \u003ca href=\"https://addons.mozilla.org/en-US/firefox/addon/granted/\" target=\"_blank\" rel=\"noreferrer\"\u003eGranted\u003c/a\u003e Firefox extension enables container tabs — each AWS profile opens in its own isolated container with separate cookies and sessions.\u003c/p\u003e","title":"console"},{"content":"Installing BMC #NixOS (configuration.nix) #{ inputs.bmc.url = \u0026#34;github:wearetechnative/bmc\u0026#34;; outputs = { nixpkgs, bmc, ... }: { nixosConfigurations.myhost = nixpkgs.lib.nixosSystem { modules = [ { environment.systemPackages = [ bmc.packages.${system}.bmc ]; } ]; }; }; } home-manager #{ inputs.bmc.url = \u0026#34;github:wearetechnative/bmc\u0026#34;; home.packages = [ inputs.bmc.packages.${system}.bmc ]; } Shell integration with home-manager #bmc install-shell-integration prints snippets instead of writing files when it detects a managed shell config. Add them manually:\nzsh #programs.zsh.initContent = \u0026#39;\u0026#39; bmc() { if [[ \u0026#34;$1\u0026#34; == \u0026#34;profsel\u0026#34; ]]; then eval \u0026#34;$(command bmc profsel \u0026#34;$@\u0026#34;)\u0026#34; else command bmc \u0026#34;$@\u0026#34; fi } \u0026#39;\u0026#39;; bash #programs.bash.initExtra = \u0026#39;\u0026#39; bmc() { if [[ \u0026#34;$1\u0026#34; == \u0026#34;profsel\u0026#34; ]]; then eval \u0026#34;$(command bmc profsel \u0026#34;$@\u0026#34;)\u0026#34; else command bmc \u0026#34;$@\u0026#34; fi } \u0026#39;\u0026#39;; Fish #programs.fish.functions.bmc = \u0026#39;\u0026#39; if test \u0026#34;$argv[1]\u0026#34; = \u0026#34;profsel\u0026#34; eval (command bmc profsel $argv) else command bmc $argv end \u0026#39;\u0026#39;; Shell completions #programs.zsh.initContent = \u0026#39;\u0026#39; source \u0026lt;(bmc completion zsh) \u0026#39;\u0026#39;; # or for bash: programs.bash.initExtra = \u0026#39;\u0026#39; source \u0026lt;(bmc completion bash) \u0026#39;\u0026#39;; ","date":null,"permalink":"/advanced/nixos-home-manager/","section":"Advanced","summary":"\u003ch2 id=\"installing-bmc\" class=\"relative group\"\u003eInstalling BMC \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#installing-bmc\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ch3 id=\"nixos-configurationnix\" class=\"relative group\"\u003eNixOS (configuration.nix) \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#nixos-configurationnix\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-nix\" data-lang=\"nix\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  inputs\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003eurl \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;github:wearetechnative/bmc\u0026#34;\u003c/span\u003e;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  outputs \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e { nixpkgs\u003cspan style=\"color:#f92672\"\u003e,\u003c/span\u003e bmc\u003cspan style=\"color:#f92672\"\u003e,\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e...\u003c/span\u003e }: {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    nixosConfigurations\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003emyhost \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e nixpkgs\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003elib\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003enixosSystem {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e      modules \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e [\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e        {\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          environment\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003esystemPackages \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e [\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e            bmc\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003epackages\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e${\u003c/span\u003esystem\u003cspan style=\"color:#e6db74\"\u003e}\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e          ];\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e        }\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e      ];\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e    };\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  };\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"home-manager\" class=\"relative group\"\u003ehome-manager \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#home-manager\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-nix\" data-lang=\"nix\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e{\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  inputs\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003eurl \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e\u0026#34;github:wearetechnative/bmc\u0026#34;\u003c/span\u003e;\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e  home\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003epackages \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e [ inputs\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003epackages\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003e\u003cspan style=\"color:#e6db74\"\u003e${\u003c/span\u003esystem\u003cspan style=\"color:#e6db74\"\u003e}\u003c/span\u003e\u003cspan style=\"color:#f92672\"\u003e.\u003c/span\u003ebmc ];\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e}\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"shell-integration-with-home-manager\" class=\"relative group\"\u003eShell integration with home-manager \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#shell-integration-with-home-manager\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003e\u003ccode\u003ebmc install-shell-integration\u003c/code\u003e prints snippets instead of writing files when it detects a managed shell config. Add them manually:\u003c/p\u003e","title":"NixOS / home-manager"},{"content":"After installing BMC, complete these setup steps to get everything working.\nStep Description Shell integration Required for bmc profsel to export AWS_PROFILE Configuration ~/.config/bmc/config.json reference MFA Automatic MFA session refresh with TOTP Run bmc doctor at any time to check your setup.\n","date":null,"permalink":"/setup/","section":"Setup","summary":"\u003cp\u003eAfter installing BMC, complete these setup steps to get everything working.\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eStep\u003c/th\u003e\n          \u003cth\u003eDescription\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/setup/shell-integration/\"\u003eShell integration\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eRequired for \u003ccode\u003ebmc profsel\u003c/code\u003e to export \u003ccode\u003eAWS_PROFILE\u003c/code\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/setup/configuration/\"\u003eConfiguration\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e~/.config/bmc/config.json\u003c/code\u003e reference\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/setup/mfa/\"\u003eMFA\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eAutomatic MFA session refresh with TOTP\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eRun \u003ccode\u003ebmc doctor\u003c/code\u003e at any time to check your setup.\u003c/p\u003e","title":"Setup"},{"content":" Command Description profsel Select an AWS profile and export it to your shell console Open the AWS console for the current profile ec2 Unified EC2 command — pick instance, choose action ec2ls List EC2 instances as table or JSON ec2connect Connect via SSH or SSM Session Manager ec2find Find instances across all profiles in a group ec2stopstart Stop or start an instance ec2scheduler Toggle the InstanceScheduler tag ecsconnect Interactive shell into an ECS container Other commands #bmc version # Show version bmc doctor # Check dependencies and setup bmc install-shell-integration # Install profsel shell wrapper bmc completion bash|zsh|fish # Generate shell completions ","date":null,"permalink":"/commands/","section":"Commands","summary":"\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eCommand\u003c/th\u003e\n          \u003cth\u003eDescription\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/profsel/\"\u003eprofsel\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eSelect an AWS profile and export it to your shell\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/console/\"\u003econsole\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eOpen the AWS console for the current profile\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/ec2/\"\u003eec2\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eUnified EC2 command — pick instance, choose action\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/ec2ls/\"\u003eec2ls\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eList EC2 instances as table or JSON\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/ec2connect/\"\u003eec2connect\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eConnect via SSH or SSM Session Manager\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/ec2find/\"\u003eec2find\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eFind instances across all profiles in a group\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/ec2stopstart/\"\u003eec2stopstart\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eStop or start an instance\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/ec2scheduler/\"\u003eec2scheduler\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eToggle the InstanceScheduler tag\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/commands/ecsconnect/\"\u003eecsconnect\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eInteractive shell into an ECS container\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"other-commands\" class=\"relative group\"\u003eOther commands \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#other-commands\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc version                    \u003cspan style=\"color:#75715e\"\u003e# Show version\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc doctor                     \u003cspan style=\"color:#75715e\"\u003e# Check dependencies and setup\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc install-shell-integration  \u003cspan style=\"color:#75715e\"\u003e# Install profsel shell wrapper\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc completion bash|zsh|fish   \u003cspan style=\"color:#75715e\"\u003e# Generate shell completions\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Commands"},{"content":"bmc ec2 is the unified entry point for EC2 operations. Pick an instance once and choose an action from a menu — no need to repeat instance selection across separate commands.\nUsage #bmc ec2 # Interactive instance picker → action menu bmc ec2 nginx # Filter instances by name/ID/IP first bmc ec2 i-0abc123 # Single match skips the picker The optional search argument filters instances by a case-insensitive substring match on instance name, ID, private IP, or public IP.\nAction menu #After selecting an instance, a menu appears:\nAction Description Connect SSH SSH into the instance (same flow as ec2connect) Connect SSM SSM Session Manager shell (same flow as ec2connect) Start instance / Stop instance Label adapts to current state Toggle scheduler Enable/disable the InstanceScheduler tag Related commands # ec2ls — list instances as a table or JSON ec2connect — connect directly without the action menu ec2find — search across all profiles in a group ec2stopstart — stop or start without the full menu ec2scheduler — toggle the scheduler tag directly ","date":null,"permalink":"/commands/ec2/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc ec2\u003c/code\u003e is the unified entry point for EC2 operations. Pick an instance once and choose an action from a menu — no need to repeat instance selection across separate commands.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2              \u003cspan style=\"color:#75715e\"\u003e# Interactive instance picker → action menu\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2 nginx        \u003cspan style=\"color:#75715e\"\u003e# Filter instances by name/ID/IP first\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2 i-0abc123    \u003cspan style=\"color:#75715e\"\u003e# Single match skips the picker\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe optional search argument filters instances by a case-insensitive substring match on instance name, ID, private IP, or public IP.\u003c/p\u003e","title":"ec2"},{"content":"BMC handles MFA automatically. When you run bmc profsel or bmc console, BMC checks if your session credentials are still valid and refreshes them if needed — no separate command required.\nRequirements # Set mfa.enabled = true in ~/.config/bmc/config.json Add a [profile-long-term] section to ~/.aws/credentials: [technative-long-term] aws_access_key_id = AKIA... aws_secret_access_key = ... aws_mfa_device = arn:aws:iam::123456789012:mfa/your-username When the session expires, BMC prompts for a 6-digit TOTP code. If totp_script is configured, BMC runs it automatically to fetch the code.\nTOTP script #totp_script is executed via sh -c. It should print a 6-digit code to stdout.\nExample with rbw (Bitwarden CLI):\n{ \u0026#34;mfa\u0026#34;: { \u0026#34;totp_script\u0026#34;: \u0026#34;rbw get my-aws-mfa-entry --field totp\u0026#34; } } Interactive TUI tools (e.g. gum filter) work because the script runs with the terminal attached.\nClipboard integration #After fetching the TOTP code, BMC can copy it to the clipboard and simulate a paste keystroke.\ncopy_command receives the code via stdin. paste_command runs 300ms later and simulates a paste in the focused window.\nWayland (wl-clipboard) #{ \u0026#34;mfa\u0026#34;: { \u0026#34;copy_command\u0026#34;: \u0026#34;wl-copy\u0026#34;, \u0026#34;paste_command\u0026#34;: \u0026#34;wl-paste | wtype -\u0026#34; } } X11 (xclip) #{ \u0026#34;mfa\u0026#34;: { \u0026#34;copy_command\u0026#34;: \u0026#34;xclip -selection clipboard\u0026#34;, \u0026#34;paste_command\u0026#34;: \u0026#34;xdotool key ctrl+v\u0026#34; } } Both fields are optional. If only copy_command is set, the code is copied but not auto-pasted. If neither is set, no clipboard interaction occurs.\n","date":null,"permalink":"/setup/mfa/","section":"Setup","summary":"\u003cp\u003eBMC handles MFA automatically. When you run \u003ccode\u003ebmc profsel\u003c/code\u003e or \u003ccode\u003ebmc console\u003c/code\u003e, BMC checks if your session credentials are still valid and refreshes them if needed — no separate command required.\u003c/p\u003e\n\u003ch2 id=\"requirements\" class=\"relative group\"\u003eRequirements \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#requirements\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003col\u003e\n\u003cli\u003eSet \u003ccode\u003emfa.enabled = true\u003c/code\u003e in \u003ccode\u003e~/.config/bmc/config.json\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003e[profile-long-term]\u003c/code\u003e section to \u003ccode\u003e~/.aws/credentials\u003c/code\u003e:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-ini\" data-lang=\"ini\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#66d9ef\"\u003e[technative-long-term]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#a6e22e\"\u003eaws_access_key_id\u003c/span\u003e     \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003eAKIA...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#a6e22e\"\u003eaws_secret_access_key\u003c/span\u003e \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003e...\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#a6e22e\"\u003eaws_mfa_device\u003c/span\u003e        \u003cspan style=\"color:#f92672\"\u003e=\u003c/span\u003e \u003cspan style=\"color:#e6db74\"\u003earn:aws:iam::123456789012:mfa/your-username\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eWhen the session expires, BMC prompts for a 6-digit TOTP code. If \u003ccode\u003etotp_script\u003c/code\u003e is configured, BMC runs it automatically to fetch the code.\u003c/p\u003e","title":"MFA"},{"content":"If you were using the previous bash-based version of BMC, here is what changed and how to migrate.\nSteps # Install the new binary (same name: bmc) Run bmc install-shell-integration — replaces the source bmc profsel pattern Create ~/.config/bmc/config.json — replaces ~/.config/bmc/config.env Run bmc doctor to verify setup Breaking changes # Old New source bmc profsel eval \u0026quot;$(bmc profsel)\u0026quot; — handled automatically by the shell wrapper ~/.config/bmc/config.env ~/.config/bmc/config.json bmc gencompletions bmc completion bash|zsh (Cobra built-in) Config migration #Old config.env:\nBMC_MFA_ENABLED=true BMC_MFA_TOTP_SCRIPT=\u0026#34;rbw get my-mfa --field totp\u0026#34; New config.json:\n{ \u0026#34;mfa\u0026#34;: { \u0026#34;enabled\u0026#34;: true, \u0026#34;totp_script\u0026#34;: \u0026#34;rbw get my-mfa --field totp\u0026#34; } } See the full configuration reference for all available fields.\n","date":null,"permalink":"/advanced/migration/","section":"Advanced","summary":"\u003cp\u003eIf you were using the previous bash-based version of BMC, here is what changed and how to migrate.\u003c/p\u003e\n\u003ch2 id=\"steps\" class=\"relative group\"\u003eSteps \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#steps\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003col\u003e\n\u003cli\u003eInstall the new binary (same name: \u003ccode\u003ebmc\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eRun \u003ccode\u003ebmc install-shell-integration\u003c/code\u003e — replaces the \u003ccode\u003esource bmc profsel\u003c/code\u003e pattern\u003c/li\u003e\n\u003cli\u003eCreate \u003ccode\u003e~/.config/bmc/config.json\u003c/code\u003e — replaces \u003ccode\u003e~/.config/bmc/config.env\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRun \u003ccode\u003ebmc doctor\u003c/code\u003e to verify setup\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"breaking-changes\" class=\"relative group\"\u003eBreaking changes \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#breaking-changes\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eOld\u003c/th\u003e\n          \u003cth\u003eNew\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003esource bmc profsel\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003eeval \u0026quot;$(bmc profsel)\u0026quot;\u003c/code\u003e — handled automatically by the shell wrapper\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003e~/.config/bmc/config.env\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003e~/.config/bmc/config.json\u003c/code\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003ccode\u003ebmc gencompletions\u003c/code\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003ccode\u003ebmc completion bash|zsh\u003c/code\u003e (Cobra built-in)\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"config-migration\" class=\"relative group\"\u003eConfig migration \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#config-migration\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003eOld \u003ccode\u003econfig.env\u003c/code\u003e:\u003c/p\u003e","title":"Migration from bash version"},{"content":"bmc ec2ls lists all EC2 instances in the current AWS profile.\nUsage #bmc ec2ls # Display as interactive table bmc ec2ls --json # Output as JSON array Table output #The table columns are configurable via ec2.columns in ~/.config/bmc/config.json. See Configuration.\nJSON output #--json outputs all instances as a JSON array with AWS PascalCase keys, ignoring the columns config:\n[ { \u0026#34;InstanceId\u0026#34;: \u0026#34;i-0abc123\u0026#34;, \u0026#34;Name\u0026#34;: \u0026#34;prod-web-01\u0026#34;, \u0026#34;PrivateIpAddress\u0026#34;: \u0026#34;10.0.1.5\u0026#34;, \u0026#34;PublicIpAddress\u0026#34;: \u0026#34;\u0026#34;, \u0026#34;State\u0026#34;: \u0026#34;running\u0026#34;, \u0026#34;Hibernate\u0026#34;: \u0026#34;no\u0026#34;, \u0026#34;Scheduler\u0026#34;: \u0026#34;yes\u0026#34;, \u0026#34;Profile\u0026#34;: \u0026#34;\u0026#34; } ] All fields are always present. Pipe into jq for filtering:\nbmc ec2ls --json | jq \u0026#39;.[] | select(.State == \u0026#34;running\u0026#34;) | .Name\u0026#39; ","date":null,"permalink":"/commands/ec2ls/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc ec2ls\u003c/code\u003e lists all EC2 instances in the current AWS profile.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2ls            \u003cspan style=\"color:#75715e\"\u003e# Display as interactive table\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2ls --json     \u003cspan style=\"color:#75715e\"\u003e# Output as JSON array\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"table-output\" class=\"relative group\"\u003eTable output \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#table-output\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003eThe table columns are configurable via \u003ccode\u003eec2.columns\u003c/code\u003e in \u003ccode\u003e~/.config/bmc/config.json\u003c/code\u003e. See \n      \n    \u003ca href=\"/setup/configuration/#ec2-columns\"\u003eConfiguration\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"json-output\" class=\"relative group\"\u003eJSON output \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#json-output\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003e\u003ccode\u003e--json\u003c/code\u003e outputs all instances as a JSON array with AWS PascalCase keys, ignoring the \u003ccode\u003ecolumns\u003c/code\u003e config:\u003c/p\u003e","title":"ec2ls"},{"content":"bmc ec2connect connects to a running EC2 instance via SSH or AWS SSM Session Manager.\nUsage #bmc ec2connect # Interactive instance picker bmc ec2connect nginx # Filter instances by name/ID/IP first bmc ec2connect -i i-0abc123 # Connect to a specific instance ID bmc ec2connect -u ubuntu # SSH as a specific user (skips method picker) Connection methods #SSH #Requires ssh on your PATH. BMC prompts for the SSH user (root, ubuntu, ec2-user, or custom) unless -u is specified.\nSSM Session Manager #Requires:\naws CLI v2 session-manager-plugin Check with bmc doctor. No SSH keys or open ports needed.\nStopped instances #If the selected instance is stopped, BMC behaviour depends on ec2.auto_start_stopped in config:\nValue Behaviour prompt (default) Ask whether to start the instance always Start automatically without prompting never Exit with an error Prerequisites #bmc doctor # Check ssh, aws CLI, and session-manager-plugin ","date":null,"permalink":"/commands/ec2connect/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc ec2connect\u003c/code\u003e connects to a running EC2 instance via SSH or AWS SSM Session Manager.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2connect               \u003cspan style=\"color:#75715e\"\u003e# Interactive instance picker\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2connect nginx         \u003cspan style=\"color:#75715e\"\u003e# Filter instances by name/ID/IP first\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2connect -i i-0abc123  \u003cspan style=\"color:#75715e\"\u003e# Connect to a specific instance ID\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2connect -u ubuntu     \u003cspan style=\"color:#75715e\"\u003e# SSH as a specific user (skips method picker)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"connection-methods\" class=\"relative group\"\u003eConnection methods \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#connection-methods\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ch3 id=\"ssh\" class=\"relative group\"\u003eSSH \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#ssh\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h3\u003e\u003cp\u003eRequires \u003ccode\u003essh\u003c/code\u003e on your PATH. BMC prompts for the SSH user (root, ubuntu, ec2-user, or custom) unless \u003ccode\u003e-u\u003c/code\u003e is specified.\u003c/p\u003e","title":"ec2connect"},{"content":"bmc ec2find searches for EC2 instances across all AWS profiles in an account group simultaneously.\nUsage #bmc ec2find nginx # Search across profiles (select group interactively) bmc ec2find nginx --json # Same search, output as JSON array How it works # You select an AWS account group from an interactive picker BMC queries all profiles in that group in parallel Results matching your search string are shown The search is a case-insensitive substring match on: instance ID, name, private IP, public IP, and profile name.\nJSON output #--json outputs matching instances as a JSON array. Group selection remains interactive via the terminal, so piping still works:\nbmc ec2find nginx --json | jq \u0026#39;.[].InstanceId\u0026#39; The JSON always includes the Profile field identifying which AWS profile each instance belongs to:\n[ { \u0026#34;InstanceId\u0026#34;: \u0026#34;i-0abc123\u0026#34;, \u0026#34;Name\u0026#34;: \u0026#34;nginx-prod-01\u0026#34;, \u0026#34;PrivateIpAddress\u0026#34;: \u0026#34;10.0.1.5\u0026#34;, \u0026#34;PublicIpAddress\u0026#34;: \u0026#34;3.75.10.20\u0026#34;, \u0026#34;State\u0026#34;: \u0026#34;running\u0026#34;, \u0026#34;Hibernate\u0026#34;: \u0026#34;no\u0026#34;, \u0026#34;Scheduler\u0026#34;: \u0026#34;yes\u0026#34;, \u0026#34;Profile\u0026#34;: \u0026#34;technative-prod\u0026#34; } ] ","date":null,"permalink":"/commands/ec2find/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc ec2find\u003c/code\u003e searches for EC2 instances across all AWS profiles in an account group simultaneously.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2find nginx            \u003cspan style=\"color:#75715e\"\u003e# Search across profiles (select group interactively)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2find nginx --json     \u003cspan style=\"color:#75715e\"\u003e# Same search, output as JSON array\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"how-it-works\" class=\"relative group\"\u003eHow it works \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#how-it-works\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003col\u003e\n\u003cli\u003eYou select an AWS account group from an interactive picker\u003c/li\u003e\n\u003cli\u003eBMC queries all profiles in that group in parallel\u003c/li\u003e\n\u003cli\u003eResults matching your search string are shown\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThe search is a case-insensitive substring match on: instance ID, name, private IP, public IP, and profile name.\u003c/p\u003e","title":"ec2find"},{"content":"bmc ec2stopstart stops or starts an EC2 instance interactively.\nUsage #bmc ec2stopstart # Pick instance → stop or start BMC shows the current state of the selected instance and offers the appropriate action (Stop or Start). For hibernate-enabled instances, Stop also offers a hibernate option.\nStopping with hibernate #If an instance has hibernation configured (Hibernate: yes in ec2ls), BMC will ask whether to hibernate instead of a cold stop. Hibernation saves RAM to disk and resumes faster.\nSee also #The ec2 unified command includes stop/start in its action menu.\n","date":null,"permalink":"/commands/ec2stopstart/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc ec2stopstart\u003c/code\u003e stops or starts an EC2 instance interactively.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2stopstart     \u003cspan style=\"color:#75715e\"\u003e# Pick instance → stop or start\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eBMC shows the current state of the selected instance and offers the appropriate action (Stop or Start). For hibernate-enabled instances, Stop also offers a hibernate option.\u003c/p\u003e\n\u003ch2 id=\"stopping-with-hibernate\" class=\"relative group\"\u003eStopping with hibernate \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#stopping-with-hibernate\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003eIf an instance has hibernation configured (\u003ccode\u003eHibernate: yes\u003c/code\u003e in \u003ccode\u003eec2ls\u003c/code\u003e), BMC will ask whether to hibernate instead of a cold stop. Hibernation saves RAM to disk and resumes faster.\u003c/p\u003e","title":"ec2stopstart"},{"content":"bmc ec2scheduler enables or disables the AWS Instance Scheduler tag on an EC2 instance.\nUsage #bmc ec2scheduler # Pick instance → enable or disable scheduler What it does #The command adds or removes the InstanceScheduler tag on the selected instance. AWS Instance Scheduler uses this tag to automatically start and stop instances on a configured schedule — useful for saving costs on non-production environments.\nScheduler column Tag present yes InstanceScheduler tag is set no Tag is absent See also #The ec2 unified command includes scheduler toggling in its action menu.\n","date":null,"permalink":"/commands/ec2scheduler/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc ec2scheduler\u003c/code\u003e enables or disables the AWS Instance Scheduler tag on an EC2 instance.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ec2scheduler     \u003cspan style=\"color:#75715e\"\u003e# Pick instance → enable or disable scheduler\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"what-it-does\" class=\"relative group\"\u003eWhat it does \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#what-it-does\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cp\u003eThe command adds or removes the \u003ccode\u003eInstanceScheduler\u003c/code\u003e tag on the selected instance. AWS Instance Scheduler uses this tag to automatically start and stop instances on a configured schedule — useful for saving costs on non-production environments.\u003c/p\u003e","title":"ec2scheduler"},{"content":" Topic Description Chrome Profiles Isolated Chrome profile per AWS account NixOS / home-manager Managing BMC with NixOS and home-manager Migration Migrating from the bash version of BMC ","date":null,"permalink":"/advanced/","section":"Advanced","summary":"\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eTopic\u003c/th\u003e\n          \u003cth\u003eDescription\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/advanced/chrome-profiles/\"\u003eChrome Profiles\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eIsolated Chrome profile per AWS account\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/advanced/nixos-home-manager/\"\u003eNixOS / home-manager\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eManaging BMC with NixOS and home-manager\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\n      \n    \u003ca href=\"/advanced/migration/\"\u003eMigration\u003c/a\u003e\u003c/td\u003e\n          \u003ctd\u003eMigrating from the bash version of BMC\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e","title":"Advanced"},{"content":"bmc ecsconnect opens an interactive shell into a running ECS container.\nUsage #bmc ecsconnect # Interactive: pick cluster → service → task → container The command walks you through selecting:\nECS cluster Service Task Container Then launches an interactive shell via AWS SSM.\nPrerequisites # aws CLI v2 session-manager-plugin Check with:\nbmc doctor Install prerequisites #aws CLI v2\n# Homebrew brew install awscli # Nix nix profile add nixpkgs#awscli2 session-manager-plugin\n# Homebrew brew install --cask session-manager-plugin # Manual # https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html ","date":null,"permalink":"/commands/ecsconnect/","section":"Commands","summary":"\u003cp\u003e\u003ccode\u003ebmc ecsconnect\u003c/code\u003e opens an interactive shell into a running ECS container.\u003c/p\u003e\n\u003ch2 id=\"usage\" class=\"relative group\"\u003eUsage \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#usage\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebmc ecsconnect     \u003cspan style=\"color:#75715e\"\u003e# Interactive: pick cluster → service → task → container\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eThe command walks you through selecting:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eECS cluster\u003c/li\u003e\n\u003cli\u003eService\u003c/li\u003e\n\u003cli\u003eTask\u003c/li\u003e\n\u003cli\u003eContainer\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThen launches an interactive shell via AWS SSM.\u003c/p\u003e\n\u003ch2 id=\"prerequisites\" class=\"relative group\"\u003ePrerequisites \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#prerequisites\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eaws\u003c/code\u003e CLI v2\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003esession-manager-plugin\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCheck with:\u003c/p\u003e","title":"ecsconnect"},{"content":"BMC (Bill McCloud) is a single Go binary by TechNative that simplifies everyday AWS operations — profile selection, EC2/ECS access, MFA, and console access — all from the terminal.\nGet Started → GitHub\nInstall in seconds ## Homebrew brew install wearetechnative/tap/bmc # Nix nix profile add github:wearetechnative/bmc What BMC does # Profile selection Interactively switch AWS profiles and set AWS_PROFILE in your shell EC2 access List, connect (SSH/SSM), start/stop, find instances across profiles AWS Console Open the AWS console for any profile in Firefox or Chrome MFA Automatic session refresh with TOTP support ECS Interactive shell into ECS containers Explore the docs # Installation — Homebrew, Nix, binary download Setup — Shell integration, configuration, MFA Commands — All bmc commands with examples Advanced — Chrome profiles, NixOS, migration ","date":null,"permalink":"/","section":"BMC","summary":"\u003cp\u003e\u003cstrong\u003eBMC (Bill McCloud)\u003c/strong\u003e is a single Go binary by TechNative that simplifies everyday AWS operations — profile selection, EC2/ECS access, MFA, and console access — all from the terminal.\u003c/p\u003e\n\u003cp\u003e\n      \n    \u003ca href=\"/installation/\"\u003e\u003cstrong\u003eGet Started →\u003c/strong\u003e\u003c/a\u003e    \u003ca href=\"https://github.com/wearetechnative/bmc\" target=\"_blank\" rel=\"noreferrer\"\u003eGitHub\u003c/a\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"install-in-seconds\" class=\"relative group\"\u003eInstall in seconds \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#install-in-seconds\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# Homebrew\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003ebrew install wearetechnative/tap/bmc\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# Nix\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003enix profile add github:wearetechnative/bmc\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003chr\u003e\n\u003ch2 id=\"what-bmc-does\" class=\"relative group\"\u003eWhat BMC does \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#what-bmc-does\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003c/th\u003e\n          \u003cth\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eProfile selection\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eInteractively switch AWS profiles and set \u003ccode\u003eAWS_PROFILE\u003c/code\u003e in your shell\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eEC2 access\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eList, connect (SSH/SSM), start/stop, find instances across profiles\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eAWS Console\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eOpen the AWS console for any profile in Firefox or Chrome\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eMFA\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eAutomatic session refresh with TOTP support\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e\u003cstrong\u003eECS\u003c/strong\u003e\u003c/td\u003e\n          \u003ctd\u003eInteractive shell into ECS containers\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch2 id=\"explore-the-docs\" class=\"relative group\"\u003eExplore the docs \u003cspan class=\"absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100\"\u003e\u003ca class=\"group-hover:text-primary-300 dark:group-hover:text-neutral-700\" style=\"text-decoration-line: none !important;\" href=\"#explore-the-docs\" aria-label=\"Anchor\"\u003e#\u003c/a\u003e\u003c/span\u003e\u003c/h2\u003e\u003cul\u003e\n\u003cli\u003e\n      \n    \u003ca href=\"/installation/\"\u003eInstallation\u003c/a\u003e — Homebrew, Nix, binary download\u003c/li\u003e\n\u003cli\u003e\n      \n    \u003ca href=\"/setup/\"\u003eSetup\u003c/a\u003e — Shell integration, configuration, MFA\u003c/li\u003e\n\u003cli\u003e\n      \n    \u003ca href=\"/commands/\"\u003eCommands\u003c/a\u003e — All bmc commands with examples\u003c/li\u003e\n\u003cli\u003e\n      \n    \u003ca href=\"/advanced/\"\u003eAdvanced\u003c/a\u003e — Chrome profiles, NixOS, migration\u003c/li\u003e\n\u003c/ul\u003e","title":"BMC"},{"content":"","date":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags"}]