Mémoire décisionnelle d'équipe, git-native. CLI + interface web + serveur MCP pour capturer, indexer et consulter les ADR depuis n'importe quel agent IA.
Project description
TeamBrain
Mémoire décisionnelle d'équipe, git-native.
TeamBrain capture et retrouve les décisions d'architecture (ADR) directement dans ton repo git — avec une interface web, un serveur MCP pour les agents IA, et un bot Slack optionnel.
pip install teambrain
teambrain init
teambrain ui
Pourquoi TeamBrain ?
Les décisions d'architecture se perdent dans Slack, les PR, les réunions. Six mois plus tard, personne ne sait pourquoi on a choisi telle bibliothèque ou abandonnée telle approche.
TeamBrain stocke ces décisions en Markdown versionné dans .decisions/ — dans le repo git lui-même. Pas de service externe, pas de base de données à maintenir.
Ce que ça fait
- CLI — créer, lister, rechercher, afficher les ADR depuis le terminal
- Interface web — lire et créer des ADR sans passer par le terminal (pour les chefs de projet, designers, PO)
- Brouillons IA — génération automatique via Ollama (facultatif)
- Serveur MCP — expose les ADR aux agents IA (Claude, Cursor, Cline…)
- Scanner git/code — détecte les décisions implicites dans les commits et commentaires
- Bot Slack — capture les décisions prises en réunion Slack, propose un ADR à valider (optionnel)
Prérequis
- Python 3.13+
- Ollama avec
qwen3:1.7b— facultatif, pour la génération de brouillons et la recherche sémantique
Sans Ollama : teambrain add, teambrain search et teambrain ui fonctionnent, mais sans brouillon automatique ni recherche sémantique.
Installation
Core (CLI + interface web + MCP) :
pip install teambrain
Avec une fenêtre native (PyWebView, recommandé pour teambrain ui) :
pip install "teambrain[desktop]"
Avec le bot Slack :
pip install "teambrain[bot]"
Avec les dépendances HTTP (si tu utilises teambrain serve --http seul) :
pip install "teambrain[http]"
teambrain uiembarque déjà tout ce qu'il faut — pas besoin de[http]séparément. Sans l'extra[desktop], lanceteambrain ui --browserpour ouvrir dans le navigateur système.
Démarrage rapide
# 1. Initialise TeamBrain dans le repo courant
teambrain init
# 2. Lance l'interface web (API + UI dans le navigateur)
teambrain ui
# 3. Ou crée un ADR depuis le terminal
teambrain add "Choix de SQLite plutôt que PostgreSQL"
teambrain init crée .decisions/ et met à jour .gitignore automatiquement.
CLI — Commandes
Gestion des ADR
teambrain add "Titre de la décision" # nouvel ADR (brouillon Ollama si disponible)
teambrain list # liste tous les ADR
teambrain show 3 # affiche l'ADR #003
teambrain search "JWT" # recherche texte
Recherche sémantique
teambrain index # indexe les ADR dans sqlite-vec
teambrain search "authentification" # recherche plein texte
Interface web
teambrain ui # fenêtre native PyWebView (port 8003)
teambrain ui --browser # ouverture dans le navigateur système
teambrain ui --repo /chemin/vers/repo # repo spécifique
teambrain ui --repo /repo1 --repo /repo2 # multi-projets
teambrain ui --base /dossier/projets # tous les repos du dossier
Serveur MCP (agents IA)
teambrain serve # serveur MCP stdio
teambrain setup # configure Claude Code et Cursor automatiquement
Scanner git/code
teambrain scan-commits # scanne les commits récents (7 derniers jours)
teambrain scan-commits --depuis 1m # 1 mois d'historique
teambrain scan-commits --semantic # comparaison sémantique avec l'index ADR
teambrain scan-commits --no-ai # sans scoring Ollama (plus rapide)
teambrain scan-code # scanne les marqueurs DECISION:, ADR: dans le code
Bot Slack
teambrain setup slack # assistant de configuration (génère l'app manifest)
teambrain bot # lance le bot
teambrain bot --check # vérifie les tokens et la présence dans les canaux
Interface web
teambrain ui ouvre http://localhost:8003 dans le navigateur.
Fonctionnalités :
- Liste paginée des ADR avec filtres (statut, module)
- Vue détail en Markdown rendu
- Création guidée : titre → contexte → décision → conséquences (brouillon Ollama si disponible)
- Recherche plein texte
Accès équipe : le tech lead lance teambrain ui, les collègues accèdent via l'IP locale ou un SSH forward. Aucune authentification — réseau local de confiance.
Sans Ollama
TeamBrain fonctionne sans Ollama. Dans ce cas :
teambrain addcrée un ADR vide à remplir manuellement (fichier Markdown dans.decisions/)teambrain uiaffiche la page de création sans le champ "Générer un brouillon"teambrain searcheffectue une recherche texte bruteteambrain scan-commits --no-airetourne les candidats bruts sans scoring
Pour installer Ollama et les modèles requis :
# macOS
brew install ollama
ollama pull qwen3:1.7b # génération de brouillons
ollama pull qwen3-embedding:0.6b # recherche sémantique (teambrain index)
Multi-projets
Surveiller plusieurs repos depuis une seule interface :
# Deux repos explicites
teambrain ui --repo /projets/backend --repo /projets/frontend
# Tous les repos d'un dossier (auto-détection des .decisions/)
teambrain ui --base /projets/
L'interface web affiche un sélecteur de projet en haut à gauche.
Configuration
TeamBrain se configure via .decisions/.teambrain.json :
{
"model": "qwen3:1.7b",
"embedding_model": "qwen3-embedding:0.6b",
"module_mappings": {
"src/auth/": "auth",
"src/api/": ["api", "http"],
"src/models/": "core"
},
"commit_patterns": [
"migrer",
"remplacer .+ par",
"architecture"
],
"code_patterns": [
"CHOIX_ARCHI:"
],
"chat": {
"channels": ["#architecture", "#decisions"],
"confidence_threshold": 0.7
}
}
| Clé | Défaut | Description |
|---|---|---|
model |
qwen3:1.7b |
Modèle Ollama pour la génération de brouillons |
embedding_model |
qwen3-embedding:0.6b |
Modèle Ollama pour les embeddings |
module_mappings |
{} |
Mapping chemin → modules ADR (voir EXAMPLE_CONFIG.md) |
commit_patterns |
[] |
Patterns regex supplémentaires pour scan-commits |
code_patterns |
[] |
Patterns regex supplémentaires pour scan-code |
chat.channels |
[] |
Canaux Slack à surveiller |
chat.confidence_threshold |
0.7 |
Seuil de confiance pour la détection (0-1) |
Voir EXAMPLE_CONFIG.md pour les cas avancés (multi-modules, patterns regex, fallback).
Intégration MCP (agents IA)
TeamBrain expose les ADR via le Model Context Protocol — les agents IA peuvent interroger la mémoire décisionnelle du repo.
Configuration automatique :
teambrain setup # configure Claude Code (~/.claude.json) et Cursor (.cursor/mcp.json)
Configuration manuelle (Claude Code) — dans ~/.claude.json :
{
"mcpServers": {
"teambrain": {
"command": "teambrain",
"args": ["serve"],
"cwd": "/chemin/vers/ton/repo"
}
}
}
Outils MCP disponibles :
search_decisions— recherche dans les ADRget_decision— récupère un ADR par IDlist_decisions— liste tous les ADRget_context_for_file— ADR liés à un fichier (viamodule_mappings)
Bot Slack (optionnel)
Le bot écoute les canaux Slack, détecte les messages qui ressemblent à des décisions d'architecture, et propose au tech lead de créer un ADR via un DM avec boutons Block Kit.
Prérequis : pip install "teambrain[bot]" + un workspace Slack avec permissions admin.
Configuration en 3 étapes :
# 1. Génère l'app manifest Slack
teambrain setup slack
# 2. Colle le manifest sur api.slack.com → Create New App → From an app manifest
# 3. Récupère les tokens et configure les variables d'env
export SLACK_BOT_TOKEN="xoxb-..."
export SLACK_APP_TOKEN="xapp-..."
export TEAMBRAIN_LEAD="U0XXXXXXX" # ton ID utilisateur Slack
# 4. Vérifie la configuration
teambrain bot --check
# 5. Lance le bot
teambrain bot
Variables optionnelles (création de PR automatique) :
export GITHUB_TOKEN="ghp-..."
export GITHUB_REPO="organisation/repo"
Format ADR
Les ADR sont des fichiers Markdown avec frontmatter YAML dans .decisions/ :
---
id: 1
titre: Choix de SQLite plutôt que PostgreSQL
date: 2026-05-20
statut: accepte # accepte | propose | deprecie | remplace
modules: [core, data]
decideurs: [alice, bob]
---
## Contexte
Application desktop mono-utilisateur, zéro infrastructure à maintenir.
## Décision
On utilise SQLite. Zéro service, fichier unique, suffisant pour <100k lignes.
## Conséquences
- Pas de requêtes concurrentes multi-process
- Migration vers PostgreSQL possible si besoin multi-utilisateurs
Les fichiers sont versionnés avec git — l'historique et les git blame sont disponibles naturellement.
Développement
git clone https://github.com/OnyxynO/teambrain
cd teambrain
pip install -e ".[dev,http,bot]"
pytest # 107 tests
# Interface web (développement)
cd teambrain-web
bun install
bun run dev # http://localhost:3003
# Rebuilder le frontend statique (avant pip install en prod)
bash scripts/build_frontend.sh
Licence
MIT
Project details
Release history Release notifications | RSS feed
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 teambrain-1.0.0.tar.gz.
File metadata
- Download URL: teambrain-1.0.0.tar.gz
- Upload date:
- Size: 390.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbc57ccee5b2194a0ace75b213573e89c12a38bc87b73caffbe902e623136fa3
|
|
| MD5 |
55d53fc3059e75ea5d0d37a79705f79d
|
|
| BLAKE2b-256 |
59116b82985a2728f6138ab2a7f694494a3a662a867952a10be66d72e8ead5b9
|
File details
Details for the file teambrain-1.0.0-py3-none-any.whl.
File metadata
- Download URL: teambrain-1.0.0-py3-none-any.whl
- Upload date:
- Size: 318.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce50c134d151604a6792f3510cf4af145e6f4c73f8e69eaf95f20605af89be57
|
|
| MD5 |
d1de52afb5d957041c8fdc50577896e1
|
|
| BLAKE2b-256 |
ea979f07a1fc62df55d7399bf56d84b30b2bdbaf72ba7d083fdf2d57da5833d5
|