huseyinbabal/taws

Terminal UI for AWS (taws) - A terminal-based AWS resource viewer and manager

Rust

2,264

260 commits

updated Oct 11, 2026

See the code

README

taws

taws - Terminal UI for AWS

taws provides a terminal UI to interact with your AWS resources. The aim of this project is to make it easier to navigate, observe, and manage your AWS infrastructure in the wild.


License Rust


Screenshots

EC2 Instances View

Lambda Functions View


Features

  • Multi-Profile Support - Easily switch between AWS profiles
  • Multi-Region Support - Navigate across different AWS regions
  • 94+ Resource Types - Browse and manage resources across 60+ AWS services
  • Manual Refresh - Refresh resources with a single keystroke
  • Pagination - Navigate through large resource lists with ] / [ keys
  • Keyboard-Driven - Vim-like navigation and commands
  • Resource Actions - Start, stop, terminate EC2 instances directly
  • Detailed Views - JSON/YAML view of resource details
  • Filtering - Filter resources locally with fuzzy matching, or by AWS tags (server-side) for supported resources
  • Autocomplete - Smart resource type autocomplete with fuzzy matching

Installation

Homebrew (macOS/Linux)

brew install huseyinbabal/tap/taws

Scoop (Windows)

scoop bucket add huseyinbabal https://github.com/huseyinbabal/scoop-bucket
scoop install taws

Download Pre-built Binaries

Download the latest release from the Releases page.

PlatformArchitectureDownload
macOSApple Silicon (M1/M2/M3)taws-aarch64-apple-darwin.tar.gz
macOSInteltaws-x86_64-apple-darwin.tar.gz
Linuxx86_64 (musl)taws-x86_64-unknown-linux-musl.tar.gz
LinuxARM64 (musl)taws-aarch64-unknown-linux-musl.tar.gz
Windowsx86_64taws-x86_64-pc-windows-msvc.zip

Quick Install (macOS/Linux)

# macOS Apple Silicon
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-aarch64-apple-darwin.tar.gz | tar xz
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 (musl - works on Alpine, Void, etc.)
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-x86_64-unknown-linux-musl.tar.gz | tar xz
sudo mv taws /usr/local/bin/

# Linux ARM64 (musl - works on Alpine, Void, etc.)
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-aarch64-unknown-linux-musl.tar.gz | tar xz
sudo mv taws /usr/local/bin/

Windows

  1. Download taws-x86_64-pc-windows-msvc.zip from the Releases page
  2. Extract the zip file
  3. Add the extracted folder to your PATH, or move taws.exe to a directory in your PATH

Using Cargo

cargo install taws

Using Docker

# Run interactively
docker run --rm -it ghcr.io/huseyinbabal/taws

# Launch with a specific profile (mount AWS credentials)
docker run --rm -it \
  -v ~/.aws:/root/.aws:ro \
  ghcr.io/huseyinbabal/taws --profile production

# Launch in a specific region
docker run --rm -it \
  -v ~/.aws:/root/.aws:ro \
  ghcr.io/huseyinbabal/taws --region us-west-2

# Using environment variables
docker run --rm -it \
  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
  -e AWS_REGION=us-east-1 \
  ghcr.io/huseyinbabal/taws

# Build locally
docker build -t taws .
docker run --rm -it -v ~/.aws:/root/.aws:ro taws

Note: Use -it flags for interactive terminal support (required for TUI). Mount your ~/.aws directory as read-only to use your existing AWS credentials.

From Source

taws is built with Rust. Make sure you have Rust 1.70+ installed, along with a C compiler and linker.

Build Dependencies

PlatformInstall Command
Amazon Linux / RHEL / Fedorasudo yum groupinstall "Development Tools" -y
Ubuntu / Debiansudo apt update && sudo apt install build-essential -y
macOSxcode-select --install
WindowsInstall Visual Studio Build Tools
# Clone the repository
git clone https://github.com/huseyinbabal/taws.git
cd taws

# Build and run
cargo build --release
./target/release/taws

Prerequisites

  • AWS Credentials - See Authentication section below
  • IAM Permissions - Your AWS user/role needs appropriate read permissions for the services you want to browse. At minimum, you'll need Describe* and List* permissions.

Authentication

taws uses a credential chain, trying each source in order:

PrioritySourceDescription
1Environment VariablesAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
2AWS SSOIf profile has SSO configured, uses SSO (prompts for login if needed)
3AWS Console LoginIf profile has login_session configured, prompts for console login
4Role AssumptionIf profile has role_arn + source_profile, assumes the role
5Credentials File~/.aws/credentials
6Config File~/.aws/config
7IMDSv2EC2 instance metadata

AWS SSO

taws supports AWS SSO. If your profile uses SSO and the token is expired, taws will prompt you to authenticate via browser.

Both SSO config formats are supported:

  • Modern: sso_session reference to [sso-session X] section
  • Legacy: sso_start_url directly in profile

If you already logged in via aws sso login, taws will use the cached token automatically.

AWS Console Login

taws supports AWS Console Login (aws login). If your profile uses login_session and credentials are expired, taws will prompt you to run aws login in another terminal.

[profile console-profile]
login_session = my-login-session

[login-session my-login-session]
sso_start_url = https://my-portal.awsapps.com/start
sso_region = us-east-1
sso_registration_scopes = sso:account:access

If you already logged in via aws login, taws will use the cached credentials automatically.

IAM Role Assumption

taws supports assuming IAM roles using role_arn with either source_profile or credential_source. This is commonly used for:

  • Cross-account access (e.g., dev account assuming role in prod account)
  • Least-privilege access patterns
  • Chained role assumption
  • Container-based deployments (ECS, Lambda)

Using source_profile

Reference another named profile for source credentials:

[profile base]
region = us-east-1

[profile production]
role_arn = arn:aws:iam::123456789012:role/ProductionAccess
source_profile = base
region = us-west-2

# Optional: external_id for cross-account trust
[profile partner-account]
role_arn = arn:aws:iam::987654321098:role/PartnerAccess
source_profile = base
external_id = my-external-id

Using credential_source

Load source credentials from environment, EC2 metadata, or ECS container:

# For ECS tasks with task IAM roles
[profile ecs-admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
credential_source = EcsContainer

# For EC2 instances with instance roles
[profile ec2-admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
credential_source = Ec2InstanceMetadata

# For environments with AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY set
[profile env-admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
credential_source = Environment

Supported credential_source values:

ValueDescription
EnvironmentLoad from AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
Ec2InstanceMetadataLoad from EC2 instance metadata (IMDSv2)
EcsContainerLoad from ECS container credentials endpoint

Supported options:

OptionRequiredDescription
role_arnYesARN of the IAM role to assume
source_profileOne ofProfile to use for source credentials
credential_sourcetheseWhere to load source credentials from
external_idNoExternal ID for cross-account trust policies
role_session_nameNoCustom session name (default: taws-session)
duration_secondsNoSession duration in seconds (default: 3600)
regionNoRegion for STS endpoint

Notes:

  • Use exactly one of source_profile OR credential_source (not both)
  • Chained role assumption is supported (source_profile can also use role_arn)
  • Temporary credentials are cached and automatically refreshed before expiration
  • ECS container credentials require AWS_CONTAINER_CREDENTIALS_RELATIVE_URI or AWS_CONTAINER_CREDENTIALS_FULL_URI environment variables (set automatically by ECS)

Quick Start

# Launch taws with default profile
taws

# Launch with a specific profile
taws --profile production

# Launch in a specific region
taws --region us-west-2

# Enable debug logging
taws --log-level debug

# Run in read-only mode (blocks all write operations)
taws --readonly

# Use with LocalStack or custom endpoint
taws --endpoint-url http://localhost:4566

# Or via environment variable
AWS_ENDPOINT_URL=http://localhost:4566 taws

Log File Locations

PlatformPath
Linux~/.config/taws/taws.log
macOS~/Library/Application Support/taws/taws.log
Windows%APPDATA%\taws\taws.log

Shell Completion

taws supports shell completion for bash, zsh, fish, and PowerShell.

# Bash (add to ~/.bashrc)
eval "$(taws completion bash)"

# Zsh (add to ~/.zshrc)
eval "$(taws completion zsh)"

# Fish (add to ~/.config/fish/config.fish)
taws completion fish | source

# PowerShell (add to $PROFILE)
taws completion powershell | Out-String | Invoke-Expression

After adding the completion script, restart your shell or source the config file.


Key Bindings

ActionKeyDescription
Navigation
Move upk / ↑Move selection up
Move downj / ↓Move selection down
Topgg / HomeJump to first item
BottomG / EndJump to last item
Page upPgUp / Ctrl+bScroll up one page
Page downPgDn / Ctrl+fScroll down one page
Pagination
Next page]Load next page of results
Previous page[Load previous page of results
Views
Resource picker:Open resource type selector
DescribeEnter / dView resource details
BackEsc / BackspaceGo back to previous view
Help?Show help screen
Actions
RefreshRRefresh current view (resets pagination)
Filter/Filter resources
Region shortcuts0-5Quick switch to common regions
QuitCtrl-cExit taws
EC2 Actions
Connect (SSM)cOpen SSM shell session to instance
Start instancesStart selected EC2 instance
Stop instanceSStop selected EC2 instance
TerminateCtrl+dTerminate selected EC2 instance

Filtering

Press / to enter filter mode. taws supports two types of filtering:

Local Filtering (All Resources)

Type any text to filter resources locally by name, ID, or other visible attributes. Uses fuzzy matching.

/web-server     # Filter by name containing "web-server"
/i-0123         # Filter by instance ID

AWS API Filtering (Server-Side)

For supported resources, you can filter using AWS API filters directly. This is more efficient for large resource lists as filtering happens server-side.

How to use:

  1. Press / to enter filter mode
  2. Type F and press Tab to autocomplete Filters:
  3. Enter filter key-value pairs: Filters: owner=amazon, architecture=arm64
  4. Press Enter to apply the filter (triggers AWS API call)
  5. Press Esc to clear the filter

Syntax:

Filters: key=value, key2=value2

Examples by Resource:

ResourceExample Filters
AMIsFilters: owner=amazon, architecture=arm64, state=available
EC2 InstancesFilters: instance-state-name=running, tag:Environment=prod
EBS VolumesFilters: status=available, tag:Name=my-volume
EBS SnapshotsFilters: status=completed, owner-id=self

Common Filter Keys:

Filter KeyDescriptionExample Values
ownerAMI owner (AMIs only)amazon, self, aws-marketplace, <account-id>
architectureCPU architecturearm64, x86_64
state / statusResource stateavailable, running, stopped
tag:<key>Filter by tagtag:Environment=production

Note: When you enter filter mode on a supported resource, taws shows available filter keys for that resource in the status bar.


Resource Navigation

Press : to open the resource picker. Type to filter resources:

:ec2          # EC2 Instances
:volumes      # EBS Volumes
:snapshots    # EBS Snapshots
:amis         # AMIs (Amazon Machine Images)
:lambda       # Lambda Functions
:s3           # S3 Buckets
:rds          # RDS Instances
:iam-users    # IAM Users
:eks          # EKS Clusters

Use Tab to autocomplete and Enter to select.


Supported AWS Services

taws supports 30 AWS services with 51 resource types covering 95%+ of typical AWS usage:

CategoryServiceResources
ComputeEC2Instances, Volumes, Snapshots, AMIs
LambdaFunctions
ECSClusters, Services, Tasks
EKSClusters
Auto ScalingAuto Scaling Groups
StorageS3Buckets
DatabaseRDSInstances, Snapshots
DynamoDBTables
ElastiCacheClusters
NetworkingVPCVPCs, Subnets, Security Groups
ELBv2Load Balancers, Listeners, Rules, Target Groups, Targets
Route 53Hosted Zones
CloudFrontDistributions
API GatewayREST APIs
SecurityIAMUsers, Groups, Roles, Policies, Access Keys
Secrets ManagerSecrets
KMSKeys
ACMCertificates
CognitoUser Pools
ManagementCloudFormationStacks
CloudWatchLog Groups
CloudTrailTrails
SSMParameters
STSCaller Identity
MessagingSQSQueues
SNSTopics
EventBridgeEvent Buses, Rules
ContainersECRRepositories
DevOpsCodePipelinePipelines
CodeBuildProjects
AnalyticsAthenaWorkgroups

Missing a service? Start a discussion to propose adding it!


Configuration

See Authentication for credential setup.

Environment Variables

VariableDescription
AWS_PROFILEDefault AWS profile to use
AWS_REGIONDefault AWS region
AWS_DEFAULT_REGIONFallback region (if AWS_REGION not set)
AWS_ACCESS_KEY_IDAWS access key
AWS_SECRET_ACCESS_KEYAWS secret key
AWS_SESSION_TOKENAWS session token (for temporary credentials)
AWS_SHARED_CREDENTIALS_FILECustom path to credentials file (default: ~/.aws/credentials)
AWS_CONFIG_FILECustom path to config file (default: ~/.aws/config)
AWS_ENDPOINT_URLCustom endpoint URL (for LocalStack, etc.) - also used for STS AssumeRole
AWS_CA_BUNDLECustom CA certificate bundle (PEM format) for corporate SSL inspection
SSL_CERT_FILEAlternative to AWS_CA_BUNDLE for custom CA certificates

Corporate Proxy / SSL Inspection

If you're behind a corporate proxy with SSL inspection, taws may fail to connect to AWS services because the proxy's CA certificate is not trusted by default.

To fix this, set AWS_CA_BUNDLE or SSL_CERT_FILE to point to your corporate CA certificate bundle:

# Windows
set AWS_CA_BUNDLE=C:\path\to\corporate-ca-bundle.pem
taws

# Linux/macOS
export AWS_CA_BUNDLE=/path/to/corporate-ca-bundle.pem
taws

The PEM file can contain multiple certificates (certificate chain). taws will load all certificates from the bundle and add them to the trusted root certificates.

Note: This is the same environment variable used by AWS CLI, so if AWS CLI works with your CA bundle, taws should work too.


SSM Connect (EC2 Shell Access)

Press c on a running EC2 instance to open an interactive shell session via AWS Systems Manager.

Requirements:

  • session-manager-plugin must be installed
  • EC2 instance must have SSM Agent running
  • Instance must be running (not stopped/terminated)
  • Linux instances only (Windows not supported via shell)

Note: When you exit the shell session (exit), you'll return to taws.


Known Issues

  • Some resources may require specific IAM permissions not covered by basic read-only policies
  • Total resource count is not displayed due to AWS API limitations (most AWS APIs don't return total count)
  • Some global services (IAM, Route53, CloudFront) always use us-east-1

Contributing

Contributions are welcome! Please see our Contributing Guide for details.

Important: Before adding a new AWS service, please start a discussion first.


Acknowledgments

  • Inspired by k9s - the awesome Kubernetes CLI
  • Built with Ratatui - Rust TUI library
  • Uses aws-sigv4 for request signing

License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❤️ for the AWS community

huseyinbabal/taws

Terminal UI for AWS (taws) - A terminal-based AWS resource viewer and manager

Rust

2,264

260 commits

updated Oct 11, 2026

See the code

README

taws

taws - Terminal UI for AWS

taws provides a terminal UI to interact with your AWS resources. The aim of this project is to make it easier to navigate, observe, and manage your AWS infrastructure in the wild.


License Rust


Screenshots

EC2 Instances View

Lambda Functions View


Features

  • Multi-Profile Support - Easily switch between AWS profiles
  • Multi-Region Support - Navigate across different AWS regions
  • 94+ Resource Types - Browse and manage resources across 60+ AWS services
  • Manual Refresh - Refresh resources with a single keystroke
  • Pagination - Navigate through large resource lists with ] / [ keys
  • Keyboard-Driven - Vim-like navigation and commands
  • Resource Actions - Start, stop, terminate EC2 instances directly
  • Detailed Views - JSON/YAML view of resource details
  • Filtering - Filter resources locally with fuzzy matching, or by AWS tags (server-side) for supported resources
  • Autocomplete - Smart resource type autocomplete with fuzzy matching

Installation

Homebrew (macOS/Linux)

brew install huseyinbabal/tap/taws

Scoop (Windows)

scoop bucket add huseyinbabal https://github.com/huseyinbabal/scoop-bucket
scoop install taws

Download Pre-built Binaries

Download the latest release from the Releases page.

PlatformArchitectureDownload
macOSApple Silicon (M1/M2/M3)taws-aarch64-apple-darwin.tar.gz
macOSInteltaws-x86_64-apple-darwin.tar.gz
Linuxx86_64 (musl)taws-x86_64-unknown-linux-musl.tar.gz
LinuxARM64 (musl)taws-aarch64-unknown-linux-musl.tar.gz
Windowsx86_64taws-x86_64-pc-windows-msvc.zip

Quick Install (macOS/Linux)

# macOS Apple Silicon
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-aarch64-apple-darwin.tar.gz | tar xz
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 (musl - works on Alpine, Void, etc.)
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-x86_64-unknown-linux-musl.tar.gz | tar xz
sudo mv taws /usr/local/bin/

# Linux ARM64 (musl - works on Alpine, Void, etc.)
curl -sL https://github.com/huseyinbabal/taws/releases/latest/download/taws-aarch64-unknown-linux-musl.tar.gz | tar xz
sudo mv taws /usr/local/bin/

Windows

  1. Download taws-x86_64-pc-windows-msvc.zip from the Releases page
  2. Extract the zip file
  3. Add the extracted folder to your PATH, or move taws.exe to a directory in your PATH

Using Cargo

cargo install taws

Using Docker

# Run interactively
docker run --rm -it ghcr.io/huseyinbabal/taws

# Launch with a specific profile (mount AWS credentials)
docker run --rm -it \
  -v ~/.aws:/root/.aws:ro \
  ghcr.io/huseyinbabal/taws --profile production

# Launch in a specific region
docker run --rm -it \
  -v ~/.aws:/root/.aws:ro \
  ghcr.io/huseyinbabal/taws --region us-west-2

# Using environment variables
docker run --rm -it \
  -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
  -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
  -e AWS_REGION=us-east-1 \
  ghcr.io/huseyinbabal/taws

# Build locally
docker build -t taws .
docker run --rm -it -v ~/.aws:/root/.aws:ro taws

Note: Use -it flags for interactive terminal support (required for TUI). Mount your ~/.aws directory as read-only to use your existing AWS credentials.

From Source

taws is built with Rust. Make sure you have Rust 1.70+ installed, along with a C compiler and linker.

Build Dependencies

PlatformInstall Command
Amazon Linux / RHEL / Fedorasudo yum groupinstall "Development Tools" -y
Ubuntu / Debiansudo apt update && sudo apt install build-essential -y
macOSxcode-select --install
WindowsInstall Visual Studio Build Tools
# Clone the repository
git clone https://github.com/huseyinbabal/taws.git
cd taws

# Build and run
cargo build --release
./target/release/taws

Prerequisites

  • AWS Credentials - See Authentication section below
  • IAM Permissions - Your AWS user/role needs appropriate read permissions for the services you want to browse. At minimum, you'll need Describe* and List* permissions.

Authentication

taws uses a credential chain, trying each source in order:

PrioritySourceDescription
1Environment VariablesAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
2AWS SSOIf profile has SSO configured, uses SSO (prompts for login if needed)
3AWS Console LoginIf profile has login_session configured, prompts for console login
4Role AssumptionIf profile has role_arn + source_profile, assumes the role
5Credentials File~/.aws/credentials
6Config File~/.aws/config
7IMDSv2EC2 instance metadata

AWS SSO

taws supports AWS SSO. If your profile uses SSO and the token is expired, taws will prompt you to authenticate via browser.

Both SSO config formats are supported:

  • Modern: sso_session reference to [sso-session X] section
  • Legacy: sso_start_url directly in profile

If you already logged in via aws sso login, taws will use the cached token automatically.

AWS Console Login

taws supports AWS Console Login (aws login). If your profile uses login_session and credentials are expired, taws will prompt you to run aws login in another terminal.

[profile console-profile]
login_session = my-login-session

[login-session my-login-session]
sso_start_url = https://my-portal.awsapps.com/start
sso_region = us-east-1
sso_registration_scopes = sso:account:access

If you already logged in via aws login, taws will use the cached credentials automatically.

IAM Role Assumption

taws supports assuming IAM roles using role_arn with either source_profile or credential_source. This is commonly used for:

  • Cross-account access (e.g., dev account assuming role in prod account)
  • Least-privilege access patterns
  • Chained role assumption
  • Container-based deployments (ECS, Lambda)

Using source_profile

Reference another named profile for source credentials:

[profile base]
region = us-east-1

[profile production]
role_arn = arn:aws:iam::123456789012:role/ProductionAccess
source_profile = base
region = us-west-2

# Optional: external_id for cross-account trust
[profile partner-account]
role_arn = arn:aws:iam::987654321098:role/PartnerAccess
source_profile = base
external_id = my-external-id

Using credential_source

Load source credentials from environment, EC2 metadata, or ECS container:

# For ECS tasks with task IAM roles
[profile ecs-admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
credential_source = EcsContainer

# For EC2 instances with instance roles
[profile ec2-admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
credential_source = Ec2InstanceMetadata

# For environments with AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY set
[profile env-admin]
role_arn = arn:aws:iam::123456789012:role/AdminRole
credential_source = Environment

Supported credential_source values:

ValueDescription
EnvironmentLoad from AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN
Ec2InstanceMetadataLoad from EC2 instance metadata (IMDSv2)
EcsContainerLoad from ECS container credentials endpoint

Supported options:

OptionRequiredDescription
role_arnYesARN of the IAM role to assume
source_profileOne ofProfile to use for source credentials
credential_sourcetheseWhere to load source credentials from
external_idNoExternal ID for cross-account trust policies
role_session_nameNoCustom session name (default: taws-session)
duration_secondsNoSession duration in seconds (default: 3600)
regionNoRegion for STS endpoint

Notes:

  • Use exactly one of source_profile OR credential_source (not both)
  • Chained role assumption is supported (source_profile can also use role_arn)
  • Temporary credentials are cached and automatically refreshed before expiration
  • ECS container credentials require AWS_CONTAINER_CREDENTIALS_RELATIVE_URI or AWS_CONTAINER_CREDENTIALS_FULL_URI environment variables (set automatically by ECS)

Quick Start

# Launch taws with default profile
taws

# Launch with a specific profile
taws --profile production

# Launch in a specific region
taws --region us-west-2

# Enable debug logging
taws --log-level debug

# Run in read-only mode (blocks all write operations)
taws --readonly

# Use with LocalStack or custom endpoint
taws --endpoint-url http://localhost:4566

# Or via environment variable
AWS_ENDPOINT_URL=http://localhost:4566 taws

Log File Locations

PlatformPath
Linux~/.config/taws/taws.log
macOS~/Library/Application Support/taws/taws.log
Windows%APPDATA%\taws\taws.log

Shell Completion

taws supports shell completion for bash, zsh, fish, and PowerShell.

# Bash (add to ~/.bashrc)
eval "$(taws completion bash)"

# Zsh (add to ~/.zshrc)
eval "$(taws completion zsh)"

# Fish (add to ~/.config/fish/config.fish)
taws completion fish | source

# PowerShell (add to $PROFILE)
taws completion powershell | Out-String | Invoke-Expression

After adding the completion script, restart your shell or source the config file.


Key Bindings

ActionKeyDescription
Navigation
Move upk / ↑Move selection up
Move downj / ↓Move selection down
Topgg / HomeJump to first item
BottomG / EndJump to last item
Page upPgUp / Ctrl+bScroll up one page
Page downPgDn / Ctrl+fScroll down one page
Pagination
Next page]Load next page of results
Previous page[Load previous page of results
Views
Resource picker:Open resource type selector
DescribeEnter / dView resource details
BackEsc / BackspaceGo back to previous view
Help?Show help screen
Actions
RefreshRRefresh current view (resets pagination)
Filter/Filter resources
Region shortcuts0-5Quick switch to common regions
QuitCtrl-cExit taws
EC2 Actions
Connect (SSM)cOpen SSM shell session to instance
Start instancesStart selected EC2 instance
Stop instanceSStop selected EC2 instance
TerminateCtrl+dTerminate selected EC2 instance

Filtering

Press / to enter filter mode. taws supports two types of filtering:

Local Filtering (All Resources)

Type any text to filter resources locally by name, ID, or other visible attributes. Uses fuzzy matching.

/web-server     # Filter by name containing "web-server"
/i-0123         # Filter by instance ID

AWS API Filtering (Server-Side)

For supported resources, you can filter using AWS API filters directly. This is more efficient for large resource lists as filtering happens server-side.

How to use:

  1. Press / to enter filter mode
  2. Type F and press Tab to autocomplete Filters:
  3. Enter filter key-value pairs: Filters: owner=amazon, architecture=arm64
  4. Press Enter to apply the filter (triggers AWS API call)
  5. Press Esc to clear the filter

Syntax:

Filters: key=value, key2=value2

Examples by Resource:

ResourceExample Filters
AMIsFilters: owner=amazon, architecture=arm64, state=available
EC2 InstancesFilters: instance-state-name=running, tag:Environment=prod
EBS VolumesFilters: status=available, tag:Name=my-volume
EBS SnapshotsFilters: status=completed, owner-id=self

Common Filter Keys:

Filter KeyDescriptionExample Values
ownerAMI owner (AMIs only)amazon, self, aws-marketplace, <account-id>
architectureCPU architecturearm64, x86_64
state / statusResource stateavailable, running, stopped
tag:<key>Filter by tagtag:Environment=production

Note: When you enter filter mode on a supported resource, taws shows available filter keys for that resource in the status bar.


Resource Navigation

Press : to open the resource picker. Type to filter resources:

:ec2          # EC2 Instances
:volumes      # EBS Volumes
:snapshots    # EBS Snapshots
:amis         # AMIs (Amazon Machine Images)
:lambda       # Lambda Functions
:s3           # S3 Buckets
:rds          # RDS Instances
:iam-users    # IAM Users
:eks          # EKS Clusters

Use Tab to autocomplete and Enter to select.


Supported AWS Services

taws supports 30 AWS services with 51 resource types covering 95%+ of typical AWS usage:

CategoryServiceResources
ComputeEC2Instances, Volumes, Snapshots, AMIs
LambdaFunctions
ECSClusters, Services, Tasks
EKSClusters
Auto ScalingAuto Scaling Groups
StorageS3Buckets
DatabaseRDSInstances, Snapshots
DynamoDBTables
ElastiCacheClusters
NetworkingVPCVPCs, Subnets, Security Groups
ELBv2Load Balancers, Listeners, Rules, Target Groups, Targets
Route 53Hosted Zones
CloudFrontDistributions
API GatewayREST APIs
SecurityIAMUsers, Groups, Roles, Policies, Access Keys
Secrets ManagerSecrets
KMSKeys
ACMCertificates
CognitoUser Pools
ManagementCloudFormationStacks
CloudWatchLog Groups
CloudTrailTrails
SSMParameters
STSCaller Identity
MessagingSQSQueues
SNSTopics
EventBridgeEvent Buses, Rules
ContainersECRRepositories
DevOpsCodePipelinePipelines
CodeBuildProjects
AnalyticsAthenaWorkgroups

Missing a service? Start a discussion to propose adding it!


Configuration

See Authentication for credential setup.

Environment Variables

VariableDescription
AWS_PROFILEDefault AWS profile to use
AWS_REGIONDefault AWS region
AWS_DEFAULT_REGIONFallback region (if AWS_REGION not set)
AWS_ACCESS_KEY_IDAWS access key
AWS_SECRET_ACCESS_KEYAWS secret key
AWS_SESSION_TOKENAWS session token (for temporary credentials)
AWS_SHARED_CREDENTIALS_FILECustom path to credentials file (default: ~/.aws/credentials)
AWS_CONFIG_FILECustom path to config file (default: ~/.aws/config)
AWS_ENDPOINT_URLCustom endpoint URL (for LocalStack, etc.) - also used for STS AssumeRole
AWS_CA_BUNDLECustom CA certificate bundle (PEM format) for corporate SSL inspection
SSL_CERT_FILEAlternative to AWS_CA_BUNDLE for custom CA certificates

Corporate Proxy / SSL Inspection

If you're behind a corporate proxy with SSL inspection, taws may fail to connect to AWS services because the proxy's CA certificate is not trusted by default.

To fix this, set AWS_CA_BUNDLE or SSL_CERT_FILE to point to your corporate CA certificate bundle:

# Windows
set AWS_CA_BUNDLE=C:\path\to\corporate-ca-bundle.pem
taws

# Linux/macOS
export AWS_CA_BUNDLE=/path/to/corporate-ca-bundle.pem
taws

The PEM file can contain multiple certificates (certificate chain). taws will load all certificates from the bundle and add them to the trusted root certificates.

Note: This is the same environment variable used by AWS CLI, so if AWS CLI works with your CA bundle, taws should work too.


SSM Connect (EC2 Shell Access)

Press c on a running EC2 instance to open an interactive shell session via AWS Systems Manager.

Requirements:

  • session-manager-plugin must be installed
  • EC2 instance must have SSM Agent running
  • Instance must be running (not stopped/terminated)
  • Linux instances only (Windows not supported via shell)

Note: When you exit the shell session (exit), you'll return to taws.


Known Issues

  • Some resources may require specific IAM permissions not covered by basic read-only policies
  • Total resource count is not displayed due to AWS API limitations (most AWS APIs don't return total count)
  • Some global services (IAM, Route53, CloudFront) always use us-east-1

Contributing

Contributions are welcome! Please see our Contributing Guide for details.

Important: Before adding a new AWS service, please start a discussion first.


Acknowledgments

  • Inspired by k9s - the awesome Kubernetes CLI
  • Built with Ratatui - Rust TUI library
  • Uses aws-sigv4 for request signing

License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❤️ for the AWS community

Project health

crates.io

Latest release

1.2.1 · Jan 19, 2026

Releases this year

12

Significant stargazers

(top 24 of 48)

Joshua Peek

2,592 followers · starred Jan 2026

jongleberry

2,417 followers · starred Jan 2026

Joel Parker Henderson

1,744 followers · starred Jan 2026

Jacob Adam

36 followers · starred Jan 2026