taws: TerminalâUI for AWS Resource Management
taws delivers a keyboardâdriven, Vimâstyle terminal interface for navigating, observing, and managing AWS resources in real time. Supporting multiâprofile, multiâregion access and 94+ resource types, it offers instant actions such as starting or terminating EC2 instances and viewing detailed JSON/YAML descriptors. The tool is openâsource, Rustâbased, and installs easily via Homebrew, preâbuilt binaries, or Cargo.
taws is an openâsource, terminalâbased user interface that lets engineers explore and interact with AWS infrastructure from the command line.
---
### Why taws?
AWS environments can grow complex, with dozens of services spread across multiple accounts and regions. Traditional toolsâCLI, SDKs, or console dashboardsâoften require numerous keystrokes or a browser session to accomplish a single task. taws solves this by providing a realâtime, keyboardâcentric view of resources, inspired by Kubernetes TUI tools such as k9s but tailored to the breadth of AWS.
---
### Core Features
- **MultiâProfile & MultiâRegion** â switch between AWS named profiles and regions with single keystrokes.
- **Broad Service Coverage** â 94+ resource types spanning 60+ services, including EC2, Lambda, S3, RDS, IAM, CloudFormation, and more.
- **Live Refresh** â hit `r` to refresh the current view; mudanças to the AWS environment are shown as they happen.
- **VimâLike Navigation** â `j/k` to move, `Ctrlâu/d` for page scrolling, `g/G` to jump to the top or bottom of a list.
- **Direct Actions** â start/stop/terminate EC2 instances, delete S3 buckets, and execute other standard AWS actions without leaving the shell.
- **JSON/YAML Views** â inspect the raw descriptor of any resource.
- **Autocomplete & Filtering** â easy resource type picker (`:`) and name/attribute filter (`/`).
- **KeyboardâDriven** â every operation is reachable via a key binding, making interaction fast and discoverable.
---
### Installation
#### Homebrew (macOS/Linux)
```
brew install huseyinbabal/tap/taws
```
#### Preâbuilt Binaries
Download the latest release archive for your platform from the [GitHub Releases page](https://github.com/huseyinbabal/taws/releases) and place the binary in a directory on your `PATH`.
#### Quick Install (macOS/Linux)
```sh
# macOS Apple Silicon
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-aarch64-apple-darwin.tar.gz | tar xz
echo "Moving taws to /usr/local/bin"
sudo mv taws /usr/local/bin/
# macOS Intel
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-x86_64-apple-darwin.tar.gz | tar xz
sudo mv taws /usr/local/bin/
# Linux x86_64
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv taws /usr/local/bin/
# Linux ARM64
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-aarch64-unknown-linux-gnu.tar.gz | tar xz
sudo mv taws /usr/local/bin/
```
#### Windows
Download the ZIP archive from the releases page, extract it, and add the folder containing `taws.exe` to your `PATH`.
#### Cargo
```sh
cargo install taws
```
#### Building From Source
taws is written in Rust (1.70+ required). Clone the repo, build, and run:
```sh
git clone https://github.com/huseyinbabal/taws.git
cd taws
cargo build --release
./target/release/taws
```
---
### Prerequisites
- **AWS Credentials** â configured via `aws configure`, environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`), or IAM roles when running on EC2/ECS/Lambda.
- **IAM Permissions** â at a minimum, the executing identity requires `Describe*` and `List*` permissions for the desired services; actions such as start/stop require the corresponding write permissions.
---
### Quick Start
```sh
# Launch taws with default profile and region
(taws)
# Launch with a specific profile and region
(taws --profile production --region usâwestâ2)
```
---
### Key Bindings
| Action | Key | Description |
|--------|-----|-------------|
| Move up | `k` / â | Move selection up |
| Move down | `j` / â | Move selection down |
| Page up | `Ctrlâu` | Move up by page |
| Page down | `Ctrlâd` | Move down by page |
| Top | `g` | Jump to first item |
| Bottom | `G` | Jump to last item |
| Resource picker | `:` | Open type selector |
| Describe | `Enter` / `d` | View resource details |
| Back | `Esc` | Go back to previous view |
| Help | `?` | Show help screen |
| Refresh | `r` | Refresh current view |
| Filter | `/` | Filter resources |
| Switch profile | `p` | Change AWS profile |
| Switch region | `R` | Change AWS region |
| Quit | `q` / `Ctrlâc` | Exit taws |
| Start instance | `s` | Start selected EC2 instance |
| Stop instance | `S` | Stop selected EC2 instance |
| Terminate | `T` | Terminate selected EC2 instance |
---
### Resource Navigation
Use the `:` prompt to select a resource type, then type a fragment to filter. Tabs will autocomplete the command, and hitting `Enter` opens the list.
Examples:
- `:ec2` â EC2 instances
- `:lambda` â Lambda functions
- `:s3` â S3 buckets
- `:rds` â RDS instances
- `:iam-users` â IAM users
- `:eks` â EKS clusters
---
### Supported AWS Services
taws covers roughly 95% of common AWS usage, focusing on 30 core services:
- **Compute** â EC2, Lambda, ECS, EKS, Auto Scaling
- **Storage** â S3
- **Database** â RDS, DynamoDB, ElastiCache
- **Networking** â VPC (subnets, security groups), RouteâŻ53, CloudFront, API Gateway, ELB
- **Security** â IAM, SecretsâŻManager, KMS, ACM, Cognito
- **Management** â CloudFormation, CloudWatch Logs, CloudTrail, SSM, STS
- **Messaging** â SQS, SNS, EventBridge
- **Containers** â ECR
- **DevOps** â CodePipeline, CodeBuild
- **Analytics** â Athena
Missing a service? Open a discussion to propose its addition.
---
### Configuration
AWS credentials are sourced from the standard configuration hierarchy:
1. `~/.aws/credentials` & `~/.aws/config`
2. Environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`, `AWS_PROFILE`, `AWS_REGION`)
The following variables influence taws:
- `AWS_PROFILE` â default profile
- `AWS_REGION` â default region
- `AWS_ACCESS_KEY_ID` â access key
- `AWS_SECRET_ACCESS_KEY` â secret key
- `AWS_SESSION_TOKEN` â temporary token
---
### Known Issues
- Certain resources demand granularityâspecific IAM permissions beyond the generic readâonly set.
- Resource counts may change during pagination or after refresh.
- Global services like IAM, Route 53, and CloudFront are accessed through `us-eastâ1` regardless of the configured region.
---
### Contributing
We welcome pull requests. Please read the [Contributing Guide](https://github.com/huseyinbabal/taws/blob/main/CONTRIBUTING.md) before submitting. For new services, start a discussion to evaluate feasibility.
---
### Acknowledgements
- Inspired by **k9s** for Kubernetes.
- Built with the **Ratatui** Rust TUI library.
- AWS request signing via the **aws-sigv4** crate.
---
### License
MIT â See the `LICENSE` file.
---
### Made with â¤ď¸ for the AWS community