The k9s idea, pointed at AWS instead of Kubernetes
k9s made browsing infrastructure from the terminal genuinely pleasant, and it did it
for one problem: Kubernetes. orbit takes the same keyboard-first, dense-table approach and aims it at
the breadth of AWS: 160+ resource views across 60+ services, with vim keys, a
: command mode, and read-only as the default
posture.
brew install doughlass/homebrew-tap/orbit
What k9s does, and where it stops
k9s is a terminal UI for Kubernetes. It gives you a fast, keyboard-driven way to inspect the workloads inside a cluster: pods, deployments, services, logs, metrics. That is a large and specific job, and k9s does it well.
The gap is everything around the cluster. In a real AWS account, the questions you ask most often are not "what is running in my cluster" but "what is running in my account": which instances are stopped and still costing money, which load balancer points at a security group that no longer allows its port, which Lambda has no environment variables, which RDS instance is not multi-AZ. Those answers live in EC2, ELB, Lambda, RDS, IAM, Route 53 and dozens of other services, all of which the AWS console wants you to visit in a separate tab.
orbit exists to answer that class of question. It treats the whole AWS API surface as one navigable space rather than a set of per-service consoles.
orbit and k9s side by side
| Dimension | orbit | k9s |
|---|---|---|
| Targets | AWS | Kubernetes |
| Breadth | 160+ resource views across 60+ services | Workloads within a cluster |
| Resource switching | : command mode, filters 160+ views by name |
: command mode, aliases like po, dp |
| Accounts | Multi-profile and multi-region, switchable at runtime | Several kubeconfig contexts, :ctx to switch |
| Writes | Read-only unless started with --write |
Read/write by default, --readonly to lock down |
| Implementation | Rust, Ratatui, data-driven JSON definitions | Go, with a Kubernetes client |
| Install | brew, cargo, binary, Docker |
brew, go install, binary |
The vocabulary you will notice first
If you are used to k9s, the muscle memory carries over almost entirely: the same vim keys,
the same : command mode, the same
? help screen. What changes is how you name what you are
looking at. k9s leans on short aliases for a fixed set of Kubernetes resources.
orbit has 160+ views, where a short alias would be ambiguous, so its command mode
filters by full resource name:
:ec2-instances # jump to EC2 instances
:s3-buckets # jump to S3 buckets
:lambda-functions # jump to Lambda functions
:profiles # switch AWS profile
:regions # switch AWS region
Pressing : lists every resource, dashboard,
profile and region command. Typing narrows that list by substring,
Tab accepts the highlighted match and shows the rest of the name
as ghost text, and the arrow keys cycle candidates. So
: then ec then
Tab lands on ec2-instances. The rest of the
vocabulary matches k9s, because it is the vocabulary that works: j and
k to move,
gg and
G to jump to the ends,
[ and ] to page,
/ to filter,
? for help, and
Esc to go back.
If you also run Kubernetes
The two tools are not rivals, and the honest answer for a team that runs EKS is to use both. orbit covers the AWS resources that surround a cluster: the EKS cluster, node groups, Fargate profiles and add-ons themselves, plus the VPC, subnets, security groups, load balancers, IAM roles and Route 53 records that the cluster depends on. k9s covers what is running inside it. orbit has its own shell-into-a-host actions where AWS offers them — connecting to an EC2 instance over SSM, for instance — but reaching the cluster itself is still k9s’s job.
A common sequence is to notice a deployment is unhealthy in k9s, then open orbit to check whether the node group's instance type was changed last week, or whether the security group on the target group was edited, without leaving the terminal for either.
Try it against a throwaway account
orbit ships a demo mode that runs on synthetic data and never contacts AWS, so you can see the interface before pointing it at anything real:
orbit --demo # synthetic data, no AWS connection
orbit --demo all # EC2 + Route53 + CloudFront
orbit --demo ec2-instances,cloudfront-distributions
When you are ready to point it at an account, read-only is the default, so a plain
orbit cannot change anything. You have to
ask for writes explicitly with
--write, and only for that run. More on
how orbit stays read-only by default.
Questions about orbit and k9s
Is orbit a k9s replacement?
Not exactly. k9s is a terminal UI for Kubernetes, and orbit is a terminal UI for AWS. orbit is written in Rust with Ratatui and takes its cues from k9s, which is written in Go. They target different clouds: if you want the k9s experience for AWS resources rather than for Kubernetes resources, that is orbit.
How is orbit different from k9s in day-to-day use?
Both open a : command mode and both navigate with vim keys. The difference is vocabulary: k9s leans on short aliases such as po and dp for a fixed set of Kubernetes resources, while orbit's command mode filters over 160+ resource views by name, such as :ec2-instances or :s3-buckets. k9s supports several kubeconfig contexts, so it is not limited to one cluster; orbit covers 60+ AWS services and switches profile or region from inside the tool.
Can I manage Kubernetes clusters with orbit?
orbit covers AWS resource types directly, including EKS clusters, node groups, Fargate profiles and add-ons. It is not a Kubernetes resource browser: for pods, deployments and services inside a cluster, k9s remains the better tool. orbit does have shell-into-a-host actions where AWS provides them, such as connecting to an EC2 instance over SSM, but that is SSM rather than kubectl.
Is orbit safe to point at a production AWS account?
Yes. Read-only is the default. orbit will not perform mutating operations unless you pass the --write flag, so browsing a production account is safe without extra configuration. You opt in to writes per invocation rather than permanently.
How do I install orbit?
Run brew install doughlass/homebrew-tap/orbit on macOS or Linux, or cargo install orbit-tui from crates.io. The crate is named orbit-tui because the name orbit was already taken on crates.io, but the installed binary is just orbit. Pre-built binaries for macOS, Linux and Windows are also on the GitHub releases page.
Read next
Browse AWS in the terminal
The full key-binding reference and the services orbit covers.
Read-only by default
Why writes are opt-in per invocation, and what that protects against.
SSO and multiple profiles
The credential chain, Identity Center, role assumption and LocalStack.
orbit is not affiliated with or endorsed by Amazon Web Services, Inc. AWS is a trademark of Amazon.com, Inc. k9s is an independent project and is not affiliated with orbit. orbit is MIT licensed.