← All posts

Seamless Glance v1.3.0: ECR Findings, Faster Navigation, and Apache 2.0

Today we are releasing Seamless Glance v1.3.0.

brew upgrade seamless-glance

This release adds ECR to the services Glance understands, makes the app noticeably quicker to move around in, adds mouse wheel scrolling, and moves the project to the Apache 2.0 license.


What Seamless Glance is

Seamless Glance is a terminal-native AWS dashboard written in Rust. It connects with your normal AWS credentials and answers three questions quickly:

  • What needs attention right now?
  • What is costing money for little value?
  • What should I open or run next?

The Findings view is the home screen. Every finding links straight to the resource it is about, with a describe overlay, a console deep link, and the exact AWS CLI command to run next.


ECR repositories

Container registries are one of the quietest places for cost to build up. Every CI run pushes an image, old tags get overwritten, and untagged layers pile up long after anything deploys from them.

v1.3.0 adds an ECR view. Open it from the command palette with /ecr (or /registry, /images, /repositories). Each repository shows:

  • image count and untagged image count
  • total stored size
  • the latest push and the latest recorded pull
  • whether a lifecycle policy is in place

Three new findings

ECR also feeds the Findings view with three new rules:

  • Untagged image buildup (waste): a repository holding 20 or more untagged images.
  • Stale repository (waste): images are still stored, nothing has been pushed in 180 days, and nothing has been pulled in 90 days. A recent pull keeps a repository off this list, since it means something is still running from it.
  • No lifecycle policy (hygiene): a repository with images but no lifecycle policy to expire them.

ECR repositories are also checked by the existing missing Owner tag finding, so unowned registries show up alongside unowned queues, functions, and databases.

Pivots that land on the repository

From any ECR row, d describes the repository, o opens it in the AWS console, and c gives you the CLI command to dig in:

aws ecr describe-images --repository-name my-service --region us-east-1

If an image listing or lifecycle lookup fails, Glance shows the value as unknown rather than zero. A permissions problem should never look like a clean repository, and it should never raise a finding that is not real.

Permissions

The ECR view is region-scoped and needs these read-only permissions:

ecr:DescribeRepositories
ecr:DescribeImages
ecr:GetLifecyclePolicy
ecr:ListTagsForResource

Faster startup and view switching

Moving between views in earlier versions sometimes took longer than it should have. The cause turned out to be work the app did not need to do.

Every time the short inventory cache expired, switching views refetched a full account overview, about ten AWS services, before it even started loading the view you asked for. The Findings view was worse: it fetched most of those same services a second time for itself.

v1.3.0 removes that duplicate work:

  • Switching views reuses the account overview while it is still fresh. A manual refresh (r) or a profile or region switch still reloads everything.
  • When the overview does need reloading, it loads at the same time as the view's data instead of before it.
  • Findings builds the account overview from the data it already loads, so each service is fetched once.
  • Startup reads cost data from the local cache instead of waiting on Cost Explorer before the first screen appears.
  • The header keeps showing your account while a refresh runs instead of going blank.

The biggest difference is on larger accounts, where those extra calls added up.


Mouse wheel scrolling

Glance is keyboard-first, but reaching for the scroll wheel is a habit. The wheel now behaves exactly like the up and down arrow keys. It moves the selection in list views, and when help, a describe overlay, or the profile picker is open, it scrolls that instead.

Because Glance now captures the mouse, a plain click-and-drag no longer selects text while it is running. Hold a modifier while dragging to select and copy as usual: Shift in most Linux terminals, Option in iTerm2, and Fn in macOS Terminal.


Now licensed under Apache 2.0

Seamless Glance is now released under the Apache License, Version 2.0, matching the rest of the Seamless ecosystem. Releases up to and including v1.2.0 remain available under GPL-3.0-only.


Getting started

Install with Homebrew on macOS or Linux:

brew install fells-code/seamless/seamless-glance

Or use the install script, which detects your platform and installs the latest release:

curl -fsSL https://raw.githubusercontent.com/fells-code/seamless-glance/main/install.sh | bash

Rust users can fetch the prebuilt binary with Cargo:

cargo binstall seamless-glance

Then run it with your usual AWS profile:

glance --profile my-profile

Already installed? brew upgrade seamless-glance or rerunning the install script gets you v1.3.0.


What comes next

ECR is part of a broader push to turn Glance into a catalog of AWS waste, not just an inventory browser. Next on the roadmap:

  • EBS volumes and snapshots that are no longer attached to anything
  • Elastic IPs that are allocated but unused
  • CloudWatch Logs groups with no retention policy
  • S3 buckets without lifecycle rules

Every one of these follows the same pattern as ECR: a finding that explains why it matters, and a pivot that lands on the exact resource.


Closing

The goal of Seamless Glance is to get you from "something is off in this account" to the right resource and the right command as fast as possible. v1.3.0 makes it faster to get around and gives you one more place to look for money you do not need to spend.

Try it on your account, and if a finding is wrong or missing, open an issue on GitHub.

Moving your product to passkeys?

Thirty minutes with the engineer who wrote this. You leave knowing what your migration would look like and what it would cost.

$ npx seamless-cli init my-app
Start the quickstartStar it on GitHub

Want help hosting or migrating? Say hello