> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration du token GitHub

> Documentation de configuration du token GitHub pour AgentEye.

Un token d'accès personnel (PAT) GitHub est le seul identifiant nécessaire pour accéder à tous les artefacts AgentEye. Avec un seul token, vous pouvez récupérer les images Docker, télécharger les binaires de version et installer les wheels Python, sans connexion par composant ni secrets partagés à faire circuler. Tous les artefacts AgentEye sont distribués depuis l'organisation GitHub `agenteye-enterprise` ; une fois l'accès accordé à votre organisation, chaque développeur ou opérateur génère et renouvelle son propre token, ce qui garantit un accès traçable et révocable par personne.

Définissez le token comme variable d'environnement et identifiant Docker une fois par machine :

```bash theme={null}
export AGENTEYE_TOKEN=<your-github-pat>
echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin
```

> **Remarque sur le nom d'utilisateur :** GHCR ignore le nom d'utilisateur fourni à `docker login` et s'authentifie entièrement depuis le token, donc n'importe quelle valeur non vide fonctionne. Cette documentation utilise `-u x` par souci de concision ; les manifestes de déploiement qui créent un secret d'extraction d'image Kubernetes peuvent utiliser un nom d'utilisateur plus descriptif comme `agenteye-enterprise`. Les deux sont acceptés.

***

## Option A : Token classique (recommandée)

Un token classique est le choix le plus fiable pour AgentEye, car le flux `docker login` et d'extraction d'image de GHCR offre le support le plus large et le plus cohérent pour les tokens classiques. Deux portées couvrent tout ce dont vous avez besoin (extraction d'images et téléchargement d'assets de version), vous vous authentifiez une seule fois et pouvez avancer sans avoir à résoudre des problèmes de registre. L'une d'elles, `read:packages`, est véritablement en lecture seule ; l'autre, `repo`, est la seule portée classique qui accorde l'accès aux assets de version privés, et elle est délibérément large — GitHub la définit comme le contrôle total (lecture et écriture) des dépôts privés.

### 1. Créer le token

Accédez à **GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token (classic)**.

| Champ          | Valeur                                                                                                           |
| -------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Note**       | `agenteye-<nom-machine-ou-équipe>` (ex. : `agenteye-prod-server`)                                                |
| **Expiration** | Définissez une expiration adaptée à votre politique de sécurité ; 90 jours est une valeur par défaut raisonnable |

> **Remarque sur l'étiquette :** GitHub nomme ce champ **Note** pour les tokens classiques et **Token name** pour les tokens à portée fine. Ils ont le même objectif : un identifiant lisible par l'humain pour faciliter les audits et les révocations ultérieurs.

### 2. Sélectionner les portées

| Portée          | Raison                                                                                                                                                                                                                                                                                                                                                                    |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `read:packages` | Extraction des images Docker depuis `ghcr.io/agenteye-enterprise/` et téléchargement des assets de packages                                                                                                                                                                                                                                                               |
| `repo`          | Lecture du contenu des dépôts privés, des fichiers bruts et des assets de version depuis `agenteye-enterprise/releases`. Il s'agit de la portée GitHub large intitulée « Full control of private repositories » (lecture et écriture), et non d'une portée en lecture seule — c'est simplement la seule portée classique qui accorde l'accès aux assets de version privés |

Aucune autre portée n'est requise.

### 3. Générer et copier le token

Cliquez sur **Generate token** et copiez la valeur immédiatement ; elle n'est affichée qu'une seule fois. Stockez-la dans votre gestionnaire de secrets ou dans votre environnement.

***

## Option B : Token à portée fine

Les tokens à portée fine limitent l'accès à des dépôts et des permissions spécifiques, ce qui en fait l'option la plus stricte selon le principe du moindre privilège. Choisissez cette voie lorsque la politique de sécurité de votre organisation impose l'utilisation de tokens à portée fine.

> **Remarque :** Le support de GHCR pour les tokens à portée fine est moins cohérent que pour les tokens classiques. Si `docker login` ou `docker pull` échoue après avoir suivi ces étapes, revenez à un token classique (Option A).

### 1. Créer le token

Accédez à **GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token**.

| Champ                 | Valeur                                                                                                           |
| --------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Token name**        | `agenteye-<nom-machine-ou-équipe>` (ex. : `agenteye-prod-server`)                                                |
| **Expiration**        | Définissez une expiration adaptée à votre politique de sécurité ; 90 jours est une valeur par défaut raisonnable |
| **Resource owner**    | `agenteye-enterprise`                                                                                            |
| **Repository access** | **Only select repositories** → `agenteye-enterprise/releases`                                                    |

### 2. Définir les permissions du dépôt

Sous **Permissions → Repository permissions**, configurez :

| Permission   | Accès     |
| ------------ | --------- |
| **Contents** | Read-only |
| **Packages** | Read-only |

Toutes les autres permissions peuvent rester sur **No access**.

> **Remarque :** Si les images de conteneur (`ghcr.io/agenteye-enterprise/...`) sont publiées en tant que packages au niveau de l'organisation plutôt que liés à un dépôt, la connexion Docker peut échouer avec des permissions limitées au dépôt. Dans ce cas, ajoutez une permission au niveau de l'organisation : **Permissions → Organization permissions → Packages: Read-only**.

### 3. Ce que chaque permission accorde

| Permission          | Utilisée pour                                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| Contents: Read-only | Téléchargement de `docker-compose.yml`, des binaires de version et des wheels Python depuis `agenteye-enterprise/releases` |
| Packages: Read-only | Extraction des images Docker depuis `ghcr.io/agenteye-enterprise/`                                                         |

### 4. Générer et copier le token

Cliquez sur **Generate token** et copiez la valeur immédiatement ; elle n'est affichée qu'une seule fois. Stockez-la dans votre gestionnaire de secrets ou dans votre environnement.

***

## Renouvellement d'un token

Le renouvellement régulier des tokens maintient l'accès traçable et limite l'impact en cas de fuite d'un identifiant. Les tokens peuvent également expirer ou être révoqués à tout moment, ce qui fait du renouvellement la méthode courante pour rester authentifié. Pour renouveler :

1. Générez un nouveau token en suivant les étapes ci-dessus.
2. Mettez à jour `AGENTEYE_TOKEN` dans votre environnement ou gestionnaire de secrets.
3. Ré-authentifiez Docker : `echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin`
4. Révoquez l'ancien token dans GitHub → Settings → Developer settings → Personal access tokens, puis ouvrez la sous-page **Tokens (classic)** ou **Fine-grained tokens** correspondant au type du token et supprimez-le.

***

## Vérifier votre token

Confirmez que le token fonctionne avant de l'intégrer dans un déploiement, afin que les échecs d'authentification apparaissent ici plutôt qu'en cours de déploiement. Chaque commande teste l'une des portées mentionnées ci-dessus :

```bash theme={null}
# Packages scope - authenticate Docker against GHCR
echo $AGENTEYE_TOKEN | docker login ghcr.io -u x --password-stdin

# Contents scope - fetch a raw release file
curl -fsSL \
  -H "Authorization: token $AGENTEYE_TOKEN" \
  https://raw.githubusercontent.com/agenteye-enterprise/releases/main/docker-compose.yml \
  -o /tmp/agenteye-compose-check.yml
```

Un `docker login` réussi confirme la portée packages ; un fichier téléchargé confirme la portée contents.

***

## Résolution des problèmes

| Symptôme                                      | Cause probable                                                                         | Correction                                                                                                                            |
| --------------------------------------------- | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `docker login` retourne 401                   | Token sans `Packages: Read-only` (portée fine) ou `read:packages` (classique)          | Ajoutez la portée packages et régénérez                                                                                               |
| `curl` retourne 404 sur les URL GitHub brutes | Token sans `Contents: Read-only` ou portée `repo`                                      | Ajoutez la portée contents et régénérez                                                                                               |
| `gh release download` retourne 403            | Token non autorisé pour `agenteye-enterprise/releases`                                 | Vérifiez que le dépôt est inclus dans l'accès aux dépôts du token à portée fine, ou utilisez un token classique avec la portée `repo` |
| Token accepté mais images introuvables        | Permission de package au niveau de l'organisation manquante sur le token à portée fine | Ajoutez la permission `Packages: Read-only` au niveau de l'organisation                                                               |

Pour tout problème d'accès, contactez `support@exosphere.host`.
