{"id":47625661,"url":"https://github.com/k2m30/a9s","last_synced_at":"2026-04-06T02:01:31.450Z","repository":{"id":345780767,"uuid":"1184647329","full_name":"k2m30/a9s","owner":"k2m30","description":"Terminal UI AWS Resource Manager — browse, inspect, and manage 60+ AWS resource types","archived":false,"fork":false,"pushed_at":"2026-04-02T23:03:00.000Z","size":10064,"stargazers_count":5,"open_issues_count":90,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T01:12:44.379Z","etag":null,"topics":["aws","aws-cli","bubbletea","cloud","devops","go","golang","infrastructure","terminal","tui"],"latest_commit_sha":null,"homepage":"https://k2m30.github.io/a9s/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/k2m30.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["k2m30"]}},"created_at":"2026-03-17T19:44:07.000Z","updated_at":"2026-04-01T13:23:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"f5fee57d-7987-4a28-9c85-81bba52390e7","html_url":"https://github.com/k2m30/a9s","commit_stats":null,"previous_names":["k2m30/a9s"],"tags_count":47,"template":false,"template_full_name":null,"purl":"pkg:github/k2m30/a9s","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k2m30%2Fa9s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k2m30%2Fa9s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k2m30%2Fa9s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k2m30%2Fa9s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/k2m30","download_url":"https://codeload.github.com/k2m30/a9s/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/k2m30%2Fa9s/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31456664,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-cli","bubbletea","cloud","devops","go","golang","infrastructure","terminal","tui"],"created_at":"2026-04-01T22:46:50.703Z","updated_at":"2026-04-06T02:01:31.444Z","avatar_url":"https://github.com/k2m30.png","language":"Go","readme":"# a9s - Terminal UI for AWS\n\n**Like k9s, but for your cloud.**\n\n[![CI](https://github.com/k2m30/a9s/actions/workflows/ci.yml/badge.svg)](https://github.com/k2m30/a9s/actions/workflows/ci.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/k2m30/a9s)](https://goreportcard.com/report/github.com/k2m30/a9s)\n[![Release](https://img.shields.io/github/v/release/k2m30/a9s)](https://github.com/k2m30/a9s/releases/latest)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Downloads](https://img.shields.io/github/downloads/k2m30/a9s/total)](https://github.com/k2m30/a9s/releases)\n[![codecov](https://codecov.io/gh/k2m30/a9s/graph/badge.svg)](https://codecov.io/gh/k2m30/a9s)\n\n![a9s demo](docs/demos/demo.gif)\n\nBrowse, inspect, and manage 66 AWS resource types from your terminal. a9s gives you a real-time, keyboard-driven interface to your AWS infrastructure -- no clicking through the console, no memorizing CLI flags.\n\n**Read-only by design.** a9s never makes write calls to AWS. Safe to use in production. Write operations are on the [roadmap](ROADMAP.md) only after the project has proven itself as a trusted tool (10k+ stars).\n\n**No credential storage.** a9s never reads `~/.aws/credentials`. Authentication is delegated entirely to the AWS SDK's credential chain.\n\n**No telemetry.** a9s never phones home.\n\n**Try without AWS.** Run `a9s --demo` to explore the full UI with synthetic data — no AWS account needed. About 30% of demo resources demonstrate pagination with the `M` key.\n\n## Features\n\n- **66 AWS resource types** across 12 service categories\n- Real-time resource browsing with vim-style keyboard navigation\n- YAML detail view for any resource (full AWS API response)\n- Multi-profile and multi-region support\n- Categorized menu (Compute, Storage, Database, Network, Security, CI/CD, and more)\n- Column sorting by name, ID, or date\n- Filter/search within resource lists\n- Horizontal scrolling for wide tables\n- Clipboard support (copy resource IDs and YAML)\n- Tokyo Night Dark color theme\n- Child view drill-downs (Listeners, Log Streams, Invocations, Tasks, Events, and more)\n- Pagination and lazy-loading for large result sets — press `M` to load more (demo mode showcases this)\n- 3,100+ unit tests\n\n## Installation\n\n### Homebrew (macOS and Linux)\n\n```sh\nbrew install k2m30/a9s/a9s\n```\n\n### Scoop (Windows)\n\n```powershell\nscoop bucket add a9s https://github.com/k2m30/scoop-a9s.git\nscoop install a9s\n```\n\n### Go install\n\n```sh\ngo install github.com/k2m30/a9s/v3/cmd/a9s@latest\n```\n\n### Download binary\n\nDownload the latest release for your platform from [GitHub Releases](https://github.com/k2m30/a9s/releases/latest).\n\nAvailable platforms:\n- **macOS**: Intel (amd64) and Apple Silicon (arm64)\n- **Linux**: amd64 and arm64\n- **Windows**: amd64 and arm64\n\n\u003e **Windows note:** Downloaded binaries may trigger a Microsoft Defender SmartScreen warning because they are not code-signed. Click \"More info\" → \"Run anyway\" to proceed, or install via Scoop to avoid this. Windows support is new and has been verified via cross-compilation and CI only — the maintainer does not have a Windows machine. If you encounter any issues, please [open an issue](https://github.com/k2m30/a9s/issues/new).\n\n### Docker\n\n```sh\n# Demo mode (no AWS credentials needed)\ndocker run --rm -it ghcr.io/k2m30/a9s:latest --demo\n\n# Real AWS access\ndocker run --rm -it -v ~/.aws/config:/home/a9s/.aws/config:ro ghcr.io/k2m30/a9s:latest\n```\n\n### Build from source\n\nRequires Go 1.26+.\n\n```sh\ngit clone https://github.com/k2m30/a9s.git\ncd a9s\nmake build\n./a9s\n```\n\n## Quick Start\n\na9s uses the standard [AWS credential chain](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html). Any of these work:\n- Environment variables (`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`)\n- AWS config file (`~/.aws/config`) — a9s never reads `~/.aws/credentials`\n- EC2 instance metadata / ECS task role / SSO\n\n```sh\na9s                       # use default profile\na9s -p production         # use a specific profile\na9s -r eu-west-1          # override region\na9s --version             # print version\na9s --demo                # run with synthetic demo data (no AWS credentials needed)\na9s --no-cache            # disable resource availability cache\n```\n\n## Supported AWS Services\n\n| Category | Resource Types |\n|----------|---------------|\n| **Compute** | EC2 Instances, ECS Services, ECS Clusters, ECS Tasks, Lambda Functions, Auto Scaling Groups, Elastic Beanstalk, EBS Volumes, EBS Snapshots, AMIs |\n| **Containers** | EKS Clusters, EKS Node Groups |\n| **Networking** | Load Balancers, Target Groups, Security Groups, VPCs, Subnets, Route Tables, NAT Gateways, Internet Gateways, Elastic IPs, VPC Endpoints, Transit Gateways, Network Interfaces |\n| **Databases \u0026 Storage** | DB Instances, S3 Buckets, ElastiCache Redis, DB Clusters, DynamoDB Tables, OpenSearch Domains, Redshift Clusters, EFS File Systems, RDS Snapshots, DocDB Snapshots |\n| **Monitoring** | CloudWatch Alarms, CloudWatch Log Groups, CloudTrail Trails, CloudTrail Events |\n| **Messaging** | SQS Queues, SNS Topics, SNS Subscriptions, EventBridge Rules, Kinesis Streams, MSK Clusters, Step Functions |\n| **Secrets \u0026 Config** | Secrets Manager, SSM Parameters, KMS Keys |\n| **DNS \u0026 CDN** | Route 53 Hosted Zones, CloudFront Distributions, ACM Certificates, API Gateways |\n| **Security \u0026 IAM** | IAM Roles, IAM Policies, IAM Users, IAM Groups, WAF Web ACLs |\n| **CI/CD** | CloudFormation Stacks, CodePipelines, CodeBuild Projects, ECR Repositories, CodeArtifact Repos |\n| **Data \u0026 Analytics** | Glue Jobs, Athena Workgroups |\n| **Backup** | Backup Plans, SES Identities |\n\n## Key Bindings\n\n### Navigation\n\n| Key | Action |\n|-----|--------|\n| `j` / `Down` | Move down |\n| `k` / `Up` | Move up |\n| `g` | Go to top |\n| `G` | Go to bottom |\n| `Enter` | Open / select |\n| `Esc` | Back / close |\n| `h` / `Left` | Scroll left |\n| `l` / `Right` | Scroll right |\n| `PgUp` / `Ctrl+U` | Page up |\n| `PgDn` / `Ctrl+D` | Page down |\n\n### Actions\n\n| Key | Action |\n|-----|--------|\n| `d` | Detail view |\n| `y` | YAML view |\n| `x` | Reveal (expand) |\n| `c` | Copy resource ID to clipboard |\n| `i` | IAM identity view |\n| `/` | Filter |\n| `:` | Command mode |\n| `?` | Help |\n| `Ctrl+R` | Refresh |\n| `e` | Open Service Events (ECS Services) |\n| `L` | Open Container Logs (ECS Services) |\n| `M` | Load more (paginated lists, also in demo mode) |\n| `r` | Open Stack Resources (CFN Stacks) |\n| `s` | Open source view (reserved for future child views) |\n| `w` | Toggle line wrap (in YAML, detail, and reveal views) |\n| `Tab` | Autocomplete (in command mode) |\n\n### Search (Detail and YAML Views)\n\n| Key | Action |\n|-----|--------|\n| `/` | Start search |\n| `n` | Next match |\n| `N` | Previous match |\n| `Enter` | Confirm search (keep highlights) |\n| `Esc` | Clear search |\n\n### Sorting\n\n| Key | Action |\n|-----|--------|\n| `N` | Sort by name |\n| `I` | Sort by ID |\n| `A` | Sort by date |\n\n### General\n\n| Key | Action |\n|-----|--------|\n| `q` | Quit |\n| `Ctrl+C` | Force quit |\n\n## Child Views (Drill-Downs)\n\nPress `Enter` on a resource to explore its nested children. Press `Esc` to go back.\n\n| Parent | Child View | Key | Description |\n|--------|-----------|-----|-------------|\n| Lambda Functions | Invocations | `Enter` | Recent invocations with status, duration, memory, cold start |\n| Lambda Invocations | Log Lines | `Enter` | Full log output for a specific invocation |\n| S3 Buckets | Objects | `Enter` | Browse bucket contents, drill into folders |\n| Route 53 Zones | DNS Records | `Enter` | View A, CNAME, MX, and other record types |\n| Log Groups | Log Streams | `Enter` | Streams sorted by most recent event |\n| Log Streams | Log Events | `Enter` | Color-coded log lines (ERROR=red, WARN=yellow) |\n| Target Groups | Target Health | `Enter` | Health status per target (healthy/unhealthy/draining) |\n| ECS Services | Service Events | `e` | Event timeline (steady state, placement failures, deployments) |\n| ECS Services | Tasks | `Enter` | Running and stopped tasks with status, health, stopped reason |\n| ECS Services | Container Logs | `L` | Application logs from CloudWatch |\n| CFN Stacks | Stack Events | `Enter` | Event timeline showing stack operation progress and status |\n| CFN Stacks | Stack Resources | `r` | Logical and physical resources in the stack with status |\n| Auto Scaling Groups | Scaling Activities | `Enter` | Scaling activity history with status, description, cause |\n| CloudWatch Alarms | Alarm History | `Enter` | State transitions, configuration updates, and action events |\n| Load Balancers | Listeners | `Enter` | Port, protocol, action, target, SSL policy, certificate |\n| Step Functions | Executions | `Enter` | Execution list with status, duration, start/stop times |\n| SFN Executions | Execution History | `Enter` | Step-by-step state machine trace with errors and state names |\n| CodeBuild Projects | Builds | `Enter` | Recent builds with status, duration, source version, initiator |\n| CodeBuild Builds | Build Logs | `Enter` | Full build output from CloudWatch Logs with phase highlighting |\n| CodePipelines | Pipeline Stages | `Enter` | Flattened stage→action view with status coloring and external URLs |\n| ECR Repositories | Images | `Enter` | Tags, digest, size, push time, scan findings with severity counts |\n| IAM Roles | Attached Policies | `Enter` | Managed and inline policies with type, ARN, admin highlight |\n| IAM Groups | Group Members | `Enter` | Member users with ID, creation date, password last used |\n| ELB Listeners | Listener Rules | `Enter` | Priority, conditions, action type, target (nested level 2) |\n| RDS Instances | RDS Events | `Enter` | Failovers, maintenance, reboots, configuration changes |\n| SNS Topics | Subscriptions | `Enter` | Subscribers with protocol, endpoint, confirmation status |\n| EventBridge Rules | Targets | `Enter` | Target ARN, input configuration, IAM role |\n| Glue Jobs | Job Runs | `Enter` | Execution history with status, duration, DPU usage, errors |\n\n## Commands\n\nPress `:` to enter command mode, then type a command:\n\n| Command | Action |\n|---------|--------|\n| `:q` / `:quit` | Exit a9s |\n| `:ctx` / `:profile` | Switch AWS profile |\n| `:region` | Switch AWS region |\n| `:help` | Show help |\n| `:\u003cresource\u003e` | Jump to resource type (e.g., `:ec2`, `:s3`, `:lambda`) |\n\nAll resource short names work as commands.\n\n## Configuration\n\na9s stores view configuration in `~/.a9s/views/` as per-resource YAML files (e.g., `ec2.yaml`, `s3.yaml`) — optional, sensible defaults are built-in. AWS profiles and regions are read from `~/.aws/config`. a9s never reads `~/.aws/credentials` — authentication is delegated to the AWS SDK credential chain.\n\n## AWS Permissions\n\na9s uses **read-only** AWS API calls exclusively. The following managed policies provide sufficient access:\n\n- `ReadOnlyAccess` (broad read-only access to all services)\n- Or individual service policies like `AmazonEC2ReadOnlyAccess`, `AmazonS3ReadOnlyAccess`, etc.\n\na9s will gracefully handle permission errors -- resources you don't have access to will show an error message instead of crashing.\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `NO_COLOR` | Set to any value (e.g., `NO_COLOR=1`) to disable all color output. Follows the [no-color.org](https://no-color.org) standard. Useful for accessibility, scripting, or piping output. |\n| `AWS_PROFILE` | Override the active AWS profile (same as `-p` flag). |\n| `AWS_REGION` | Override the active AWS region (same as `-r` flag). |\n\n## Why a9s?\n\n### Real-life use cases\n\n- **\"Is my deployment healthy?\"** — Jump to ECS Services, drill into tasks and events. See which tasks are running, which crashed, and why — without touching the AWS console.\n- **\"Why are we getting 502s?\"** — Check Target Groups → Target Health. Instantly see which targets are unhealthy and the exact reason (health check failed, connection refused, etc.).\n- **\"What's in this S3 bucket?\"** — Browse objects, drill into folders, check sizes and dates. Like a file manager for S3.\n- **\"Which Lambda is failing?\"** — Lambda → Invocations → Log Lines. Three key presses from function list to the actual error stack trace.\n- **\"What happened during the deployment?\"** — CFN Stacks → Stack Events shows every resource operation in real-time: what's being created, what failed, and the exact error message.\n- **\"Which security groups allow 0.0.0.0/0?\"** — Filter security groups, check inbound rules in the YAML detail view. No need to click through dozens of console pages.\n\n## Roadmap\n\nSee [ROADMAP.md](ROADMAP.md) for planned features and direction.\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n## Security\n\na9s is read-only by design and never makes mutating AWS API calls. See [SECURITY.md](SECURITY.md) for our security policy and how to report vulnerabilities.\n\n## License\n\nGPL-3.0-or-later. See [LICENSE](LICENSE).\n\n## Acknowledgments\n\n- Built with [Bubble Tea](https://github.com/charmbracelet/bubbletea), [Lipgloss](https://github.com/charmbracelet/lipgloss), and [Bubbles](https://github.com/charmbracelet/bubbles) by [Charmbracelet](https://charm.sh)\n- Inspired by [k9s](https://github.com/derailed/k9s)\n","funding_links":["https://github.com/sponsors/k2m30"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk2m30%2Fa9s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fk2m30%2Fa9s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fk2m30%2Fa9s/lists"}