π a3s is a terminal-based user interface for AWS resources, inspired by k9s for Kubernetes. Navigate and manage AWS resources with speed and efficiency, all from your terminal.
What you'll see in this demo:
- π¨ Beautiful k9s-inspired interface with AWS identity display and ASCII art logo
- π Navigate through IAM roles using vim-like j/k keys
- π Real-time search filtering with
/command (searching for "lambda" and "service") - π Detailed role views with tabbed interface (Overview, Trust Policy, Policies, Tags)
- π Interactive policy document viewer with full JSON display
- β¨οΈ Seamless navigation: Tab between sections, Enter to view details, ESC to navigate back
- π Responsive async loading for all AWS API calls
- π List all IAM roles with sortable columns
- π Real-time search filtering with
/command - π Detailed role view with tabbed interface:
- Overview: Role metadata and last usage information
- Trust Policy: Trust relationships and assume role policies
- Policies: Attached managed and inline policies with interactive JSON viewer
- Tags: Role tags and metadata
- π Interactive policy document viewer - select any policy to view full JSON with navigation
- β¨οΈ Vim-like keyboard navigation (j/k, g/G, Tab, Enter, ESC)
- π AWS profile and region switching
- π¨ Beautiful k9s-inspired TUI with AWS identity display and consistent styling
- β‘ Async loading with loading indicators for responsive performance
# Clone the repository
git clone https://github.com/johnoct/a3s.git
cd a3s
# Build the application
go build -o a3s cmd/a3s/main.go
# Optionally, move to your PATH
sudo mv a3s /usr/local/bin/- Go 1.24 or higher
- AWS credentials configured (~/.aws/credentials)
- Terminal with 256 color support
# Use default AWS profile and region
a3s
# Use specific profile
a3s -profile production
# Use specific region
a3s -region us-west-2
# Combine profile and region
a3s -profile dev -region eu-west-1| Key | Action |
|---|---|
j/k or β/β |
Navigate up/down |
Enter |
View role details |
/ |
Search roles |
g/G |
Go to top/bottom |
r |
Refresh list |
q |
Quit application |
? |
Show help |
| Key | Action |
|---|---|
Tab/l |
Next tab |
Shift+Tab/h |
Previous tab |
j/k |
Scroll content or navigate policies |
g/G |
Go to top/bottom |
Enter |
View selected policy document (in Policies tab) |
Esc |
Back to list or previous view |
| Key | Action |
|---|---|
j/k |
Scroll up/down |
g/G |
Go to top/bottom of document |
Esc |
Back to policies tab |
a3s uses standard AWS credential resolution:
- Command line flags (
-profile,-region) - Environment variables:
AWS_PROFILEAWS_REGIONorAWS_DEFAULT_REGION
- Shared credentials file (
~/.aws/credentials) - IAM role (when running on EC2/ECS/Lambda)
For the MVP (IAM role viewer with interactive policy document viewing), you need:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListRoles",
"iam:GetRole",
"iam:ListRoleTags",
"iam:ListAttachedRolePolicies",
"iam:ListRolePolicies",
"iam:GetRolePolicy",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"sts:GetCallerIdentity"
],
"Resource": "*"
}
]
}a3s is built with:
- Bubble Tea - TUI framework using Model-View-Update pattern
- Lipgloss - Terminal styling
- AWS SDK for Go v2 - AWS API interactions
a3s/
βββ cmd/a3s/ # Application entry point
βββ internal/
β βββ aws/ # AWS service layers
β β βββ client/ # AWS client management
β β βββ iam/ # IAM service operations
β βββ ui/ # UI components
β β βββ components/# List and detail views
β β βββ styles/ # Lipgloss styling
β βββ model/ # Application state
βββ docs/ # Documentation
- IAM role listing and viewing
- Search and navigation
- Profile/region switching
- IAM users view
- IAM policies view
- Permission boundary analysis
- Cross-account role assumptions
- EC2 instances
- S3 buckets
- Lambda functions
- RDS databases
- CloudFormation stacks
- ECS/EKS resources
- CloudWatch logs integration
- Resource tagging operations
go test ./...go fmt ./...# Install golangci-lint if not already installed
brew install golangci-lint
# Run linter
golangci-lint runContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- π Report bugs via GitHub Issues
- π‘ Request features via GitHub Issues
- π§ Contact: [your-email@example.com]
Made with β€οΈ for the AWS community
