Skip to main content

azblob-tui

azblob-tui is a dependency-free terminal browser for Azure Blob Storage. The installed command is abt.

This is an independent community project and is not an official Microsoft product.

Install

uv tool install azblob-tui

Alternatively:

pipx install azblob-tui

Authenticate before starting the TUI:

az login
abt

Scan folder usage

abt scan performs a metadata-only scan, aggregates folder depths in one pass, and writes resumable SQLite checkpoints:

abt scan \
  --subscription <subscription-id> \
  --all \
  --max-depth 3

AML per-snapshot UUID Containers are excluded by default. Reusing the same --state resumes continuation markers, skips completed Containers, and retries failed or interrupted Containers. Progress is written to abt-scan.log by default and can be displayed live by the TUI. Scan files are stored under ${XDG_STATE_HOME:-~/.local/state}/azblob-tui/scans/<subscription-id>/, so their location does not depend on the shell working directory.

abt

Explicit --state, --output, and --log paths have highest priority. Otherwise, abt uses the paths last saved for the subscription, then recognizes legacy scan files in the current directory, and finally uses the subscription default directory.

Features:

  • Select an Azure subscription and Storage Account inside the TUI.
  • Remember the selected subscription between launches.
  • Cache Storage Accounts and AML workspace mappings for 10 days; press r on the account screen to refresh immediately and S to change subscription.
  • Hide Azure ML per-snapshot UUID containers by default.
  • Toggle soft-deleted Containers and Blobs with x; show deletion time, remaining retention days, and Container/Blob version identifiers.
  • Restore a selected soft-deleted Container or Blob with uppercase R and typed confirmation. HNS path restore uses the Azure-provided deletion ID.
  • Search accounts, containers, and the current Blob page.
  • Browse virtual folders with paginated List Blobs requests.
  • Coalesce short Azure service pages caused by partition boundaries into one logical TUI page, so immediate-child folder totals are complete.
  • View Blob size, type, access tier, timestamps, ETag, URL, and metadata.
  • Read optional usage/status data from blob_folder_usage.py SQLite state.
  • Show live queue metrics only in the lower-right panel and provide an auto-refreshing per-account statistics screen (s).
  • Adapt table columns to the terminal width.
  • Sort each screen by cycling columns with o and toggling direction with O.
  • Keep selected-item metadata in the upper-right pane and live queue metrics in the lower-right pane.
  • Show scanner-provided depth 1-3 folder sizes and human-readable Blob counts.
  • Use q to go back, h for full help, and Ctrl+C to exit.
  • Scroll extended Blob properties and metadata with [ / ].
  • Delete an individual Blob or Container with D and typed confirmation. Partial/in-progress scanner Containers are protected from deletion.
  • Restore soft-deleted items with R; restoring requires Storage Blob Data Contributor or equivalent permissions.

Configuration is stored under ${XDG_CONFIG_HOME:-~/.config}/azure-blob-tui. Noncredential resource metadata is cached under ${XDG_CACHE_HOME:-~/.cache}/azure-blob-tui. Access tokens are never persisted by this application.

The lower-right queue panel uses the latest Progress: record from --scan-log for live processed, active, failed, Blob, page, size, rate, and elapsed-time values. The per-account statistics table uses SQLite checkpoints, so it can lag the live log by up to one checkpoint interval.

Run from source

PYTHONPATH=src python -m azure_blob_tui

Open a known account directly:

PYTHONPATH=src python -m azure_blob_tui \
  --subscription <subscription-id> \
  --account <storage-account>

Show live scanner queue statistics:

PYTHONPATH=src python -m azure_blob_tui \
  --state ../blob-folder-usage-depth1-3.sqlite \
  --scan-log ../blob-folder-usage-depth1-3-scan.log

Architecture

  • azure.py: Azure CLI catalog, subscriptions, accounts, workspace mappings, and token lifecycle.
  • blob.py: paginated Blob REST client and response parsing.
  • state.py: optional scanner-state integration.
  • stats.py: read-only real-time queue statistics.
  • scan_paths.py: subscription-aware scan path resolution and legacy fallback.
  • table.py: terminal-width-aware column fitting and rendering.
  • ui.py: curses navigation and screens.
  • cli.py: argument parsing and application assembly.

Keyboard shortcuts are available with h or ?.

Safety

Browsing is read-only. Deletion is available only through the uppercase D shortcut and requires typed confirmation. Blob deletion uses the displayed ETag to reject changes made after the page was loaded. Ambiguous network responses from delete or restore operations are never retried automatically.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

azblob_tui-0.4.0.tar.gz (42.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

azblob_tui-0.4.0-py3-none-any.whl (43.0 kB view details)

Uploaded Python 3

File details

Details for the file azblob_tui-0.4.0.tar.gz.

File metadata

  • Download URL: azblob_tui-0.4.0.tar.gz
  • Upload date:
  • Size: 42.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for azblob_tui-0.4.0.tar.gz
Algorithm Hash digest
SHA256 8475e8c28cb8aaf2dbcb91d11bd43b40da19799abc01f5ce92719e15861875ee
MD5 a2678257be8d7835a27b4f6afc4a8f32
BLAKE2b-256 306dc28e0908b3b4c0ea28a1d6a4fa60f60f76f3644f848532a968a7e19bdb7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for azblob_tui-0.4.0.tar.gz:

Publisher: release.yml on HSPK/azblob-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file azblob_tui-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: azblob_tui-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 43.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for azblob_tui-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd66072f40f279e097fe92bab55285bb6542716135c924bcc410931b76076bc7
MD5 c27847f5b1bb83ad015b9d25ea7cc046
BLAKE2b-256 e2c5f35d1197a6d8f9c8a5066336b039dea4892370003cd1bc791ff691252e8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for azblob_tui-0.4.0-py3-none-any.whl:

Publisher: release.yml on HSPK/azblob-tui

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page