https://github.com/milkstrawai/milkstraw-cli
AI-powered cloud cost optimization
https://github.com/milkstrawai/milkstraw-cli
aws cli cloud-cost-optimization cloudformation devops infrastructure typescript
Last synced: 11 days ago
JSON representation
AI-powered cloud cost optimization
- Host: GitHub
- URL: https://github.com/milkstrawai/milkstraw-cli
- Owner: milkstrawai
- License: mit
- Created: 2026-04-06T13:58:32.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-05T09:11:00.000Z (about 2 months ago)
- Last Synced: 2026-05-05T11:08:20.157Z (about 2 months ago)
- Topics: aws, cli, cloud-cost-optimization, cloudformation, devops, infrastructure, typescript
- Language: TypeScript
- Homepage:
- Size: 165 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @milkstraw/cli
MilkStraw AI CLI for authentication, onboarding, and stack management.
## Prerequisites
Before running `milkstraw setup`, you need the [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) installed and configured with credentials that have access to your AWS Organization management account.
Configure credentials using one of:
```bash
aws configure # Access key + secret
aws configure sso # SSO login (recommended)
```
Verify your credentials are working:
```bash
aws sts get-caller-identity
```
If using SSO, make sure your session is active:
```bash
aws sso login --profile
```
## Quick Start
```bash
npx @milkstraw/cli setup
```
## Commands
| Command | Description |
|---------|-------------|
| `milkstraw login` | Interactive browser login |
| `milkstraw logout` | Revoke token and clear local auth |
| `milkstraw setup` | Complete onboarding and deploy stacks |
| `milkstraw status` | Check deployment status |
| `milkstraw update` | Update deployed stacks to latest templates |
| `milkstraw org list` | List accessible organizations |
| `milkstraw inventory ec2 list` | List EC2 on-demand instances |
| `milkstraw inventory rds list` | List RDS on-demand instances |
| `milkstraw inventory elasticache list` | List ElastiCache on-demand clusters |
| `milkstraw inventory opensearch list` | List OpenSearch on-demand clusters |
| `milkstraw inventory opensearch nodes list` | List OpenSearch nodes across all clusters |
| `milkstraw inventory eks list` | List EKS clusters |
| `milkstraw inventory eks nodegroups list` | List EKS node groups across all clusters |
| `milkstraw inventory ebs list` | List EBS volumes |
| `milkstraw commitments ec2 list` | List EC2 Reserved Instances |
| `milkstraw commitments rds list` | List RDS Reserved Instances |
| `milkstraw commitments elasticache list` | List ElastiCache Reserved Instances |
| `milkstraw commitments opensearch list` | List OpenSearch Reserved Instances |
| `milkstraw commitments savings_plans compute list` | List Compute Savings Plans |
| `milkstraw commitments savings_plans ec2_instance list` | List EC2 Instance Savings Plans |
| `milkstraw commitments savings_plans sage_maker list` | List SageMaker Savings Plans |
| `milkstraw commitments savings_plans database list` | List Database Savings Plans |
## Global Options
| Option | Description |
|--------|-------------|
| `--org ` | Specify organization ID |
| `--aws-profile ` | Override the AWS named profile |
| `--json` | Output as JSON |
| `--quiet` | Output data only |
| `--markdown` | Output as Markdown |
| `--verbose` | Enable verbose output |
| `--agent` | Agent-safe mode (no prompts, no spinners) |
## Environment Variables
| Variable | Description |
|----------|-------------|
| `MILKSTRAW_ORG` | Default organization ID |
| `MILKSTRAW_AWS_PROFILE` | Default AWS profile name |
## AWS Credential Resolution
The CLI uses the AWS SDK for JavaScript v3 credential provider chain.
Without `--aws-profile`, credentials are resolved in this order:
1. Environment variables: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_SESSION_TOKEN`
2. SSO token cache at `~/.aws/sso/cache`
3. Shared credentials file at `~/.aws/credentials` (default profile)
4. Shared config file at `~/.aws/config`
5. ECS container or EC2 instance metadata
With `--aws-profile ` (or `MILKSTRAW_AWS_PROFILE`), the SDK skips environment variables and uses the named profile from `~/.aws/config` and `~/.aws/credentials`.
## Auth
Tokens are stored at `~/.config/milkstraw-cli/token`. Login uses the OAuth device code flow via browser.
## Development
```bash
npm install
npm run build
node bin/milkstraw.js --help
```