Skip to main content

A keyboard-driven terminal UI for managing Databricks secrets

Project description

Isolinear ▦

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

ci PyPI Python License: MIT Ruff

Isolinear browsing secrets

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. On first launch Isolinear opens an onboarding hub with two doors:

  1. Workspace URL — paste a workspace URL and sign in through your browser (OAuth U2M / SSO). No token required.
  2. Discover via account — pick your cloud (AWS / Azure / GCP), paste your Account ID, sign in once, and Isolinear lists every workspace in the account for you to choose from.

Tick save as profile and it writes a reusable entry to ~/.databrickscfg (host + auth_type = external-browser, no secret stored — same as databricks auth login), so next launch connects instantly. Existing ~/.databrickscfg profiles show up automatically.

Login hub Authorization overview
Onboarding hub Authorization overview

Features

  • 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.
  • Multiple workspaces — switch profiles, or add new connections on the fly.
  • Pre-loads & caches everything on startup for an instant experience.
  • Three switchable themes (violet, amber Okudagram, phosphor green).

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
n / N New secret / new scope
e · d Edit secret · delete (with confirm)
p Manage scope permissions (ACLs)
space · c Reveal / hide value · copy value
r / R Refresh scope / workspace
a Authorization overview
w · ctrl+p Switch workspace · command palette
? · q Help · quit

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)
  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

License

MIT © Misja Pronk

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

isolinear-0.1.0.tar.gz (374.0 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.1.0-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: isolinear-0.1.0.tar.gz
  • Upload date:
  • Size: 374.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","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.1.0.tar.gz
Algorithm Hash digest
SHA256 056b8ce09b1062db53163c8adc0cb87337d7d39320b9df15f02526244fd8b267
MD5 429e135185d466be1606291dbb7c9a04
BLAKE2b-256 1b36b10d6fb4991bc81a8d246b39b1b610be6245f1a79d5e4b0ae035ec3ffbe3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: isolinear-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.25 {"installer":{"name":"uv","version":"0.11.25","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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 434edfa3ffab38bf8e5aa42761d00d7e7c44173aa474302b6328c8a2cd07e356
MD5 c6112eb8e6e717641f5634d58e4a4f39
BLAKE2b-256 583efbe229508e38a88340e30a4e216c0b4da35234169b9d3fc4cb17a4dc8de9

See more details on using hashes here.

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