Hébergement web d'outils, partagés et installés sous forme de plugins. Même socle,
même charte et même i18n que Bobi.Studio — un utilisateur de l'un se retrouve
immédiatement sur l'autre — mais des fonctions différentes : chaque outil (pilotage de
switch, explorateur d'API, utilitaires…) arrive au fil du temps comme un paquet .bobitool
qu'on dépose à la demande.
Un outil est un dossier dans plugins/<type>/ avec un manifeste plugin.json et une UI.
Le manifeste déclare son runtime :
inprocess— l'outil tourne dans l'application : front-pur, ou avec un petitbackend.pyPython chargé en process. Idéal pour les utilitaires légers.docker— l'outil tourne dans un conteneur Docker isolé (dépendances bundlées). L'app sert son UI et proxifie les appels vers le conteneur. Idéal pour les outils réseau/lourds ou nécessitant des secrets côté serveur.
Quel que soit le runtime, l'UI parle toujours à /api/tools/<type>/<path> — elle ignore
où tourne la logique.
En une ligne, sur une Debian ou une Ubuntu vierge (en root) :
bash <(curl -fsSL https://raw.githubusercontent.com/bob-integration/bobitools/main/get.sh)Le script installe ce qui manque (git, python3-venv, et Docker si vous l'acceptez), clone le
cœur de Bobi.Tools dans /opt/bobitools, installe les outils de votre choix (tous, aucun ou
une liste), démarre le service, puis indique l'adresse de l'assistant de premier accès.
Options : --dir, --ref, --outils tous|aucun|switch_ports,notes, --docker / --no-docker,
-y (cf. get.sh --help).
Ajouter ou mettre à jour un outil : Réglages → Outils → Catalogue. Il liste les outils et
services publiés sur GitHub (dépôts bobitools-plugin-* et bobitools-service-*), avec leur
version, leurs nouveautés et leurs dépendances. En ligne de commande :
./venv/bin/python tools/catalogue.py liste | installe <outil…|tous>.
À la main :
Chaque plugin et chaque service est un dépôt séparé, agrégé ici en submodule git
(cf. .gitmodules) — comme Bobi.Studio. Cloner avec les submodules :
git clone --recurse-submodules https://github.com/bob-integration/bobitools /opt/bobitools
cd /opt/bobitools
bash install.sh # init submodules + venv + dépendances + service (+ Docker)
./venv/bin/python tools/create_admin.py # (ou via l'assistant /setup au 1er accès web)
systemctl start bobitools # ou : ./venv/bin/python main.pySur un clone existant sans submodules : git submodule update --init --recursive
(fait automatiquement par install.sh). Accès : http://<hôte>:5000.
main.py ← point d'entrée Flask (port 5000) + backup quotidien
app/ ← socle : routes, plugins (registre d'outils), auth, settings, i18n,
database, backup, docker_driver, deploy (cycle de vie conteneur)
templates/ ← layout, login, home (lanceur), tool_section (test), tool_focus (plein
écran bookmarkable), settings, aide
static/ ← scripts.js (SDK window.BT), css/ (base, nav, themes, tools), uploads/
plugins/<type>/ ← UN SUBMODULE PAR OUTIL (bobitools-plugin-<type> : notes, switch_ports…)
services/<id>/ ← UN SUBMODULE PAR SERVICE (bobitools-service-<id> : emberplus)
i18n/ ← catalogues fr.json / en.json (clés cœur)
tools/ ← create_admin.py, build_dist.py
Les plugins/services ne sont plus dans ce dépôt : ils vivent dans
bob-integration/bobitools-plugin-<type> et bobitools-service-<id>, versionnés et
distribués indépendamment. Le builder (tools/build_dist.py) et l'updater agrègent les
fichiers présents sur disque (un submodule initialisé est un dossier normal).
/— lanceur : cartes des outils accessibles, groupées par section./t/<type>— vue focus (bookmarkable) : l'outil en plein écran, chrome minimal./tools/<section>— mode test : onglets pour basculer entre outils d'une section.
Trois rôles — admin / operator / viewer (permissions tools.manage / tools.use /
settings.edit) — plus un contrôle d'accès par outil (qui peut ouvrir quoi) et un
journal d'audit par outil (qui a fait quoi). Réglages → Plugins / Journal.
Voir Aide dans l'app, et plugins/switch_ports/help.md (gabarit Docker complet).
Le minimum : plugin.json + page.html + page.js (window.BTTools["<type>"] = { mount(el, ctx), unmount() }). Voir plugins/notes/ (front-pur) et
plugins/api_explorer/ (avec backend.py).
Copyright (C) 2026 BOBI SAS, France — Auteur : Cyril Mazouer, pour le compte de BOBI SAS.
Logiciel libre sous GNU GPL v3 (ou ultérieure) ; voir LICENSE.
Développé avec l'assistance de Claude (Anthropic) comme outil de génération de code, sous la direction et la supervision de Cyril Mazouer.