Show HN: Awsmux – Multi-account AWS CLI, up to 5.4x faster, 7.4x fewer tokens Awsmux, a multi-account AWS CLI tool, runs commands across hundreds of accounts in parallel with up to 5.4x faster execution and 7.4x fewer output tokens compared to raw-shell AWS CLI, according to a benchmark by developer Hardik. In a 150-session test using Claude Opus 4.8 agents across a 100-account fleet, awsmux was 1.3x to 2.9x cheaper and 2.3x to 5.4x faster, with a flat 4 turns regardless of fleet size. The tool includes an approval boundary that prevents even AI agents with admin credentials from executing mutations without approval. Run one AWS CLI command across your whole fleet in parallel: hundreds of accounts in seconds, safely. One command fanned out across every account and region at once 100 parallel workers by default, --concurrency raises it , identities verified before anything runs, results merged into one stream. No more shell loops that take a coffee break to crawl the fleet. And anything that mutates is stopped by an approval boundary that even an AI agent with your admin credentials cannot talk its way past. The demo above is a real terminal against the bundled 100-account sandbox fleet; replay it yourself in one command with make build fleet-up . And it is measurably cheaper and faster for agents. In a 150-session, three-arm benchmark identical Claude Opus 4.8 agents, identical prompts, same 100-account fleet , the awsmux arm was cheaper and faster than a raw-shell aws CLI arm in every cell: 1.3x to 2.9x cheaper, 2.3x to 5.4x faster, and up to 7.4x fewer output tokens, at a flat 4 turns whatever the fleet size the CLI arm matched that only at 10 accounts, then grew to 10.5; cost and output-token differences are all Holm-adjusted p < 0.05 . 138 of the 150 sessions passed environment validation, and all 12 exclusions were awsmux's own fault: an MCP startup race under concurrency, so they fell entirely in the MCP-bearing arms. | task | fleet | cost per run cli vs awsmux | wall time | |---|---|---|---| | enumerate all VPCs | 10 accounts | $0.090 vs $0.068 1.3x | 34s vs 13s | | enumerate all VPCs | 50 accounts | $0.239 vs $0.120 2.0x | 84s vs 23s | | enumerate all VPCs | 100 accounts | $0.274 vs $0.193 1.4x | 94s vs 41s | | find the world-open group | 50 accounts | $0.229 vs $0.079 2.9x | 75s vs 14s | | find the world-open group | 100 accounts | $0.152 vs $0.098 1.5x | 90s vs 17s | Full design, statistics, and caveats: docs/BENCHMARK.md /0hardik1/awsmux/blob/main/docs/BENCHMARK.md . Prerequisites: Go, Docker, and the aws CLI. make build fleet-up && source .tmp/fleet/env.sh That builds ./bin/awsmux , boots a pinned LocalStack container, and provisions a fictional 100-account fleet 10 teams, prod and stage, 5 shards, 3 regions to break for fun. The real aws CLI talks to a real emulated AWS on localhost, every profile is its own account plus one planted admin-legacy duplicate for --dedupe to catch , and what you change actually persists. Zero credentials, zero real AWS, zero risk. ./bin/awsmux targets --profiles 'payments- ' verified identities, per account ./bin/awsmux run --dedupe --format jsonl -- ec2 describe-vpcs --query 'Vpcs .VpcId' all 100 accounts in a few seconds ./bin/awsmux run --profiles ' -prod- ' -- ec2 describe-security-groups \ --filters Name=ip-permission.cidr,Values=0.0.0.0/0 find the world-open group ./bin/awsmux plan --profiles payments-prod-1 -- ec2 revoke-security-group-ingress \ --group-name legacy-bastion --protocol tcp --port 22 --cidr 0.0.0.0/0 That last one is destructive, so it will not just run: you get an immutable plan to approve first. Apply it with the token and re-run the hunt; the finding disappears for real, because the sandbox is a real emulated AWS. Try editing the plan file between approve and apply and watch the hash check refuse it. make e2e builds the binary, provisions the fleet, and smoke-tests these same beats end to end, from STS-verified discovery through the approval gate to a plan / approve / apply roundtrip and a tampered plan refused by its hash full list in docs/ARCHITECTURE.md /0hardik1/awsmux/blob/main/docs/ARCHITECTURE.md test-fleet ; make fleet-down removes the container. Same commands, pointed at your own AWS setup instead of the sandbox environment. Zero configuration of its own: awsmux discovers profiles from your existing shared config file ~/.aws/config and shared credentials file ~/.aws/credentials , honoring AWS CONFIG FILE and AWS SHARED CREDENTIALS FILE . SSO, static keys, and credential process profiles all work unchanged, because awsmux always executes through the aws CLI and verifies every identity with STS before running anything: awsmux doctor first run? verify aws CLI, files, profiles awsmux targets --regions us-east-1,us-west-2 awsmux run --profiles 'prod- ' --exclude ' -sandbox' --format jsonl \ -- ec2 describe-instances --query 'Reservations .Instances .InstanceId' awsmux plan -- ssm put-parameter --name /app/flag --value on --type String awsmux approve plan-01k... prints a one-time token, never stored awsmux apply plan-01k... --approval-token