Skip to main content

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.7bfacultatif, 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 ui embarque déjà tout ce qu'il faut — pas besoin de [http] séparément. Sans l'extra [desktop], lance teambrain ui --browser pour 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 add crée un ADR vide à remplir manuellement (fichier Markdown dans .decisions/)
  • teambrain ui affiche la page de création sans le champ "Générer un brouillon"
  • teambrain search effectue une recherche texte brute
  • teambrain scan-commits --no-ai retourne 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 ADR
  • get_decision — récupère un ADR par ID
  • list_decisions — liste tous les ADR
  • get_context_for_file — ADR liés à un fichier (via module_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

teambrain-1.0.0.tar.gz (390.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

teambrain-1.0.0-py3-none-any.whl (318.7 kB view details)

Uploaded Python 3

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

Hashes for teambrain-1.0.0.tar.gz
Algorithm Hash digest
SHA256 dbc57ccee5b2194a0ace75b213573e89c12a38bc87b73caffbe902e623136fa3
MD5 55d53fc3059e75ea5d0d37a79705f79d
BLAKE2b-256 59116b82985a2728f6138ab2a7f694494a3a662a867952a10be66d72e8ead5b9

See more details on using hashes here.

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

Hashes for teambrain-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ce50c134d151604a6792f3510cf4af145e6f4c73f8e69eaf95f20605af89be57
MD5 d1de52afb5d957041c8fdc50577896e1
BLAKE2b-256 ea979f07a1fc62df55d7399bf56d84b30b2bdbaf72ba7d083fdf2d57da5833d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page