{"id":47625661,"url":"https://github.com/k2m30/a9s","last_synced_at":"2026-04-13T14:01:35.375Z","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-13T01:22:51.000Z","size":15168,"stargazers_count":6,"open_issues_count":23,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-13T03:06:40.080Z","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-12T20:15:30.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":60,"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":31755536,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T13:27:56.013Z","status":"ssl_error","status_checked_at":"2026-04-13T13:21:23.512Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-13T14:01:35.368Z","avatar_url":"https://github.com/k2m30.png","language":"Go","funding_links":["https://github.com/sponsors/k2m30"],"categories":[],"sub_categories":[],"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- 11 built-in color themes (Tokyo Night Dark default, Dracula, Nord, Catppuccin, and more) with custom theme support\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- 4,500+ 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 -c ec2                # open directly to EC2 instances, skipping the menu\na9s -p prod -c events     # open CloudTrail events list in a specific profile\na9s --version             # print version\na9s --demo                # run with synthetic demo data (no AWS credentials needed)\na9s --no-cache            # disable resource availability cache\na9s --reset-views         # delete view configs and regenerate defaults\na9s --reset-themes        # delete theme files and regenerate defaults\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\nSee the **[Key Bindings](https://github.com/k2m30/a9s/wiki/Key-Bindings)** wiki page for the full keyboard reference.\n\n## Child Views (Drill-Downs)\n\nSee the **[Child Views](https://github.com/k2m30/a9s/wiki/Child-Views)** wiki page for the full drill-down reference.\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| `:theme` | Switch color theme |\n| `:help` | Show help |\n| `:root` / `:main` | Go to main menu |\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## View Customization\n\nDefault view config files are auto-created in `~/.a9s/views/` on first launch (one YAML file per resource type). These control which columns appear in list views and which fields show in detail views. Edit any file to customize — a9s never overwrites user-edited files. Delete a file to restore its defaults on next launch.\n\n### File Structure\n\nEach file (e.g., `ec2.yaml`) has two optional sections:\n\n```yaml\nlist:\n  Name:\n    width: 24\n  State:\n    path: State.Name\n    width: 12\n  Lifecycle:\n    key: lifecycle\n    width: 12\n\ndetail:\n  - InstanceId\n  - State\n  - InstanceType\n  - LaunchTime\n  - Tags\n```\n\n**`list:`** — Ordered map of columns. Each column has:\n- **`path:`** — Dot-separated field path into the AWS SDK struct (e.g., `State.Name`)\n- **`key:`** — Special computed key (e.g., `lifecycle`, `age`, `status`) — use instead of `path` for derived values\n- **`width:`** — Column width in characters\n\nIf neither `path` nor `key` is specified, the column title is used as the field name.\n\n**`detail:`** — List of field paths shown in the detail view (press `Enter` on a resource).\n\n### Finding Available Fields\n\nA complete field reference is maintained at `~/.a9s/views_reference.yaml`, automatically updated on each launch. It lists every available field path for each resource type, generated from AWS SDK struct definitions:\n\n```yaml\nec2:  # ec2types.Instance\n  - Architecture\n  - BlockDeviceMappings[].DeviceName\n  - BlockDeviceMappings[].Ebs.VolumeId\n  - InstanceId\n  - InstanceType\n  - State.Code\n  - State.Name\n  ...\n```\n\nUse this file to discover paths you can add to your view configs.\n\n### Examples\n\n**Hide a column:** Remove it from the `list:` section.\n\n**Reorder columns:** Reorder the entries under `list:` — YAML map order is preserved.\n\n**Add a new column:**\n\n```yaml\nlist:\n  AZ:\n    path: Placement.AvailabilityZone\n    width: 16\n```\n\n**Change column width:**\n\n```yaml\nlist:\n  Name:\n    width: 40\n```\n\n### Lookup Chain\n\nView configs are loaded from two directories in order:\n1. `~/.a9s/views/` — global defaults (auto-created on first run)\n2. `.a9s/views/` in the current directory — per-project overrides\n\nPer-project files overlay global ones on a per-resource basis.\n\n## Color Themes\n\na9s ships with 11 built-in color themes, extracted to `~/.a9s/themes/` on first run. Set a theme in `~/.a9s/config.yaml`:\n\n```yaml\ntheme: \"dracula.yaml\"\n```\n\nBuilt-in dark themes: `tokyo-night` (default), `catppuccin-mocha`, `dracula`, `nord`, `gruvbox-dark`, `solarized-dark`.\nBuilt-in light themes: `tokyo-night-light`, `catppuccin-latte`, `nord-light`, `gruvbox-light`, `solarized-light`.\n\n\u003e **Note:** Dark themes are designed for dark terminal backgrounds; light themes for light terminal backgrounds. Match your theme to your terminal for best results.\n\nTo switch themes at runtime, press `:` and type `theme`. Custom themes: copy any built-in file, edit the colors, and point your config at it. Partial themes inherit missing colors from the default (Tokyo Night Dark). The `NO_COLOR` environment variable always forces monochrome, regardless of theme.\n\nSee the **[View Customization](https://github.com/k2m30/a9s/wiki/View-Customization)** wiki page for the full customization guide, and **[Color Themes](https://github.com/k2m30/a9s/wiki/Color-Themes)** for the complete color key reference and custom theme creation.\n\n## AWS Permissions\n\na9s claims to be read-only — but a dedicated IAM role with an explicit allow-list lets AWS enforce that guarantee rather than relying on the code. The **[Minimal IAM Profile](https://github.com/k2m30/a9s/wiki/Minimal-IAM-Profile)** wiki page has the full policy JSON covering all 66 resource types, CLI setup steps, and a Terraform module.\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","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"}