Outil CLI
achristmascarl/rainfrog avatar
achristmascarl/rainfrog

rainfrog : un client de base de données pour le terminal

un outil de base de données pour le terminal. en théorie, le pilote mysql devrait pouvoir faire de même pour les bases de données prenant en charge le protocole mysql.

5 332 étoiles95 forksRustMIT

En bref

De quoi s’agit-il ?
Outil Rust de gestion de bases de données via interface terminale avec navigation vim, éditeur de requêtes et support échelonné de PostgreSQL, MySQL, SQLite, Redshift, DuckDB et Oracle.
À qui s’adresse-t-il ?
rainfrog offre une alternative terminale compacte aux outils graphiques, mais reste en version bêta active. Le README déclare explicitement que des modifications sans rétrocompatibilité sont attendues et qu'une utilisation en écriture sur des bases de production est fortement déconseillée.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 22 jours.
En quel langage est-il écrit ?
Principalement Rust, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Positionnement et état de développement

rainfrog est un outil de gestion de bases de données conçu pour le terminal, écrit en Rust et distribué sous licence MIT. Le dépôt achristmascarl/rainfrog affiche actuellement 5 299 étoiles et 96 forks. Le README qualifie rainfrog de « outil léger basé sur terminal pour interagir avec des bases de données ». Le texte du README inclut cependant un avertissement explicite : le logiciel est actuellement en développement actif, des changements non rétrocompatibles doivent être anticipés, et il n'est pas recommandé d'utiliser cet outil avec accès en écriture sur une base de données de production. Cette avertissement établit clairement le statut de bêta actif du projet. Le README ne fournit ni date de sortie d'une version stable ni feuille de route détaillée pour la stabilisation. Les trois releases les plus récentes (v0.4.5, v0.4.4, v0.4.3) datent d'août 2026, suggérant un cycle de publication toutes les une à deux semaines.

Architecture de l'interface et fonctionnalités principales

L'interface terminale de rainfrog combine plusieurs panneaux distincts. Le menu affiche les schémas et tables disponibles. L'éditeur de requêtes incorpore la coloration syntaxique des mots-clés SQL, un historique de session et une section favoris pour les requêtes enregistrées. Le panneau de résultats affiche les lignes retournées. Un panneau d'historique séparé trace toutes les requêtes exécutées dans la session courante. La navigation repose principalement sur des raccourcis clavier de type vim et supporte aussi les entrées souris pour le changement de focus et le défilement, bien que le README précise que l'éditeur lui-même ne gère pas les clics souris directs. Les fonctionnalités documentées incluent la copie rapide de données, le filtrage de tables, le basculement entre schémas et l'accès aux métadonnées et propriétés des tables via des raccourcis. Le README ne décrit pas la taille minimale de terminal requise, l'usage mémoire typique ni les performances attendues avec des résultats volumineux.

Prise en charge des bases de données en quatre niveaux

Les bases de données supportées sont classées en quatre niveaux. Tier 1 (prioritaire) : PostgreSQL, la base la plus fréquemment testée avec correction rapide des bugs. Tier 2 (courant) : MySQL, SQLite et Redshift, souvent testés et corrigés si nécessaire. Tier 3 (communautaire) : DuckDB, supporté principalement par la communauté avec développement minimal du projet. Tier 4 (expérimental) : Oracle, nouveau et instable, avec comportement sujet à changement. Le README précise que le pilote PostgreSQL peut théoriquement se connecter à d'autres bases supportant le protocole filaire PostgreSQL, comme AWS Redshift, mais que cette capacité n'est pas bien testée. De même, le pilote MySQL devrait en théorie supporter les bases du protocole MySQL, mais l'intégration reste peu vérifiée. Le README note que les binaires DuckDB précompilés et les binaires musl ne contiennent pas ce pilote, et Oracle requiert des dépendances d'exécution supplémentaires via la bibliothèque ODPI-C.

Méthodes d'installation et dépendances

L'installation se fait via plusieurs canaux. Les utilisateurs Rust exécutent `cargo install rainfrog --locked` ; cargo-binstall accélère le processus. Homebrew fournit une installation simplifiée sur macOS et Linux. Les utilisateurs d'Arch Linux emploient `pacman -S rainfrog`. Nix, Conda et Pixi offrent des chemins spécifiques à ces gestionnaires de paquets. Sur Termux, après installation de Rust via `pkg install rust`, la commande devient `cargo install rainfrog --no-default-features` pour éviter les dépendances incompatibles. Un script d'installation télécharge un binaire précompilé depuis la page de release dans ~/.local/bin/. Les utilisateurs peuvent aussi télécharger les binaires manuellement depuis la page de release de GitHub. Une image Docker pré-configurée supporte PostgreSQL, MySQL et SQLite natifs, mais exclut les pilotes avec dépendances externes comme Oracle. Le README recommande une Nerd Font pour afficher correctement les icônes de l'interface.

Configuration de connexion et variables d'environnement

rainfrog accepte les paramètres de connexion via trois canaux hiérarchisés. Les options de ligne de commande prennent priorité : `--driver`, `--username`, `--host`, `--port`, `--database`, `--ssl-required`. Si certaines options manquent, rainfrog demande une saisie interactive puis se rabat sur les variables d'environnement. La variable `DATABASE_URL` est vérifiée avant les fichiers `.env` du répertoire courant ou parent. La syntaxe d'URL de connexion varie par base de données : postgres://user@host/db, mysql://user@host/db, etc. Le paramètre `--ssl-required` remplace le paramètre de transport de l'URL, sélectionnant le mode `require` pour PostgreSQL, `required` pour MySQL, ou `tcps` pour Oracle. SQLite et DuckDB ne supportent pas SSL/TLS. Une URL de connexion compète remplace les options individuelles. Le README ne documente pas les timeouts de connexion par défaut ni les limites de tentatives de reconnexion.

Configuration, raccourcis personnalisés et exportation

La configuration se fait via un fichier `rainfrog_config.toml` situé dans le répertoire de configuration propre à la plateforme (remplaçable via `RAINFROG_CONFIG`). Les paramètres incluent la capture souris, les largeurs de colonnes dynamiques, l'espacement des lignes, le comportement de l'autocomplétion et les paires de caractères qui se ferment automatiquement. Les connexions de base de données nommées peuvent être définies comme entrées TOML avec une URL ou des champs individuels, établissant une liste de profils de connexion sauvegardés. Les raccourcis clavier sont partiellement personnalisables ; le fichier de configuration par défaut liste ceux modifiables pour le menu, l'éditeur, l'historique, les favoris et les résultats. Les favoris sont enregistrés sous forme de fichiers .sql individuels dans le répertoire de données de l'application, surcharge possible via `RAINFROG_FAVORITES`. Les résultats de requête s'exportent en CSV via la touche `P` depuis la vue des résultats ; le fichier écrit dans le répertoire de téléchargement de la plateforme ou dans le chemin défini par `RAINFROG_EXPORT`. Le README avertit que l'exportation est bloquante et peut figer l'application avec de très grandes sélections.

Limitations connues et plate-formes supportées

Le README énumère plusieurs limitations connues. Aucun support des types géométriques n'est documenté. Sur X11 et Wayland, le yank (copie) ne copie que dans le tampon interne de l'éditeur de requêtes, pas dans le presse-papiers système de l'ordinateur. La sélection en mode visuel diffère du comportement vim standard. L'éditeur lui-même n'accepte pas les entrées souris, seulement le changement de focus et le défilement au niveau global. Les plates-formes supportées incluent macOS, Linux, Windows et Android via Termux, chacun avec des nuances de support des dépendances de runtime. Le README ne documente ni les exigences en termes de RAM, ni les limites de taille de dataset supportées, ni les benchmarks de performance de requête.

Licence MIT et contributions

rainfrog est distribué sous licence MIT, copyright 2024 Carl Liu. La licence autorise l'utilisation, la copie, la modification, la fusion, la publication et la distribution du logiciel, y compris la sous-licence et la vente de copies, à condition de conserver l'avis de droit d'auteur et le texte de licence. La licence stipule explicitement que le logiciel est fourni « tel quel » sans aucune garantie de quelque nature que ce soit. Le README invite à contribuer via pull requests et issues GitHub, mais ne précise ni les délais d'examen ni l'engagement de maintenance. Le dépôt affiche 14 issues ouvertes au moment du relevé sans détails sur leur priorité ou leur ancienneté. La page crates.io liste rainfrog sous le nom de package Rust standard. Aucun accord de niveau de service, aucune promesse de support ou aucun calendrier de développement n'accompagnent l'engagement du projet.

Conclusion éditoriale

rainfrog offre une alternative terminale compacte aux outils graphiques, mais reste en version bêta active. Le README déclare explicitement que des modifications sans rétrocompatibilité sont attendues et qu'une utilisation en écriture sur des bases de production est fortement déconseillée. Le support échelonné par base de données (PostgreSQL tier 1, MySQL tier 2, Oracle tier 4) signifie que la stabilité varie. Les utilisateurs de base de données majeure et désirant des raccourcis clavier vim trouveront rainfrog pragmatique, à condition d'accepter les limitations de bêta et de tester en environnement non-critique avant adoption plus large.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté