Skip to main content

Isolinear ▦

A keyboard-driven terminal UI for managing Databricks secrets. Browse scopes, secrets and ACLs; create / edit / delete; reveal & copy values — all from a fast, calm three-pane TUI.

ci PyPI Python Docs License: MIT Ruff

Isolinear browsing secrets

Read the docs → — installation, connecting, the full keyboard reference, themes, and the security model.

Install

Run it with uv — no clone, no virtualenv:

uvx isolinear              # run once, ephemerally
uv tool install isolinear  # install the `isolinear` (and `iso`) commands on PATH

Or with pipx: pipx run isolinear / pipx install isolinear.

Requires Python ≥ 3.11. Built with Textual and the Databricks SDK.

Quickstart

isolinear        # or: iso

You don't need to pre-configure anything. Isolinear opens a workspace picker that gathers connection targets from three places — each row labelled with its Source, so you always know where it came from:

  1. Asset bundle — if a databricks.yml (Databricks Asset Bundle) sits in the current directory, its target workspace is offered as the default, pre-selected so you connect with a single keystroke.
  2. ~/.databrickscfg — every saved profile is listed automatically.
  3. Workspace URLAdd by URL and sign in through your browser (OAuth U2M / SSO). No token required; tick save as profile to keep it.

Pick a row and press Enter. Saved profiles connect instantly; a bundle target or a URL opens the browser to sign in — exactly like databricks auth login (host + auth_type = external-browser, no secret ever stored).

Workspace picker Authorization overview
Workspace picker — bundle + profiles + URL Authorization overview

Features

  • Workspace picker — connect from a Databricks Asset Bundle (databricks.yml, offered as the default), your ~/.databrickscfg profiles, or a workspace URL — each row labelled with its source.
  • Three-pane browser — scopes (with secret counts + your access), secrets (with relative age), and a detail pane.
  • Reveal & copy secret values; values are fetched lazily on reveal and never bulk-pulled into memory.
  • Full CRUD — create / edit / delete secrets, create / delete scopes, manage scope permissions (ACLs).
  • Authorization overview — your effective permission on every scope.
  • Fuzzy filter (/), command palette (ctrl+p), vim + arrow navigation.
  • Pre-loads & caches everything on startup for an instant experience.
  • A calm Graphite default theme, plus optional violet / amber / phosphor skins.

Keys

Everything is keyboard driven. Press ? for the in-app cheat-sheet or ctrl+p for the fuzzy command palette.

Key Action
↑↓ / j k Move within a pane
←→ / h l · tab Move between panes
g / G Jump to top / bottom
/ Filter the focused pane (↑↓ move while typing, esc clears)
ctrl+f / F Search every scope
s / S Sort: next column / reverse
n / N New secret / new scope
e · d Edit secret · delete (with confirm)
m Move / copy / rename secret
u Undo the last secret delete or move
p Manage scope permissions (ACLs)
space / enter Reveal / hide value (auto-hides in 30s)
c / C Copy value / copy a code reference (dbutils, Spark conf, CLI)
r / R Refresh scope / workspace
a / A Authorization overview / stale-secret audit
w · ctrl+p / P Switch workspace · command palette
? · q Help · quit

The command palette (ctrl+p) holds the rest: bulk .env import/export, a who-has-access principal lookup, and forget revealed values.

Run isolinear prod (or --profile prod) to connect straight to a discovered workspace, and add --read-only to browse and reveal with every mutation disabled — handy when you're just poking around production. Preferences (theme, scope toggle, audit threshold) persist in ~/.config/isolinear/settings.json.

Security

Isolinear talks to Databricks through the official SDK's unified auth. It does not store secret values — they're read on demand and kept only in memory. Saved profiles contain a host + auth_type, never a token. See SECURITY.md for details and how to report a vulnerability.

How it's built

Hexagonal / DDD layers; dependencies point inward and all I/O is behind domain ports, so the UI never touches the SDK and the whole domain is unit-testable without a network:

isolinear/
  domain/          model, rules + ports (SecretStore, WorkspaceConnector, ProfileStore, BundleStore)
  application/     use-cases (WorkspaceService, OnboardingService) + read model
  infrastructure/  adapters — the only Databricks-SDK importers
  interface/       Textual presentation (no business logic, no infra)
  app.py           composition root

Contributing

Issues and PRs welcome — see CONTRIBUTING.md. The toolkit is all-Astral: uv (env/deps/run), ruff (lint+format), ty (types).

uv sync
uv run pytest        # tests (core units + UI via Textual Pilot)
uv run ruff check .  # lint
uv run ty check      # types
uv run isolinear     # run it

uv run --group docs mkdocs serve   # preview the docs site at localhost:8000

License

MIT © Misja Pronk

Download files

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

Source Distribution

isolinear-0.4.1.tar.gz (251.9 kB view details)

Uploaded Source

Built Distribution

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

isolinear-0.4.1-py3-none-any.whl (58.4 kB view details)

Uploaded Python 3

File details

Details for the file isolinear-0.4.1.tar.gz.

File metadata

  • Download URL: isolinear-0.4.1.tar.gz
  • Upload date:
  • Size: 251.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for isolinear-0.4.1.tar.gz
Algorithm Hash digest
SHA256 00669535045ffd7e80e530994b332c5d47de693a03b27affebf75e010e7c2cfc
MD5 2ed81dd80af993e3dbf6428ef40e7d75
BLAKE2b-256 e7141293bbd3a24a7b86152335623560a975e579ae1f563f1a90d29fd980b605

See more details on using hashes here.

File details

Details for the file isolinear-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: isolinear-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 58.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for isolinear-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2ceae74f15060bd55b7dc56bdb45cd1ffe2abb68af2041732e554a08a87ac268
MD5 896cd916e52df068b2619e6e5d752519
BLAKE2b-256 e71a95530816da326dc1f9c8bce8a7ff73ba9b1be86aeceddaa75184ee147284

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 files

0.4.0

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

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

Supported by

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