lazysupabase

module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2026 License: MIT

README ΒΆ

lazysupabase

A keyboard-driven terminal UI for the entire Supabase platform.

Inspired by lazygit and lazydocker β€” manage your Supabase projects from one beautiful TUI without ever opening the dashboard.

CI Release Go Reference Go Report Card PRs welcome

[!WARNING] lazysupabase is pre-alpha (v0.1). The TUI shell, project picker, and Settings tab call the real Supabase Management API. Database, Auth, Storage, Functions, Realtime, and Logs tabs currently render dummy data so the UX can be iterated visually before each tab is wired to its real backend. See the roadmap.

lazysupabase demo

✨ Features

Tab Status Description
πŸ—„οΈ Database dummy data Browse tables, run SQL, edit rows
πŸ” Auth dummy data List users, manage providers, sessions
πŸ“¦ Storage dummy data Browse buckets, files, preview images
⚑ Functions dummy data List, deploy, invoke, tail edge functions
πŸ“‘ Realtime dummy data Inspect channels and presence
πŸ“œ Logs dummy data Live tail across every Supabase service
βš™οΈ Settings real API Project info, region, status, masked API keys

Other goodies:

  • 🟒 Multi-project β€” switch between Supabase projects with one keystroke
  • πŸ”‘ Secure auth β€” your Supabase Personal Access Token is stored in the OS keychain
  • ⌨️ Vim keys β€” j/k, / to filter, [/] to jump panes, ? for help
  • πŸ“‹ OSC 52 clipboard β€” c to copy values from any pane (works over SSH/tmux)
  • 🎨 Charm-native β€” Bubble Tea, Bubbles, Lip Gloss, Huh, Fang, Glamour

πŸ“¦ Install

Go
go install github.com/Joselay/lazysupabase/cmd/lazysupabase@latest
Pre-built binaries

Grab the latest release for your platform from the releases page. Binaries are built for darwin/{amd64,arm64}, linux/{amd64,arm64}, and windows/amd64.

From source
git clone https://github.com/Joselay/lazysupabase.git
cd lazysupabase
make install   # builds + installs lazysupabase and lzs alias

Homebrew tap (brew install Joselay/tap/lazysupabase) is on the v0.2 roadmap.

πŸš€ Quick start

  1. Create a Supabase Personal Access Token at supabase.com/dashboard/account/tokens
  2. Save it: lazysupabase login (or set SUPABASE_ACCESS_TOKEN in your environment)
  3. Launch the TUI: lazysupabase (or the short alias lzs)
  4. Pick a project, then press 1–7 to explore the tabs

⌨️ Keybindings

Global
Key Action
1–7 Switch to tab N
tab / shift+tab Next / previous tab
? Help
q / ctrl+c Quit
Inside a tab
Key Action
j / k Move down / up
h / l Page or move horizontally
g / G Top / bottom
[ / ] Previous / next pane
/ Filter
r Reveal masked values (Settings tab)
c Copy to clipboard (Settings tab)
R Refresh

βš™οΈ Configuration

Item Location
Config file $XDG_CONFIG_HOME/lazysupabase/config.toml (typically ~/.config/lazysupabase/config.toml)
Access token OS keychain (macOS Keychain, Linux Secret Service, Windows Credential Manager)
Token override SUPABASE_ACCESS_TOKEN environment variable

Run lazysupabase config path to print the exact config file location.

πŸ›£οΈ Roadmap

  • v0.1 β€” TUI shell, project picker, real Settings tab, all 7 tabs visually complete (this release)
  • v0.1.x β€” Wire Database, Auth, Storage, Logs tabs to their real APIs
  • v0.2 β€” Edge Functions tab + Homebrew tap
  • v0.3 β€” RLS policy editor, advisors, branches
  • v0.4 β€” Image previews in the Storage tab (sixel / Kitty graphics)
  • v0.5 β€” Realtime channel inspector with live event stream

See the releases page for what's already shipped.

πŸ› οΈ Development

make help        # list every target
make run         # go run ./cmd/lazysupabase
make build       # build into bin/
make test        # go test -race ./...
make lint        # golangci-lint run
make tidy        # go mod tidy
make clean       # remove bin/ and dist/

Requires Go 1.25+. The project uses no CGO; everything cross-compiles cleanly.

Project layout
cmd/lazysupabase/      # entry point (fang + cobra)
internal/
  cli/                 # subcommands: login, config, version
  config/              # XDG config TOML
  fake/                # seeded gofakeit wrapper for dummy data
  keyring/             # OS keychain + env-var fallback
  supabase/            # Supabase Management API client
  theme/               # lipgloss colors + named styles
  tui/                 # Bubble Tea root model
    header.go          # top header bar
    tabbar.go          # tab strip
    statusbar.go       # bottom status bar
    projects/          # project picker
    tabs/              # one package per tab
    uikit/             # shared rendering helpers

🀝 Contributing

PRs are warmly welcomed β€” see CONTRIBUTING.md for the development workflow, conventional-commit format, and the "wire one tab to a real backend" good-first-issue list.

If you find a security issue, please open a private advisory instead of a public issue.

πŸ™ Built with

πŸ“„ License

MIT Β© Joselay

Directories ΒΆ

Path Synopsis
cmd
lazysupabase command
internal
cli
Package cli wires up the lazysupabase command tree using cobra and fang.
Package cli wires up the lazysupabase command tree using cobra and fang.
config
Package config handles loading, saving, and locating the lazysupabase configuration file using the XDG Base Directory specification.
Package config handles loading, saving, and locating the lazysupabase configuration file using the XDG Base Directory specification.
fake
Package fake exposes typed generators built on top of gofakeit so every tab in lazysupabase can render realistic but stable hardcoded data while the real Supabase integrations are being built.
Package fake exposes typed generators built on top of gofakeit so every tab in lazysupabase can render realistic but stable hardcoded data while the real Supabase integrations are being built.
keyring
Package keyring stores and retrieves the Supabase Personal Access Token in the host operating system's secure credential store, with an environment variable fallback for headless / CI environments.
Package keyring stores and retrieves the Supabase Personal Access Token in the host operating system's secure credential store, with an environment variable fallback for headless / CI environments.
postgres
Package postgres opens direct Postgres connections to a Supabase project's database.
Package postgres opens direct Postgres connections to a Supabase project's database.
supabase
Package supabase is a thin client for the Supabase Management API (https://api.supabase.com).
Package supabase is a thin client for the Supabase Management API (https://api.supabase.com).
theme
Package theme defines the lazysupabase color palette and named lipgloss styles used throughout the TUI.
Package theme defines the lazysupabase color palette and named lipgloss styles used throughout the TUI.
tui
Package tui implements the lazysupabase Bubble Tea application.
Package tui implements the lazysupabase Bubble Tea application.
tui/projects
Package projects implements the project picker shown after login.
Package projects implements the project picker shown after login.
tui/tabkit
Package tabkit defines the Tab interface implemented by every content tab in lazysupabase.
Package tabkit defines the Tab interface implemented by every content tab in lazysupabase.
tui/tabs/auth
Package auth implements the Auth tab.
Package auth implements the Auth tab.
tui/tabs/database
Package database implements the Database tab.
Package database implements the Database tab.
tui/tabs/functions
Package functions implements the Edge Functions tab.
Package functions implements the Edge Functions tab.
tui/tabs/logs
Package logs implements the Logs tab.
Package logs implements the Logs tab.
tui/tabs/realtime
Package realtime implements the Realtime tab.
Package realtime implements the Realtime tab.
tui/tabs/settings
Package settings implements the Settings tab β€” the first fully functional tab in lazysupabase v0.1.
Package settings implements the Settings tab β€” the first fully functional tab in lazysupabase v0.1.
tui/tabs/storage
Package storage implements the Storage tab.
Package storage implements the Storage tab.
tui/tabs/stub
Package stub provides a generic "coming soon" tab used by every v0.1 content tab that hasn't been implemented yet.
Package stub provides a generic "coming soon" tab used by every v0.1 content tab that hasn't been implemented yet.
tui/uikit
Package uikit holds shared rendering helpers used by every tab so the HTML mockup look stays consistent.
Package uikit holds shared rendering helpers used by every tab so the HTML mockup look stays consistent.
version
Package version exposes build-time metadata injected via -ldflags.
Package version exposes build-time metadata injected via -ldflags.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL