Skip to main content

Unofficial TUI and client library for Microsoft Fabric OneLake

Project description

OneLake TUI (Unofficial)

A terminal UI for browsing Microsoft Fabric workspaces, lakehouses, and Delta tables — right from your terminal. No portal, no notebooks, no Spark cluster required.

pip install onelake-tui
az login
onelake-tui

onelake-tui is the published PyPI package and currently bundles both the terminal UI and the onelake_client library.

OneLake TUI — browsing a Fabric lakehouse

Delta table detail view

What is this?

OneLake TUI gives you a keyboard-driven file-manager experience for Microsoft Fabric's OneLake storage. Browse workspaces, inspect lakehouses and warehouses, preview files, and explore Delta table metadata — all without leaving the terminal.

Built with Textual and an async Python client for the Fabric REST and OneLake DFS APIs.

Features

  • Three-panel layout — workspace picker → item list → DFS file tree + detail/preview
  • Rich file preview — press Enter on any file:
    • Markdown, JSON (NDJSON), CSV, Parquet, Avro, syntax-highlighted code
    • All previews are selectable and copyable
  • Delta table inspector — tabbed detail view:
    • Schema, data preview (first 100 rows), transaction history, Change Data Feed
  • Schema-aware table detection — handles both Tables/schema/table (mirrored DBs) and Tables/table (lakehouses)
  • Live search — press / to filter workspaces
  • Multi-environment — PROD, MSIT, DXT, DAILY via --env flag
  • Copy menu — press y to choose HTTPS/ABFSS + named/GUID URI formats
  • Vim-friendly navigationj/k/g/G + h/l, with Tab/Shift+Tab still supported
  • Toggleable footerCtrl+F hides/shows the status bar
  • Zero config — uses az login, no service keys or config files required

Roadmap (linked issues)

Roadmap source of truth: ../README.md#roadmap

Area Status
OneLake TUI (Unofficial) ✅ Working (browse, preview, inspect, copy path)
File preview (MD/JSON/CSV/Parquet/Avro) ✅ Done
Delta table detail (schema/data/history/CDF) ✅ Done
Workspace search/filter ✅ Done
OneLake CLI 🔲 Planned (onelake ls, onelake cat, onelake cp)
Download/upload 🔲 Planned
Shortcuts discoverability/manageability 🔲 Planned
ADLS direct connections 🔲 Planned
OneLake security policy management 🔲 Planned
Bulk operations 🔲 Planned
Copying data + soft-deleted data handling 🔲 Planned

Installation

Prerequisites: Python 3.11+, Azure CLI (az login)

pip install onelake-tui    # from PyPI
onelake-tui                # launch (PROD)
onelake-tui --env msit     # Microsoft internal testing ring

From source (for development):

cd TUI
uv sync
uv run onelake-tui

Quick Start

  1. Authenticateaz login (if you haven't already)
  2. Launchonelake-tui
  3. Select workspace — pick from the left panel
  4. Select item — choose a lakehouse, warehouse, or mirrored DB
  5. Browse files — expand folders in the tree
  6. Preview — press Enter on any file
  7. Explore tables — expand Tables/ for Delta metadata
  8. Search — press / to filter workspaces

Keybindings

Key Action
/ Navigate
j / k Navigate (vim-style)
g / G Jump to top / bottom
/ Collapse/expand tree nodes
Enter Preview file / Expand folder
/ Search/filter workspaces
Escape Close search / go back
h / l Previous/next panel
Tab / Shift+Tab Switch panels
y Open copy menu (HTTPS/ABFSS, named/GUID)
Ctrl+F Toggle footer visibility
S Save SVG screenshot to current directory
r Refresh
? Show help
q Quit

Architecture

TUI/src/
├── onelake_client/            # Standalone async Python client library
│   ├── auth.py                #   Dual-scope token management
│   ├── environment.py         #   Environment ring config (PROD/MSIT/DXT/DAILY)
│   ├── _http.py               #   httpx retry + pagination
│   ├── fabric/client.py       #   Fabric REST API (control plane)
│   ├── dfs/client.py          #   OneLake DFS API (data plane)
│   ├── tables/delta.py        #   Delta table metadata reader
│   ├── tables/iceberg.py      #   Iceberg table metadata reader
│   └── models/                #   Pydantic data models
└── onelake_tui/               # Textual-based terminal UI
    ├── app.py                 #   Main app, keybindings, event wiring
    ├── app.tcss               #   Layout CSS (3-panel + footer)
    ├── workspace_picker.py    #   Flat filterable workspace list
    ├── item_list.py           #   Item list for selected workspace
    ├── tree.py                #   DFS file tree (single item)
    ├── detail.py              #   Detail/preview panel with rich rendering
    ├── sprite.py              #   OneLake-inspired splash art + shimmer animation
    ├── status_bar.py          #   3-line footer (path, shortcuts, auth)
    ├── nodes.py               #   Node dataclasses
    └── banner.py              #   Welcome screen delegate

Navigation model: Workspace → Item → DFS files/folders/tables. Each stage is a separate widget:

  • WorkspacePicker (flat OptionList, filterable)
  • ItemList (flat OptionList per workspace)
  • OneLakeTree (lazy-loading tree per item)
  • DetailPanel (context-aware: metadata on highlight, preview on Enter)

Auth Configuration

Authentication uses DefaultAzureCredential, which supports (in order):

Method Use case
az login Local development
Service principal CI/CD pipelines
Managed identity Azure-hosted environments

Environment Configuration

uv run onelake-tui              # PROD (default)
uv run onelake-tui --env msit   # Microsoft internal testing
uv run onelake-tui --env dxt    # Developer testing
uv run onelake-tui --env daily  # Daily builds

Each environment maps to the correct Fabric REST and OneLake DFS hostnames automatically.

Debugging

tail -f ~/.onelake-tui/debug.log

Development

cd TUI
uv sync --all-extras
uv run pytest           # Unit + integration tests
uv run ruff check src/  # Lint
uv run ruff format src/ # Format

License

MIT

Project details


Download files

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

Source Distribution

onelake_tui-0.3.0.tar.gz (79.7 kB view details)

Uploaded Source

Built Distribution

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

onelake_tui-0.3.0-py3-none-any.whl (55.7 kB view details)

Uploaded Python 3

File details

Details for the file onelake_tui-0.3.0.tar.gz.

File metadata

  • Download URL: onelake_tui-0.3.0.tar.gz
  • Upload date:
  • Size: 79.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for onelake_tui-0.3.0.tar.gz
Algorithm Hash digest
SHA256 f2bf8023797e3b3b095ac83efc666ef9451d93b202c96ee489e6dd7898e2731f
MD5 51413c2c553e4cb8227cd2f9687c124b
BLAKE2b-256 4153a7680f2d0833e3859a368c2e59a6b81b2720c4553a88d3c7ab85f3465b9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for onelake_tui-0.3.0.tar.gz:

Publisher: publish.yml on lmoloney/OneLakeTools

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

File details

Details for the file onelake_tui-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: onelake_tui-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 55.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for onelake_tui-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3615caa2486d05645b2d80736b9a2ee9d89deed902c4079f35ec0b827409e090
MD5 9073e4b4f9828e11a39731ee2e32001e
BLAKE2b-256 7baa395afb4446c19fc35bc23f3d5e61e7e7f91b3a04961f9497f79fe20f69ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for onelake_tui-0.3.0-py3-none-any.whl:

Publisher: publish.yml on lmoloney/OneLakeTools

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page