Terminal-native, keyboard-first async database IDE
Project description
Teridex 📟
Terminal-native, keyboard-first async database IDE
Teridex is a TUI database client built on a clean async core and a plugin-first architecture. It combines a rich query editor, lazy schema browser, virtualized result tables, and a fuzzy command palette — all inside your terminal.
✨ Features
- 🎹 Keyboard-First Layout: Fully navigatable using Vim keys or custom layout keymaps.
- ⚡ Asynchronous Execution Engine: Run queries in the background. Long-running queries will never freeze the UI, and can be cancelled with a single keystroke.
- 🔌 Pluggable Architecture: Extend functionality with custom panels, commands, and hooks subscribing to runtime event lifecycles.
- 📊 Interactive TUI: Rich results viewer, schema tree explorer, syntax highlighting, and batch rendering.
- 🛠️ Command Line Interface: Fast, standalone utilities to connect, test connections, and execute queries directly to standard output.
🗄️ Supported Databases
Teridex is database-agnostic and loads drivers dynamically via optional extras.
| Database | Extra | Adapter Protocol | Details |
|---|---|---|---|
| DuckDB | [duckdb] |
duckdb |
Direct in-process analytics engine |
| SQLite | [sqlite] |
aiosqlite |
Async local database access |
| PostgreSQL | [postgres] |
asyncpg |
Native async driver for Postgres |
| MySQL | [mysql] |
asyncmy2 |
Native async driver for MySQL |
| All Drivers | [all] |
— | Installs all supported drivers |
🚀 Installation
Teridex requires Python 3.13 or newer. It is recommended to install using pipx or uv to keep the dependencies isolated.
Using uv (Recommended)
# Install with all database drivers
uv tool install "teridex[all]"
# Install with PostgreSQL and SQLite support only
uv tool install "teridex[postgres,sqlite]"
Using pipx
# Install with DuckDB support
pipx install "teridex[duckdb]"
📖 Quick Start
You can run queries one-shot from the shell or jump into the terminal user interface.
Running a One-Shot Query
Use the run command to execute a single query and render the result as a styled table:
teridex run --dsn "sqlite:///./my_database.db" "SELECT * FROM users LIMIT 5"
Starting the TUI
Launch the full interactive terminal IDE:
teridex tui --dsn "postgres://user:pass@localhost:5432/my_db"
Command Reference
# Display help and options
teridex --help
# Print version and discovered database adapters
teridex version
# Sanity check database connection
teridex connect --dsn "mysql://root:secret@127.0.0.1/test"
# List discovered plugins
teridex plugins list
⚙️ Configuration
Teridex configuration is loaded in layers: Defaults ➡️ TOML Configuration ➡️ Environment Variables ➡️ CLI Flags.
The default configuration file is searched at ~/.config/teridex/config.toml. The configuration file must have secure permissions (e.g., 0600) if it contains credentials.
Here is an example config file (see config.example.toml):
[ui]
theme = "monokai" # Theme: "monokai" (warm) | "nord" (cool)
keymap = "default" # Keymap: "default" | "vim"
show_status_bar = true # Toggle bottom status bar
row_batch_size = 1000 # Query result batch loading size
max_display_rows = 10000 # Caps rows stored in results view
[engine]
default_timeout_seconds = 60.0 # Soft limit for query runs
max_history_entries = 1000 # Max CLI query history entries
pool_size = 5 # Connection pool size
[plugins]
enabled = [] # Allowlist (empty loads all discovered)
disabled = [] # Blocklist
Environment Overrides
Any configuration value can be overridden via environment variables using the pattern TERIDEX_<SECTION>__<FIELD>.
Examples:
# Override the UI theme
export TERIDEX_UI__THEME="nord"
# Override keymap to vim
export TERIDEX_UI__KEYMAP="vim"
🤝 Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
🔐 Security
If you discover a security vulnerability, please see our Security Policy.
📝 License
Distributed under the MIT License. See LICENSE for more information.
Author: Salvatore Corvaglia
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file teridex-0.7.0.tar.gz.
File metadata
- Download URL: teridex-0.7.0.tar.gz
- Upload date:
- Size: 159.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
551139a4d9fee79cc2682f67f89ed9f3e9e0646e47a266399db08c34106b437a
|
|
| MD5 |
565103b7756b5c53273b15520332536d
|
|
| BLAKE2b-256 |
50614cd9b6d29fe82f5274e8fd5fef55f8798d876c9f7e981fd7c919e86c29e4
|
Provenance
The following attestation bundles were made for teridex-0.7.0.tar.gz:
Publisher:
release.yml on salvatorecorvaglia/teridex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
teridex-0.7.0.tar.gz -
Subject digest:
551139a4d9fee79cc2682f67f89ed9f3e9e0646e47a266399db08c34106b437a - Sigstore transparency entry: 2256993645
- Sigstore integration time:
-
Permalink:
salvatorecorvaglia/teridex@488cb227c7275c13416cd9aaea0c4efc1be6cbb7 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/salvatorecorvaglia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@488cb227c7275c13416cd9aaea0c4efc1be6cbb7 -
Trigger Event:
push
-
Statement type:
File details
Details for the file teridex-0.7.0-py3-none-any.whl.
File metadata
- Download URL: teridex-0.7.0-py3-none-any.whl
- Upload date:
- Size: 89.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51cd9647cd3b003fb23beec231b955d87b6b5c3994a0fc5592a4b145474ffbb3
|
|
| MD5 |
3a35a18d39e11ead57ba338b446d6009
|
|
| BLAKE2b-256 |
f230045139979b331540b207f53fafeddc9442bd467169c1b758ee28410b31bb
|
Provenance
The following attestation bundles were made for teridex-0.7.0-py3-none-any.whl:
Publisher:
release.yml on salvatorecorvaglia/teridex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
teridex-0.7.0-py3-none-any.whl -
Subject digest:
51cd9647cd3b003fb23beec231b955d87b6b5c3994a0fc5592a4b145474ffbb3 - Sigstore transparency entry: 2256993656
- Sigstore integration time:
-
Permalink:
salvatorecorvaglia/teridex@488cb227c7275c13416cd9aaea0c4efc1be6cbb7 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/salvatorecorvaglia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@488cb227c7275c13416cd9aaea0c4efc1be6cbb7 -
Trigger Event:
push
-
Statement type: