{"id":15444665,"url":"https://github.com/iamshobe/a9s","last_synced_at":"2026-03-06T21:04:11.534Z","repository":{"id":48086662,"uuid":"373423151","full_name":"IamShobe/a9s","owner":"IamShobe","description":"Cli tool for easily navigating in AWS services.","archived":false,"fork":false,"pushed_at":"2023-05-20T18:21:58.000Z","size":232,"stargazers_count":5,"open_issues_count":6,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-15T02:39:02.042Z","etag":null,"topics":["aws","cli","cli-app"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IamShobe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-03T07:43:54.000Z","updated_at":"2023-10-02T17:09:07.000Z","dependencies_parsed_at":"2025-03-03T01:33:02.904Z","dependency_job_id":"340dc647-a412-4e42-bca9-b0a83a3ffdd9","html_url":"https://github.com/IamShobe/a9s","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamShobe%2Fa9s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamShobe%2Fa9s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamShobe%2Fa9s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IamShobe%2Fa9s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IamShobe","download_url":"https://codeload.github.com/IamShobe/a9s/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249793682,"owners_count":21326571,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","cli","cli-app"],"created_at":"2024-10-01T19:42:13.475Z","updated_at":"2026-03-06T21:04:11.448Z","avatar_url":"https://github.com/IamShobe.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# a9s\n\n![npm version](https://img.shields.io/npm/v/@a9s/cli) ![CI](https://img.shields.io/github/actions/workflow/status/IamShobe/a9s/ci.yaml?label=CI) ![GitHub release](https://img.shields.io/github/v/release/IamShobe/a9s)\n\n**k9s-style TUI navigator for AWS services.** Inspired by [k9s](https://github.com/derailed/k9s).\n\n## Installation\n\n### Global install (recommended)\n\n```shell\nnpm install -g @a9s/cli\na9s\n```\n\n### Local install + npx\n\n```shell\nnpm install @a9s/cli\nnpx @a9s/cli\n```\n\n## Usage\n\nLaunch the TUI:\n\n```shell\na9s\n```\n\n### Navigation\n\n- **Arrow keys / hjkl**: Navigate between rows\n- **Tab**: Switch between columns (sort/filter)\n- **Enter**: Drill into details or navigate to the next level\n- **Backspace**: Go back to the previous level\n- **/** (slash): Search/filter current view\n- **:**: Command mode (e.g., `:services` to list available services)\n- **?**: Show help panel with all keybindings for current context\n\n### Service Switching\n\nPress `:services` to see the list of available AWS services and switch between them.\n\n### Common Operations\n\n- **d**: Open detail panel for selected row (shows metadata like ARN, tags, etc.)\n- **y + key**: Yank/copy shortcuts:\n  - `y+n` → copy name\n  - `y+a` → copy ARN\n  - `y+k` → copy S3 key or other identifiers\n- **f**: Fetch/download S3 objects to local path\n- **e**: Edit and upload (opens selected item in `$EDITOR`)\n- **v**: Toggle reveal/hide secrets (Secrets Manager)\n\n## Services Supported\n\n| Service         | Status | Features                                        |\n| --------------- | ------ | ----------------------------------------------- |\n| S3              | ✅     | Browse buckets, objects, download, edit, delete |\n| IAM             | ✅     | List users, roles, policies                     |\n| Route 53        | ✅     | List hosted zones, records                      |\n| Secrets Manager | ✅     | View, edit, and upload secrets                  |\n| DynamoDB        | ✅     | List tables, view items                         |\n\n## Features\n\n- **Responsive tables** with sortable columns\n- **Service switching** with `:services` command\n- **VIM-inspired shortcuts** (hjkl navigation, commands)\n- **Yank mode** for quick copy operations\n- **Detail panels** showing rich metadata\n- **In-editor editing** with upload confirmation\n- **Search/filter** with `/` key\n- **Help system** with context-sensitive keybindings\n- **LocalStack support** for offline development\n\n## Development\n\n### Prerequisites\n\n- Node.js 18+\n- pnpm (for package management)\n- Docker (for LocalStack)\n\n### Setup\n\n```bash\npnpm install\n```\n\n### Run Against LocalStack\n\nStart LocalStack + seed data:\n\n```bash\npnpm localstack:setup\n```\n\nRun the TUI (connects to LocalStack on port 4566):\n\n```bash\npnpm dev:local\n```\n\n### Run Against AWS\n\nConnect to your AWS account:\n\n```bash\npnpm dev\n```\n\nThis will use your `~/.aws/credentials` and `AWS_REGION` environment variable.\n\n### Testing\n\n```bash\npnpm test       # Run tests\npnpm typecheck  # Type checking\npnpm build      # Build TypeScript to dist/\n```\n\n### Project Structure\n\n```\nsrc/\n  index.tsx          - CLI entry point (commander)\n  App.tsx            - Main TUI state machine \u0026 layout\n  types.ts           - Core types (ColumnDef, TableRow, etc.)\n  services.ts        - Service registry\n  adapters/          - ServiceAdapter implementations for each AWS service\n  views/             - Service-specific views (s3, iam, route53, dynamodb, secretsmanager)\n  components/        - Ink/React components (Table, HUD, DetailPanel, etc.)\n  hooks/             - Custom React hooks (navigation, state, etc.)\n  constants/         - Keybindings, commands\nscripts/\n  seed.ts            - LocalStack test data seeding\ndocker/\n  docker-compose.yml - LocalStack with services\n```\n\n## Goals\n\n### Services (Planned)\n\n- [x] S3\n- [x] IAM\n- [x] Route 53\n- [x] DynamoDB\n- [x] Secrets Manager\n- [ ] EC2\n- [ ] ELB\n- [ ] CloudFront\n\n### Features (Planned)\n\n- [x] Responsive tables\n- [x] Service switching\n- [x] VIM shortcuts\n- [x] Yank operations\n- [x] Detail panels\n- [x] Edit \u0026 upload\n- [ ] Smart cross-service navigation (e.g., Route53 → ELB)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamshobe%2Fa9s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiamshobe%2Fa9s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiamshobe%2Fa9s/lists"}