[๐Ÿ‡ฌ๐Ÿ‡ง English](README.md) | [๐Ÿ‡ฏ๐Ÿ‡ต ๆ—ฅๆœฌ่ชž](README.ja.md) | [๐Ÿ‡จ๐Ÿ‡ณ ็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) # claws AWS ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ํ„ฐ๋ฏธ๋„ UI [![CI](https://github.com/clawscli/claws/actions/workflows/ci.yml/badge.svg)](https://github.com/clawscli/claws/actions/workflows/ci.yml) [![Release](https://img.shields.io/github/v/release/clawscli/claws)](https://github.com/clawscli/claws/releases/latest) [![Go Report Card](https://goreportcard.com/badge/github.com/clawscli/claws)](https://goreportcard.com/report/github.com/clawscli/claws) [![Go Version](https://img.shields.io/badge/Go-1.25+-00ADD8?style=flat&logo=go)](https://go.dev/) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) ![claws ๋ฐ๋ชจ](docs/images/demo.gif) ## ๊ธฐ๋Šฅ - **์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ TUI** - vim ์Šคํƒ€์ผ ํ‚ค ๋ฐ”์ธ๋”ฉ์œผ๋กœ AWS ๋ฆฌ์†Œ์Šค๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค - **70๊ฐœ ์„œ๋น„์Šค, 175๊ฐœ ๋ฆฌ์†Œ์Šค** - EC2, S3, Lambda, RDS, ECS, EKS ๋“ฑ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค - **๋ฉ€ํ‹ฐ ํ”„๋กœํ•„ ๋ฐ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „** - ์—ฌ๋Ÿฌ ๊ณ„์ •/๋ฆฌ์ „์„ ๋ณ‘๋ ฌ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค - **ํ”„๋กœํ•„ ๋กœ๊ทธ์ธ ๋„์šฐ๋ฏธ** - ํ”„๋กœํ•„ ์„ ํƒ๊ธฐ์—์„œ AWS SSO ์„ธ์…˜์„ ์ƒˆ๋กœ ๊ณ ์น˜๊ฑฐ๋‚˜ AWS CLI `aws login`์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค - **๋ฆฌ์†Œ์Šค ์•ก์…˜** - ์ธ์Šคํ„ด์Šค ์‹œ์ž‘/์ค‘์ง€, ๋ฆฌ์†Œ์Šค ์‚ญ์ œ, ๋กœ๊ทธ ํ…Œ์ผ๋ง์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค - **ํฌ๋กœ์Šค ๋ฆฌ์†Œ์Šค ํƒ์ƒ‰** - VPC์—์„œ ์„œ๋ธŒ๋„ท์œผ๋กœ, Lambda์—์„œ CloudWatch๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค - **ํ•„ํ„ฐ๋ง ๋ฐ ์ •๋ ฌ** - ํผ์ง€ ๊ฒ€์ƒ‰, ํƒœ๊ทธ ํ•„ํ„ฐ๋ง, ์ปฌ๋Ÿผ ์ •๋ ฌ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค - **๋ฆฌ์†Œ์Šค ๋น„๊ต** - ๋‚˜๋ž€ํžˆ ๋ณด๊ธฐ ๋น„๊ต ๋ทฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค - **AI ์ฑ„ํŒ…** - AWS ์ปจํ…์ŠคํŠธ๋ฅผ ํ™œ์šฉํ•˜๋Š” AI ์–ด์‹œ์Šคํ„ดํŠธ (Bedrock ๊ฒฝ์œ ) - **6๊ฐ€์ง€ ์ปฌ๋Ÿฌ ํ…Œ๋งˆ** - dark, light, nord, dracula, gruvbox, catppuccin ## ์Šคํฌ๋ฆฐ์ƒท | ๋ฆฌ์†Œ์Šค ๋ธŒ๋ผ์šฐ์ € | ์ƒ์„ธ ๋ทฐ | ์•ก์…˜ ๋ฉ”๋‰ด | |----------------|---------|----------| | ![browser](docs/images/resource-browser.png) | ![detail](docs/images/detail-view.png) | ![actions](docs/images/actions-menu.png) | ### ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ๋ฐ ๋ฉ€ํ‹ฐ ๊ณ„์ • ![multi-region](docs/images/multi-account-region.png) ### AI ์ฑ„ํŒ… (Bedrock) ![ai-chat](docs/images/ai-chat.png) ๋ฆฌ์ŠคํŠธ/์ƒ์„ธ/๋น„๊ต ๋ทฐ์—์„œ `A`๋ฅผ ๋ˆ„๋ฅด๋ฉด AI ์ฑ„ํŒ…์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค. ์–ด์‹œ์Šคํ„ดํŠธ๊ฐ€ AWS Bedrock์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๋ถ„์„, ์„ค์ • ๋น„๊ต, ๋ฆฌ์Šคํฌ ์‹๋ณ„์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ## ์„ค์น˜ ### Homebrew (macOS/Linux) ```bash brew install --cask clawscli/tap/claws ``` ### ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ (macOS/Linux) ```bash curl -fsSL https://raw.githubusercontent.com/clawscli/claws/main/install.sh | sh ``` ### ๋ฐ”์ด๋„ˆ๋ฆฌ ๋‹ค์šด๋กœ๋“œ [GitHub Releases](https://github.com/clawscli/claws/releases/latest)์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ### Go ์„ค์น˜ ```bash go install github.com/clawscli/claws/cmd/claws@latest ``` ### Docker ```bash docker run -it --rm -v ~/.aws:/home/claws/.aws:ro ghcr.io/clawscli/claws ``` ## ๋น ๋ฅธ ์‹œ์ž‘ ```bash # claws ์‹คํ–‰ (๊ธฐ๋ณธ AWS ์ž๊ฒฉ ์ฆ๋ช… ์‚ฌ์šฉ) claws # ํŠน์ • ํ”„๋กœํ•„ ์ง€์ • claws -p myprofile # ํŠน์ • ๋ฆฌ์ „ ์ง€์ • claws -r us-west-2 # ์„œ๋น„์Šค ๋˜๋Š” ๋ทฐ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์‹œ์ž‘ claws -s dashboard # ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์‹œ์ž‘ claws -s services # ์„œ๋น„์Šค ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹œ์ž‘ (๊ธฐ๋ณธ๊ฐ’) claws -s ec2 # EC2 ์ธ์Šคํ„ด์Šค claws -s rds/snapshots # RDS ์Šค๋ƒ…์ƒท # ํ•„ํ„ฐ๊ฐ€ ์ ์šฉ๋œ ๋ชฉ๋ก์œผ๋กœ ์‹œ์ž‘ (-s ํ•„์š”) claws -s ec2 -f bastion # ํผ์ง€ ํ•„ํ„ฐ (`/`์™€ ๋™์ผ) claws -s ec2 --tag Role=bastion # ํƒœ๊ทธ ํ•„ํ„ฐ (`:tag`์™€ ๋™์ผ) # ์—ฌ๋Ÿฌ ํ”„๋กœํ•„/๋ฆฌ์ „ (์‰ผํ‘œ ๊ตฌ๋ถ„ ๋˜๋Š” ๋ฐ˜๋ณต ์ง€์ •) claws -p dev,prod -r us-east-1,ap-northeast-1 # ์ฝ๊ธฐ ์ „์šฉ ๋ชจ๋“œ (ํŒŒ๊ดด์  ์•ก์…˜ ๋น„ํ™œ์„ฑํ™”) claws --read-only ``` ## ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค | ํ‚ค | ์•ก์…˜ | |----|------| | `j` / `k` | ์œ„/์•„๋ž˜๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค | | `Enter` / `d` | ๋ฆฌ์†Œ์Šค ์ƒ์„ธ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค | | `:` | ๋ช…๋ น ๋ชจ๋“œ (์˜ˆ: `:ec2/instances`) | | `/` | ํ•„ํ„ฐ ๋ชจ๋“œ (ํผ์ง€ ๊ฒ€์ƒ‰) | | `a` | ์•ก์…˜ ๋ฉ”๋‰ด๋ฅผ ์—ฝ๋‹ˆ๋‹ค | | `A` | AI ์ฑ„ํŒ… (๋ฆฌ์ŠคํŠธ/์ƒ์„ธ/๋น„๊ต ๋ทฐ) | | `R` | ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค | | `P` | ํ”„๋กœํ•„์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค | | `l` | ์„ ํƒ๋œ ํ”„๋กœํ•„๋กœ SSO ๋กœ๊ทธ์ธ/์ƒˆ๋กœ ๊ณ ์นจ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค (ํ”„๋กœํ•„ ์„ ํƒ๊ธฐ) | | `L` | ์„ ํƒ๋œ ํ”„๋กœํ•„๋กœ AWS CLI `aws login`์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค (ํ”„๋กœํ•„ ์„ ํƒ๊ธฐ) | | `?` | ๋„์›€๋ง์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค | | `q` | ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค | ์ž์„ธํ•œ ๋‚ด์šฉ์€ [ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค](docs/keybindings.ko.md)๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ## ๋ฌธ์„œ | ๋ฌธ์„œ | ์„ค๋ช… | |------|------| | [ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค](docs/keybindings.ko.md) | ์™„์ „ํ•œ ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค ์ฐธ์กฐ | | [์ง€์›๋˜๋Š” ์„œ๋น„์Šค](docs/services.ko.md) | ๋ชจ๋“  70๊ฐœ ์„œ๋น„์Šค ๋ฐ 175๊ฐœ ๋ฆฌ์†Œ์Šค | | [์„ค์ •](docs/configuration.ko.md) | ์„ค์ • ํŒŒ์ผ, ํ…Œ๋งˆ ๋ฐ ์˜ต์…˜ | | [IAM ๊ถŒํ•œ](docs/iam-permissions.ko.md) | ํ•„์š”ํ•œ AWS ๊ถŒํ•œ | | [AI ์ฑ„ํŒ…](docs/ai-chat.ko.md) | AI ์–ด์‹œ์Šคํ„ดํŠธ ์‚ฌ์šฉ ๋ฐ ๊ธฐ๋Šฅ | | [Architecture](docs/architecture.md) | ๋‚ด๋ถ€ ์„ค๊ณ„ ๋ฐ ์•„ํ‚คํ…์ฒ˜ | | [Adding Resources](docs/adding-resources.md) | ๊ธฐ์—ฌ์ž ๊ฐ€์ด๋“œ | ## ๊ฐœ๋ฐœ ### ์ „์ œ ์กฐ๊ฑด - Go 1.25+ - [Task](https://taskfile.dev/) (์„ ํƒ ์‚ฌํ•ญ) ### ๋ช…๋ น ```bash task build # ๋ฐ”์ด๋„ˆ๋ฆฌ ๋นŒ๋“œ task run # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ task test # ํ…Œ์ŠคํŠธ ์‹คํ–‰ task lint # ๋ฆฐํ„ฐ ์‹คํ–‰ ``` ## ๊ธฐ์ˆ  ์Šคํƒ - **TUI**: [Bubbletea](https://github.com/charmbracelet/bubbletea) + [Lipgloss](https://github.com/charmbracelet/lipgloss) - **AWS**: [AWS SDK for Go v2](https://github.com/aws/aws-sdk-go-v2) ## ๋ผ์ด์„ผ์Šค Apache License 2.0 - ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](LICENSE)๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.