sacha

February 19, 2026 · View on GitHub

sacha

Keyboard-first AWS TUI for your terminal

CI Release Go Report Card License: MIT Go Version Latest Release

Browse, search, and manage AWS resources directly from your terminal. No more switching between browser tabs and consoles.

InstallQuick StartFeaturesKeybindingsDocsContributing

Buy Me A Coffee

sacha demo


Why sacha?

Sacha is a two-pane TUI inspired by classic file managers. It keeps you in the terminal while you explore AWS resources across seven services, with vim-style navigation, lazy-loaded pagination, and automatic JSON formatting.

sachamama comes from Quechua and means "mother of the forest." sacha shortens the idea to "forest," reflecting how the tool helps you see the bigger AWS landscape without getting lost in individual trees.

Supported Services

ServiceWhat you can do
CloudWatch LogsSearch, multi-select, and tail multiple log groups. Highlight and filter JSON fields with jq syntax. Create, delete, and set retention policies.
S3Browse buckets and objects. Download files and folders recursively. Preview text content. Copy S3 URIs.
DynamoDBBrowse tables and scan items. View table metadata, key schema, and GSIs. Inspect full item attributes.
LambdaBrowse functions. View configuration, environment variables, layers, and runtime details.
SSM Parameter StoreNavigate parameters by path hierarchy. View values with decryption. Supports String, StringList, SecureString.
SQSBrowse queues with message stats. Peek messages non-destructively. View FIFO/Standard attributes and redrive policies.
EC2Browse instances with state, type, IPs, and tags. Expand for full metadata. Filter by name, ID, type, state, or IP.

Install

Prerequisites: AWS credentials configured (via ~/.aws/credentials, environment variables, or IAM role).

Homebrew (macOS / Linux)

brew install sachamama/tap/sacha

Go Install

go install github.com/sachamama/sacha/cmd/sacha@latest

Requires Go 1.22+.

Pre-built Binaries

Download from GitHub Releases:

# macOS (Apple Silicon)
curl -Lo sacha.tar.gz https://github.com/Sachamama/sacha/releases/latest/download/sacha_VERSION_darwin_arm64.tar.gz
tar xzf sacha.tar.gz && sudo mv sacha /usr/local/bin/

# macOS (Intel)
curl -Lo sacha.tar.gz https://github.com/Sachamama/sacha/releases/latest/download/sacha_VERSION_darwin_amd64.tar.gz
tar xzf sacha.tar.gz && sudo mv sacha /usr/local/bin/

# Linux (x86_64)
curl -Lo sacha.tar.gz https://github.com/Sachamama/sacha/releases/latest/download/sacha_VERSION_linux_amd64.tar.gz
tar xzf sacha.tar.gz && sudo mv sacha /usr/local/bin/

# Linux (ARM64)
curl -Lo sacha.tar.gz https://github.com/Sachamama/sacha/releases/latest/download/sacha_VERSION_linux_arm64.tar.gz
tar xzf sacha.tar.gz && sudo mv sacha /usr/local/bin/

Replace VERSION with the actual version (e.g., 1.0.0).

From Source

git clone https://github.com/Sachamama/sacha.git
cd sacha
make build  # binary at bin/sacha

Update

# Homebrew
brew upgrade sacha

# Go install
go install github.com/sachamama/sacha/cmd/sacha@latest

# Pre-built binary — download from https://github.com/Sachamama/sacha/releases
# From source
git pull && make build

Check your current version: sacha --version


Quick Start

sacha
# or with explicit options
sacha --profile production --region us-east-1 --service cloudwatch-logs

Global Flags

FlagDescription
--profileAWS profile to use
--regionAWS region
--serviceJump directly to a service (cloudwatch-logs, s3, dynamodb, lambda, ssm, sqs, ec2)
--verboseEnable debug logging
--versionShow version information

Configuration

Config file: ~/.config/sacha/config.json

Resolution precedence:

  1. CLI flags (--profile, --region, --service)
  2. Environment variables (AWS_PROFILE, AWS_REGION, AWS_DEFAULT_REGION)
  3. Config file
  4. AWS SDK defaults

Sacha remembers your last-used region and service automatically.


Features

CloudWatch Logs

  • Split-pane TUI — left pane lists log groups; right pane shows details or live tail output.
  • Log group management — create (c), delete (d) with confirmation, set retention policy (R) with standard presets (1d to 1y or never).
  • Multi-group tailing — select multiple groups with space/a and tail them simultaneously with t. Dynamic refresh when selection changes.
  • Compact display — log group names show only the last path segment (e.g., /aws/lambda/my-funcmy-func). Timestamps show the base time for the first event and relative offsets (+1.5s, +2m30s) for subsequent events.
  • jq-style highlight — press H while tailing to enter field paths (e.g., .level .message .statusCode). Matching JSON values are highlighted in the log output.
  • Filter by highlight — press F to toggle filtering: only events containing the highlighted fields are shown. Press F again to show all events.
  • Panel focustab/h/l to switch between groups and tail panels. Focused panel highlighted with colored border.
  • Fullscreen mode — press f while tailing for a distraction-free view with horizontal scrolling.
  • Expand eventsenter/space to open a scrollable popup with pretty-printed JSON.

S3

  • Bucket and object browser — navigate into buckets and folders with enter, go back with esc/backspace.
  • Batch operations — multi-select files and folders with space, select all with a.
  • Recursive downloads — press d to download selected files and folders to ./sacha-downloads/, preserving folder structure.
  • Text preview — press p to preview file contents inline.
  • Clipboardy to copy S3 URI.
  • Lazy pagination — loads more objects as you scroll near the bottom.

DynamoDB

  • Two-pane table browser — table list on the left, metadata on the right (status, item count, size, billing, key schema, GSIs).
  • Item scanning — press enter to scan items with lazy-loaded pagination.
  • Search & filter/ to filter tables or items by value.
  • Expand itemsenter/space to view full attribute details in a scrollable popup.
  • All attribute types — strings, numbers, booleans, binary, sets, lists, and maps.
  • Clipboardy to copy table ARN.

Lambda

  • Function browser — two-pane view with runtime, handler, memory, timeout, code size, state, and architecture in the details panel.
  • Deep inspectionenter/space to expand and view environment variables, layers, and full configuration.
  • Filter by name or runtime/ to search.
  • Clipboardy to copy function ARN.
  • Lazy pagination — loads more functions as you scroll.

SSM Parameter Store

  • Hierarchical browsing — navigate path prefixes like folders with enter, go back with esc/backspace/h.
  • Parameter details — value (with automatic decryption), type, version, last modified, ARN.
  • All types supported — String, StringList, SecureString.
  • Expand popupenter/space on a parameter for full details.
  • Clipboardy to copy parameter value or path.
  • Scroll memory — cursor position restored when navigating back.

SQS

  • Queue browser — message counts (visible, in-flight, delayed), queue type, visibility timeout, redrive policy.
  • Non-destructive peek — press enter to receive messages with visibility timeout 0 — messages stay in the queue.
  • Message inspection — navigate messages, view auto-formatted JSON bodies, expand in a scrollable popup.
  • Queue details popup — press space to view full queue attributes.
  • Clipboardy to copy queue URL or message body.
  • Search/filter/ to filter queues by name.

EC2

  • Instance browser — two-pane view with name, instance ID, type, state, public/private IPs, and launch time.
  • Deep inspectionenter/space to expand and view full metadata including tags, security groups, VPC, and subnet.
  • Filter/ to search by name, instance ID, type, state, or IP address.
  • Clipboardy to copy instance ID.
  • Lazy pagination — loads more instances as you scroll.

Keybindings

Global

KeyAction
rChange region
sChange service
Ctrl+CQuit

CloudWatch Logs

KeyContextAction
j/k or ↑/↓ListNavigate log groups
/ListSearch / filter
spaceListToggle selection
aListSelect all
cListCreate log group
dListDelete selected log groups
RListSet retention policy
tListStart tailing selected groups
tab, h/lTailingSwitch panel focus
enter / spaceTailingExpand log event
HTailingSet highlight fields (jq syntax: .level .message)
FTailingToggle filter by highlighted fields
fTailingToggle fullscreen
h/l or ←/→FullscreenScroll horizontally
x or q/escTailingStop tailing
j/k or ↑/↓PopupScroll content
pgup/pgdnPopupPage scroll
escPopupClose

S3

KeyContextAction
j/k or ↑/↓BrowseNavigate
/BrowseSearch / filter
enterBrowseOpen bucket / folder
spaceBrowseToggle selection
aBrowseToggle all (current page)
dBrowseDownload selected (recursive)
pBrowsePreview text file
yBrowseCopy S3 URI
esc/backspaceBrowseGo back

DynamoDB

KeyContextAction
j/k or ↑/↓TablesNavigate
/TablesSearch / filter
enterTablesOpen table (scan items)
yTablesCopy table ARN
enter/spaceItemsExpand item details
esc/backspace/hItemsGo back to tables
j/k or ↑/↓PopupScroll content
pgup/pgdnPopupPage scroll
escPopupClose

Lambda

KeyContextAction
j/k or ↑/↓ListNavigate
/ListSearch / filter by name or runtime
enter/spaceListExpand function details
yListCopy function ARN
j/k or ↑/↓PopupScroll content
pgup/pgdnPopupPage scroll
escPopupClose

SSM Parameter Store

KeyContextAction
j/k or ↑/↓BrowseNavigate
/BrowseSearch / filter
enter/spaceBrowseEnter path prefix or expand parameter
yBrowseCopy parameter value or path
esc/backspace/hBrowseGo back one level
j/k or ↑/↓PopupScroll content
pgup/pgdnPopupPage scroll
escPopupClose

SQS

KeyContextAction
j/k or ↑/↓QueuesNavigate
/QueuesSearch / filter
enterQueuesPeek messages
spaceQueuesExpand queue details
yQueuesCopy queue URL
enter/spaceMessagesExpand message
yMessagesCopy message body
esc/backspace/hMessagesGo back to queues
j/k or ↑/↓PopupScroll content
pgup/pgdnPopupPage scroll
escPopupClose

EC2

KeyContextAction
j/k or ↑/↓ListNavigate
/ListSearch / filter by name, ID, type, state, or IP
enter/spaceListExpand instance details
yListCopy instance ID
j/k or ↑/↓PopupScroll content
pgup/pgdnPopupPage scroll
escPopupClose

Architecture

Sacha uses a layered architecture built on Bubble Tea:

cmd/sacha/main.go          CLI entry point (Cobra)
internal/config/            Configuration (CLI > env > file > defaults)
internal/aws/               AWS SDK v2 abstraction + Service interface
internal/<service>/          Domain clients and types per service
internal/ui/<service>/       Bubble Tea models and views per service
internal/ui/app/             Main app shell (region/service switching)

Each service implements the awsx.Service interface and is registered in main.go. See the Contributing Guide for how to add a new service.


Versioning

Sacha follows semantic versioning. Releases are tagged vMAJOR.MINOR.PATCH and automatically built via GoReleaser:

  • Pre-built binaries for Linux, macOS, Windows (amd64 + arm64)
  • Homebrew tap updates
  • SHA256 checksums
  • Auto-generated changelogs

Browse all releases: github.com/Sachamama/sacha/releases


Contributing

Contributions are welcome! Please read the Contributing Guide for details on the development workflow, coding standards, commit conventions, and how to add new AWS services.


License

MIT © Sachamama