Dolphie
Your single pane of glass for real-time analytics into MySQL/MariaDB & ProxySQL
Install / Use
/learn @charles-001/DolphieREADME
Dolphie
<p align="center"> <img src="https://user-images.githubusercontent.com/13244625/187600748-19d2ad15-42e8-4f9c-ada5-a153cdcf4070.png" width="120"><br> Your single pane of glass for real-time analytics into MySQL/MariaDB & ProxySQL<br><br> <img src="https://github.com/charles-001/dolphie/assets/13244625/88a41290-f52c-4b8e-97f8-3b7ef5096eae" width="30"> <img src="https://github.com/charles-001/dolphie/assets/13244625/1d94502a-9abf-4436-a7d0-cb2b08c105c1" width="30"> <img src="https://github.com/charles-001/dolphie/assets/13244625/9b1aadc8-cabb-4256-92f9-fe4d04451b83" width="30"> </p>Installation
Requires Python 3.9+
Using PyPi
$ pip install dolphie
Using Poetry
$ curl -sSL https://install.python-poetry.org | python3 -
$ poetry install
Using Homebrew
If you are a Homebrew user, you can install dolphie via
$ brew install dolphie
Using Docker
$ docker pull ghcr.io/charles-001/dolphie:latest
$ docker run -dit --name dolphie ghcr.io/charles-001/dolphie:latest
$ docker exec -it dolphie dolphie --tab-setup
Usage
positional arguments:
uri Use a URI string for credentials (mysql/proxysql) - format: mysql://user:password@host:port (port is optional with default 3306, or 6032 for ProxySQL)
options:
--help show this help message and exit
--tab-setup Start Dolphie by showing the Tab Setup modal instead of automatically connecting with the specified options
-C , --cred-profile Credential profile to use. See below for more information
-u , --user Username
-p , --password Password
-h , --host Hostname/IP address
-P , --port Port (socket has precedence)
-S , --socket Socket file
-c , --config-file Dolphie's config file to use. Options are read from these files in the given order: ['/etc/dolphie.cnf', '/etc/dolphie/dolphie.cnf', '~/.dolphie.cnf']
-m , --mycnf-file MySQL config file path to use. This should use [client] section [default: ~/.my.cnf]
-l , --login-path Specify login path to use with mysql_config_editor's file ~/.mylogin.cnf for encrypted login credentials [default: client]
-r , --refresh-interval
The time, in seconds, between each data collection and processing cycle [default: 1]
--host-cache-file Resolve IPs to hostnames when your DNS is unable to. Each IP/hostname pair should be on its own line using format ip=hostname [default: ~/dolphie_host_cache]
--tab-setup-file Specify location of file that stores the available hosts to use in Tab Setup modal [default: ~/dolphie_hosts]
--heartbeat-table (MySQL only) If your hosts use pt-heartbeat, specify table in format db.table to use the timestamp it has for replication lag instead of Seconds_Behind_Master from SHOW REPLICA STATUS
--ssl-mode Desired security state of the connection to the host. Supports: REQUIRED/VERIFY_CA/VERIFY_IDENTITY [default: OFF]
--ssl-ca Path to the file that contains a CA (certificate authority)
--ssl-cert Path to the file that contains a certificate
--ssl-key Path to the file that contains a private key for the certificate
--panels What panels to display on startup separated by a comma. Supports: ['dashboard', 'processlist', 'graphs', 'replication', 'metadata_locks', 'ddl', 'pfs_metrics', 'statements_summary', 'proxysql_hostgroup_summary', 'proxysql_mysql_query_rules', 'proxysql_command_stats'], [default: ['dashboard', 'processlist']]
--graph-marker What marker to use for graphs (available options: https://tinyurl.com/dolphie-markers) [default: braille]
--pypi-repo What PyPi repository to use when checking for a new version default: [https://pypi.org/pypi/dolphie/json]
-H , --hostgroup This is used for creating tabs and connecting to them for hosts you specify in Dolphie's config file under a hostgroup section. As an example, you'll have a section called [cluster1] then below it you will list each host on a new line in the format key=host (keys have no meaning). Hosts support optional port (default is whatever port parameter is) in the format host:port. You can also name the tabs by suffixing ~tab_name to the host (i.e. 1=host~tab_name)
-R, --record Enables recording of Dolphie's data to a replay file. Note: This can use significant disk space. Monitor accordingly!
-D, --daemon Starts Dolphie in daemon mode. This will not show the TUI and is designed be put into the background with whatever solution you decide to use. Automatically enables --record. This mode is solely used for recording data to a replay file
--daemon-log-file Full path of the log file for daemon mode
--daemon-panels Which panels to run queries for in daemon mode separated by a comma. This can control significant load if the queries are responsible. Dashboard/Replication panels cannot be turned off. Supports: ['processlist', 'metadata_locks', 'pfs_metrics', 'statements_summary', 'proxysql_hostgroup_summary'], [default: ['processlist', 'metadata_locks', 'pfs_metrics']]
--replay-file Specify the full path of the replay file to load and enable replay mode
--replay-dir Directory to store replay data files
--replay-retention-hours
Number of hours to keep replay data. Data will be purged every hour [default: 48]
--exclude-notify-vars
Dolphie will let you know when a global variable has been changed. If you have variables that change frequently and you don't want to see them, you can specify which ones with this option separated by a comma (i.e. --exclude-notify-vars=variable1,variable2)
--show-trxs-only (MySQL only) Start with only showing threads that have an active transaction
--additional-columns Start with additional columns in Processlist panel
--debug-options Display options that are set and what they're set by (command-line, dolphie config, etc) then exit. WARNING: This will show passwords and other sensitive information in plain text
-V, --version Display version and exit
Order of precedence for methods that pass options to Dolphie:
1. Command-line
2. Credential profile (set by --cred-profile)
3. Environment variables
4. Dolphie's config (set by --config-file)
5. ~/.mylogin.cnf (mysql_config_editor)
6. ~/.my.cnf (set by --mycnf-file)
Credential profiles can be defined in Dolphie's config file as a way to store credentials for easy access.
A profile can be created by adding a section in the config file with the format: [credential_profile_<name>]
When using a credential profile, do not include the prefix 'credential_profile' (i.e. -C production)
The following options are supported in credential profiles:
user
password
socket
ssl_mode REQUIRED/VERIFY_CA/VERIFY_IDENTITY
ssl_ca
ssl_cert
ssl_key
mycnf_file
login_path
MySQL my.cnf file supports these options under [client] section:
host
user
password
port
socket
ssl_mode REQUIRED/VERIFY_CA/VERIFY_IDENTITY
ssl_ca
ssl_cert
ssl_key
Login path file supports these options:
host
user
password
port
socket
Environment variables support these options:
DOLPHIE_USER
DOLPHIE_PASSWORD
DOLPHIE_HOST
DOLPHIE_PORT
DOLPHIE_SOCKET
DOLPHIE_SSL_MODE REQUIRED/VERIFY_CA/VERIFY_IDENTITY
DOLPHIE_SSL_CA
DOLPHIE_SSL_CERT
DOLPHIE_SSL_KEY
Dolphie's config supports these options under [dolphie] section:
(bool) tab_setup
(str) credential_profile
(str) user
(str) password
(str) host
(int) port
(str) socket
(str) ssl_mode
(str) ssl_ca
(str) ssl_cert
(str) ssl_key
(str) mycnf_file
(str) login_path
(str) host_cache_file
(str) tab_setup_file
(int) refresh_interval
(str) heartbeat_table
(comma-separated str) startup_panels
(str) graph_marker
(str) pypi_repository
(str) hostgroup
(bool) show_trxs_only
(bool) show_additional_query_columns
(bool) record_for_replay
(bool) daemon_mode
(comma-separated str) daemon_mode_panels
(str) daemon_mode_log_file
(str) replay_file
(str) replay_dir
(int) replay_retention_hours
(comma-separated str) exclude_notify_global_vars
Supported MySQL versions
- MySQL/Percona Server 5.6/5.7/8.x/9.x
- AWS RDS/Aurora
- Azure MySQL
Supported MariaDB versions
- MariaDB 5.5/10.0/11.0+
- AWS RDS
- Azure MariaDB
Supported ProxySQL versions
- ProxySQL 2.6+ (could work on previous versions but not tested)
Note: Use admin user instead of stats user so you can use all features
MySQL Grants required
Least privilege
- PROCESS (only if you switch to using processlist via
Pcommand) - SELECT to
performance_schema+pt-heartbeat table(if used) - REPLICATION CLIENT/REPLICATION SLAVE
Recommended
- PROCESS (only if you switch to using processlist via
Pcommand) - Global SELECT access (good for explaining queries, listing all databases, etc)
- REPLICATION CLIENT/REPLICATION SLAVE
- SUPER (required if you want to kill queries)
Record & Replay
Dolphie is capable of recording your live session data that can be used in a future replay if needed. To begin recording, specify the --record option along with --replay-dir and you're good to go! The data will be saved in a SQLite database compressed with ZSTD for efficient storage management.
To view a replay from either a live session or daemon mode, specify the --replay-file option or bring up the Tab Setup modal. Replays enable you to navigate through the recorded data as if you were observing Dolphie in
Related Skills
tmux
341.8kRemote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
claude-opus-4-5-migration
84.6kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
model-usage
341.8kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
blogwatcher
341.8kMonitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
