lazycloud

command module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

README

LazyCloud

A terminal UI for browsing and managing AWS resources

CI Go License Go Report Card Supported by LocalStack

Built with Go and the Charm ecosystem. Inspired by amazing TUIs like lazygit and k9s.

Features

  • Browse and manage AWS resources without leaving your terminal
  • ReadOnly by default — mutations blocked regardless of IAM permissions until you press W
  • Drill-down navigation with a side detail panel on wide terminals (≥120 cols)
  • Filterable, sortable tables with vim-style keybindings
  • Multi-select with bulk actions (start/stop/delete across selections)
  • Syntax-highlighted content viewer with visual selection and yank
  • In-app event log, command bar, and fuzzy-search pickers
  • Multiple AWS profiles and regions — switch at runtime
  • 4 color themes (Catppuccin, Dracula, Nord, Tokyo Night)
  • TOML config with XDG support, Nerd Font icons with Unicode fallbacks
  • LocalStack integration for local development

Supported Services

Service Description
S3 Buckets, objects, versions, presigned URLs, copy/move, create/delete
EC2 Instances, AMIs, start/stop/reboot/terminate, SSM connect, public AMI search
SQS Queues, message peek, send, purge, delete, DLQ redrive

Getting Started

Install from releases

Download the latest binary from the Releases page.

Build from source

go build -o lazycloud .
./lazycloud

Quick start

# Default AWS profile
./lazycloud

# Specify profile and region
./lazycloud --profile staging --region us-west-2

# Run against LocalStack
./lazycloud --endpoint http://localhost:4566
Using Taskfile
task deps              # download Go dependencies
task build             # build the binary
task run               # run against real AWS
task localstack:seed   # populate LocalStack with test data (see docs/DEVELOPMENT.md)
task dev               # run against LocalStack

CLI Flags

Flag Description
--profile AWS profile (falls back to AWS_PROFILE)
--region AWS region (falls back to AWS_REGION)
--endpoint Endpoint override for LocalStack (falls back to AWS_ENDPOINT_URL)
--theme Color theme: catppuccin, dracula, nord, tokyonight
--no-nerd-fonts Use plain Unicode icons instead of Nerd Font glyphs
--config Path to config file (default: ~/.config/lazycloud/config.toml)
--log Path to debug log file
--read-write Start in ReadWrite mode (default: ReadOnly)
--init-config Write default config file and exit
--version Print version and exit

Keybindings

Key Action
j/k or arrows Navigate
enter Drill into resource
esc Go back / clear selection
/ Filter
space Multi-select
s/S Sort / reverse sort
r Refresh
W Toggle ReadOnly/ReadWrite
tab Toggle panel focus
: Command bar
? Help overlay (full keybinding reference)
q Quit / back

Press ? in-app for the complete list including view-specific and panel keybindings. See docs/KEYBINDINGS.md for the keybinding system architecture.

Configuration

Generate the default config:

./lazycloud --init-config

This creates ~/.config/lazycloud/config.toml (or $XDG_CONFIG_HOME/lazycloud/config.toml):

[aws]
# profile = "default"
# region = "us-east-1"
# endpoint = ""

[display]
theme = "catppuccin"    # catppuccin, dracula, nord, tokyonight
nerd_fonts = true       # false for plain Unicode fallbacks

[log]
# file = "/tmp/lazycloud.log"

Precedence: config file < env vars < CLI flags.

Tech Stack

Bubble Tea v2 | Lip Gloss v2 | Bubbles v2 | Huh v2 | Chroma | aws-sdk-go-v2 | testify | Taskfile | LocalStack

Architecture

LazyCloud follows the Elm Architecture via Bubble Tea. Views are pushed onto a navigation stack, AWS calls happen in tea.Cmd goroutines, and the root model routes messages between views, overlays, and the side panel.

internal/aws/        Service interfaces + SDK implementations
internal/views/      Bubble Tea view models (one per resource type)
internal/ui/         Shared components (table, filter, picker, toast, panel)
internal/app/        Root model — message router, layout, view factory
internal/nav/        Stack-based navigator with view caching

See docs/ARCHITECTURE.md for runtime patterns, scaling strategy, and the guide for adding new services.

Testing

go test ./...              # unit tests
task test:integration      # integration tests against LocalStack

Contributing

LazyCloud is in early development and not yet accepting contributions. This may change in the future — check back later.

Supporters

Supported by LocalStack

Supported by LocalStack through their Open Source program.

License

Licensed under the Apache License 2.0.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
seed command
internal
app
aws
msg
nav
registry
Package registry provides a single source of truth for service and command definitions used by the home view, command palette, and view factory.
Package registry provides a single source of truth for service and command definitions used by the home view, command palette, and view factory.
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL