| Crates.io | awsom |
| lib.rs | awsom |
| version | 0.16.1 |
| created_at | 2025-10-12 02:46:30.318244+00 |
| updated_at | 2025-12-03 02:22:41.838647+00 |
| description | k9s-like TUI for AWS SSO sessions |
| homepage | https://github.com/oleksiimorozenko/awsom |
| repository | https://github.com/oleksiimorozenko/awsom |
| max_upload_size | |
| id | 1878797 |
| size | 710,530 |
AWS Organization Manager - The awesome way to manage AWS SSO sessions.
A modern, k9s-inspired Terminal User Interface (TUI) for managing AWS SSO sessions written in Rust.
awsom is a standalone tool that does NOT require the AWS CLI to be installed. It uses the official AWS SDK for Rust to communicate directly with AWS services and manages your ~/.aws/config and ~/.aws/credentials files as plain text.
This means:
If you have existing AWS CLI configurations, awsom will read and respect them. If you don't, awsom will create everything you need from scratch.
Browse and connect to EC2 instances via AWS Systems Manager:
/ key, navigate with arrow keys while searchingTab or Enter to exit search mode, Esc to clear filterRequirements:
ssm:StartSession, ec2:DescribeInstancesInstallation of Session Manager Plugin:
brew install --cask session-manager-pluginInstall from crates.io:
cargo install awsom
Linux Prerequisites:
On Linux systems, you need to install build-essential before using Homebrew, even though awsom provides pre-built binaries. This is a Homebrew requirement because some of Homebrew's own dependencies may need to be compiled from source:
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y build-essential
# Then install awsom
brew install oleksiimorozenko/tap/awsom
macOS:
brew install oleksiimorozenko/tap/awsom
Why build-essential on Linux?
Homebrew on Linux requires compiler tools (gcc, make, etc.) to be available on the system. According to the Homebrew on Linux documentation, "Homebrew does not use any libraries provided by your host system, except glibc and gcc if they are new enough." While Homebrew provides pre-compiled binaries (bottles) for most packages, some dependencies will need to be built directly on your machine, which requires a working compiler environment.
The build-essential package provides all the necessary compilation tools including GCC, GNU Make, and other essential development utilities.
Download the latest release for your platform from the releases page:
awsom-linux-amd64.tar.gzawsom-linux-arm64.tar.gzawsom-macos-amd64.tar.gzawsom-macos-arm64.tar.gzawsom-windows-amd64.zipAfter downloading, extract and verify the checksum:
# Example for Linux x86_64
tar xzf awsom-linux-amd64.tar.gz
sha256sum -c awsom-linux-amd64.tar.gz.sha256
# Move to PATH
sudo mv awsom /usr/local/bin/
git clone https://github.com/oleksiimorozenko/awsom.git
cd awsom
cargo install --path .
awsom uses Unicode symbols (🟢, 🔴, ✓) by default for the best visual experience. These work perfectly in most modern terminals including:
If you see broken symbols or boxes (e.g., in cmd.exe, older terminals, or minimal environments), you can enable ASCII mode:
Unix/Linux/macOS:
AWSOM_ASCII_SYMBOLS=true awsom
PowerShell:
$env:AWSOM_ASCII_SYMBOLS="true"
awsom
Windows Command Prompt:
set AWSOM_ASCII_SYMBOLS=true
awsom
Make it permanent:
Unix shells (add to ~/.bashrc, ~/.zshrc, etc.):
export AWSOM_ASCII_SYMBOLS=true
PowerShell (add to profile):
[Environment]::SetEnvironmentVariable("AWSOM_ASCII_SYMBOLS", "true", "User")
With ASCII mode enabled, symbols are displayed as [+], [-], [x], [!] instead of Unicode emojis.
Enable tab completion for your shell to make the CLI much easier to use:
# Add to ~/.bashrc or ~/.bash_profile:
eval "$(awsom completions bash)"
# Or save to completion directory:
awsom completions bash | sudo tee /usr/local/etc/bash_completion.d/awsom
# Quick setup - add to ~/.zshrc:
eval "$(awsom completions zsh)"
# Or for better performance, save to completion directory:
mkdir -p ~/.zfunc
awsom completions zsh > ~/.zfunc/_awsom
# Then add to ~/.zshrc (if not already there):
fpath=(~/.zfunc $fpath)
autoload -Uz compinit && compinit
# Save to fish completion directory:
awsom completions fish > ~/.config/fish/completions/awsom.fish
# Add to your PowerShell profile:
awsom completions powershell | Out-String | Invoke-Expression
After setting up completions, you can use Tab to autocomplete commands, options, and values!
awsom session login \
--start-url https://your-org.awsapps.com/start \
--region us-east-1
Or set environment variables:
export AWS_SSO_START_URL=https://your-org.awsapps.com/start
export AWS_SSO_REGION=us-east-1
awsom session login
# Human-readable format
awsom profile list
# JSON format
awsom profile list --format json
awsom
The TUI provides a k9s-style interactive interface for managing AWS SSO sessions.
Keyboard Shortcuts:
q or Esc - Quit application? or F1 - Show help screenTab - Switch between Sessions and Profiles panesr - Refresh account/role list↑/k - Move selection up↓/j - Move selection downEnter - Start/stop session for selected role (activates or invalidates credentials)a - Add new SSO session (Sessions pane) / Add static credential (Profiles pane)e - Edit profile configurationv - View profile detailss - Open SSM Browser (EC2 instance manager)d - Set selected role's profile as defaultD - Delete selected profilec - Open AWS Console in browser for selected rolex - Copy credentials as export commands (Profiles pane only)f - Toggle session filter (Sessions pane only)In SSM Browser:
/ - Start search/filterUp/Down or j/k - Navigate instancesEnter - Connect to instance via SSMy - Copy SSM command to clipboards - Cycle sort order (unsorted → name → ID → state → IP)o - Toggle offline instances visibilityr - Refresh instance listv - View instance tagsEsc or q - Return to main screenFeatures:
Setup:
awsomEnter to loginPress s to open the SSM Browser and view your EC2 instances:
y for use in scriptsNote: Requires AWS Session Manager Plugin to be installed for connecting to instances.
📖 For complete command reference with session resolution logic and examples, see COMMANDS.md
All commands support these global flags:
-v, --verbose: Enable debug logging to see detailed operation information--start-url <URL>: SSO start URL (or set AWS_SSO_START_URL)--region <REGION>: AWS region for SSO (or set AWS_SSO_REGION)--headless: Force headless mode - shows URL in TUI instead of opening browser (auto-detected in SSH/Docker)profile - Manage profiles and credentialsProfile commands allow you to list accounts, refresh credentials, execute commands, export credentials, and open the AWS Console.
profile list - List accounts and rolesawsom profile list [--format text|json]
profile start - Refresh credentials for existing profileawsom profile start my-profile
Refreshes temporary credentials for an existing profile. Useful for keeping long-running sessions active.
profile exec - Execute command with credentialsawsom profile exec --role-name Developer --account-name Production -- aws s3 ls
Options:
--account-id <ID>: Account ID--account-name <NAME>: Account name (alternative to account-id)--role-name <ROLE>: Role name--profile export - Export credentials# Export as environment variables
awsom profile export --role-name Developer --account-name Production
eval $(awsom profile export --role-name Developer --account-name Production)
# Or write to AWS credentials file
awsom profile export --role-name Developer --account-name Production --profile my-profile
Options:
--account-id <ID>: Account ID--account-name <NAME>: Account name (alternative to account-id)--role-name <ROLE>: Role name--profile <NAME>: Write to ~/.aws/credentials as this profileprofile console - Open AWS Console in browser# Using an existing profile
awsom profile console --profile staging
# Or specify account/role directly
awsom profile console --role-name Developer --account-name Production
Opens the AWS Console in your default browser using federated sign-in with temporary credentials.
Options:
--profile <NAME>: Use an existing SSO profile (reads account/role from config)--account-id <ID>: Account ID--account-name <NAME>: Account name (alternative to account-id)--role-name <ROLE>: Role name (required unless --profile is used)--region <REGION>: AWS region to open console in (defaults to profile default or SSO region)session - Manage SSO sessionsPerfect for automation, CI/CD, and provisioning scripts!
The session subcommand provides complete CLI management of SSO sessions without requiring the TUI.
session add - Add a new SSO sessionawsom session add \
--name my-org-sso \
--start-url https://my-org.awsapps.com/start \
--region us-east-1
Creates a new SSO session configuration and saves it to ~/.aws/config. Great for:
session list - List all SSO sessions# Human-readable format
awsom session list
# JSON format for scripting
awsom session list --format json
Example output (text):
SSO Sessions (2):
production-sso
Start URL: https://prod.awsapps.com/start
Region: us-east-1
staging-sso
Start URL: https://stage.awsapps.com/start
Region: us-west-2
Example output (JSON):
[
{
"name": "production-sso",
"start_url": "https://prod.awsapps.com/start",
"region": "us-east-1",
"registration_scopes": "sso:account:access"
},
{
"name": "staging-sso",
"start_url": "https://stage.awsapps.com/start",
"region": "us-west-2",
"registration_scopes": "sso:account:access"
}
]
session delete - Delete an SSO session# Interactive confirmation
awsom session delete my-org-sso
# Force deletion without confirmation (for scripts)
awsom session delete my-org-sso --force
Removes the session from ~/.aws/config. Use --force in automation scripts to skip the confirmation prompt.
session edit - Edit an existing SSO session# Update start URL
awsom session edit my-org-sso \
--start-url https://new-url.awsapps.com/start
# Update region
awsom session edit my-org-sso \
--region us-west-2
# Update both
awsom session edit my-org-sso \
--start-url https://new-url.awsapps.com/start \
--region us-west-2
Updates an existing session configuration. You'll need to re-authenticate after changing the start URL.
session switch - Switch active sessionawsom session switch my-org-sso
Selects which SSO session to use (placeholder for future multi-session support). For now, use the TUI to switch between sessions interactively.
Automation Example:
#!/bin/bash
# setup-aws-sso.sh - Provision AWS SSO for new environment
# Add SSO sessions for different environments
awsom session add \
--name prod-sso \
--start-url https://prod.awsapps.com/start \
--region us-east-1
awsom session add \
--name stage-sso \
--start-url https://stage.awsapps.com/start \
--region us-west-2
# List configured sessions
awsom session list --format json | jq '.[] | .name'
# Authenticate with production
awsom session login --start-url https://prod.awsapps.com/start --region us-east-1
# Export common profiles
awsom profile export --account-name Production --role-name Developer --profile prod-dev
completions - Generate shell completionsawsom completions <SHELL>
Generate shell completion scripts for bash, zsh, fish, powershell, or elvish. See Shell Completion section for installation instructions.
awsom uses ~/.aws/config as the single source of truth for SSO configuration, following AWS CLI v2 conventions. No separate configuration file is needed!
When you first run awsom and select a session to login (press Enter), if no SSO configuration exists, you'll be guided through an interactive 3-step wizard that will:
https://your-org.awsapps.com/start)us-east-1)default-sso)The configuration will be automatically saved to ~/.aws/config as a [sso-session] section.
You can also manually edit ~/.aws/config to add or update SSO sessions:
[sso-session my-sso]
sso_start_url = https://your-org.awsapps.com/start
sso_region = us-east-1
sso_registration_scopes = sso:account:access
Or use the AWS CLI to configure SSO:
aws configure sso-session
You can override SSO configuration with environment variables:
AWS_SSO_START_URL: SSO start URLAWS_SSO_REGION: SSO regionAWSOM_DEFAULT_REGION: Pre-fills default region in profile creation wizard (e.g., us-east-1)AWSOM_DEFAULT_OUTPUT: Pre-fills default output format in profile creation wizard (e.g., json)Settings are loaded in this order (later sources override earlier ones):
~/.aws/config [sso-session] sectionsAWS_SSO_START_URL, AWS_SSO_REGION)--start-url, --region)Compatible with AWS CLI v2:
~/.aws/sso/cache/~/.aws/cli/cache/awsom/
├── src/
│ ├── auth/ # SSO OIDC authentication & token caching
│ ├── credentials/ # Credential fetching and caching
│ ├── aws_config.rs # AWS credentials file management
│ ├── console/ # AWS Console federated sign-in
│ ├── session/ # Session management
│ ├── ssm/ # EC2 instance browsing via AWS Systems Manager
│ │ ├── client.rs # SSM/EC2 SDK integration
│ │ └── mod.rs
│ ├── ui/ # TUI components (Ratatui)
│ │ ├── app.rs # Main TUI application
│ │ └── symbols.rs # Platform-agnostic symbol rendering
│ ├── cli/ # CLI commands
│ │ └── commands/ # Individual command implementations
│ ├── config/ # Configuration management
│ ├── expiry/ # Expiry tracking utilities
│ ├── cache.rs # Disk-based profile cache
│ ├── models.rs # Core data models
│ ├── error.rs # Error types
│ └── main.rs # Application entry point
├── Cargo.toml
├── CHANGELOG.md
└── README.md
profile command for managing profiles and credentials ✅ Working
profile list - List accounts and rolesprofile start - Refresh credentials for existing profileprofile exec - Execute commands with credentialsprofile export - Export credentialsprofile console - Open AWS Console in browsersession command for managing SSO sessions via CLI ✅ Working
session login for authenticationsession logout for ending sessionssession status for session checking and automationsession add for creating sessions programmaticallysession list with text/JSON outputsession delete with force flag for automationsession edit for updating session configurationsession switch for multi-session support (WIP)completions command for shell completion ✅ Working--verbose flag ✅ Working~/.aws/sso/cache/~/.aws/cli/cache/src/ui/symbols.rsAWSOM_ASCII_SYMBOLS environment variable# Check for errors
cargo check
# Build debug version
cargo build
# Build release version
cargo build --release
# Run
cargo run -- session login --start-url https://your-org.awsapps.com/start --region us-east-1
cargo test
Contributions are welcome! Please feel free to submit a Pull Request.
This project was inspired by the Python aws-sso-util by Ben Kehoe. We built awsom from scratch in Rust to provide a fast, modern TUI experience for AWS SSO management.
Apache-2.0
If you encounter any issues, run commands with the --verbose flag to see detailed debug information:
awsom --verbose session login
awsom -v profile list
This will show:
"No SSO session found"
awsom session login first to authenticate"Token expired"
awsom session login --force to re-authenticate"Service error"
--verbose to see the full error message--start-url and --region are correctCurrent Status: v0.15.0 - Symbol Compatibility & SSM Browser! 🎉
All core features are now implemented and working:
Implemented Features:
session, profile, completions)session status)Future Enhancements: