
# Poche
**Ton agent, sur ton appareil. Hors ligne. Privé. Rien ne quitte ton iPhone.**
[](https://developer.apple.com)
[](#-limitations-connues)
[](https://swift.org)
[](https://developer.apple.com/xcode/swiftui/)
[-5E5CE6)](https://developer.apple.com/documentation/foundationmodels)
[](#-donn%C3%A9es-et-confidentialit%C3%A9)
[](#-tests)
[%20upload%C3%A9-0D96F6?logo=apple)](#-build-et-distribution)
[](mailto:contact@spboucher.ai)
*Agent personnel local : chat, rappels, calendrier, notes, tâches et recherche sémantique —
propulsé exclusivement par le modèle Apple Intelligence embarqué. Aucune API. Aucun abonnement. Aucun serveur.*
---
## 📱 Captures d'écran
| Accueil | Conversation + confirmation | Mode sombre |
|:---:|:---:|:---:|
|  |  |  |
---
## 🧭 Le concept
Poche est un agent personnel qui vit **entièrement sur l'iPhone**. Le seul moteur
génératif de l'application est **Apple Foundation Models**, le modèle ~3 milliards de
paramètres d'Apple Intelligence, exécuté sur le Neural Engine de l'appareil.
La règle fondatrice du projet (voir [`CLAUDE.md`](CLAUDE.md), la source de vérité) :
> Si une fonctionnalité ne peut pas être faite on-device, **elle n'est pas faite**.
> On ne dégrade pas la promesse pour ajouter une capacité.
Concrètement, c'est un chat en streaming qui sait **agir** : créer des rappels et des
événements (EventKit), enregistrer des notes et des tâches (SwiftData), retrouver tes
données par recherche sémantique locale (NLEmbedding) — chaque écriture passant par une
**carte de confirmation** que l'utilisateur valide explicitement.
---
## 📊 Métriques
| Métrique | Valeur |
|---|---|
| Fichiers Swift (app + extension) | **41** |
| Fichiers Swift (tests) | **5** |
| Lignes de code (app + extension) | **~2 930** |
| Lignes de code (tests) | **~320** |
| Tests automatisés | **21 / 21 ✓** (5 suites) |
| Outils exposés au modèle | **7** (plafond dur : 8) |
| Fenêtre de contexte gérée | **4 096 tokens** (condensation à 70 %, réserve réponse 30 %) |
| Coût des instructions système | **~230 tokens** (mesuré, documenté dans le code) |
| Coût fixe par outil (schéma) | **~120 tokens** |
| Requêtes réseau dans le chemin IA | **0** — vérifié par un test tripwire |
| Cibles | App iOS + Share Extension + App Intents |
| Objectif premier token | **< 400 ms** |
---
## 🏗 Architecture
```
Poche/
├─ App/ point d'entrée, gate de disponibilité du modèle
├─ Chat/
│ ├─ UI/ fil, bulles, composeur, jauge de contexte, accueil
│ └─ State/ ChatViewModel, tours de conversation
├─ Agent/
│ ├─ Session/ cycle de vie LanguageModelSession + instructions versionnées
│ ├─ Budget/ tokens, condensation, recyclage ⚠️ cœur du projet
│ ├─ Tools/ un fichier par outil (7 outils)
│ ├─ Confirm/ couche de confirmation ⚠️ non contournable
│ └─ Schemas/ types @Generable
├─ Data/
│ ├─ Store/ SwiftData — notes, tâches, conversations
│ ├─ Search/ index sémantique local (NLEmbedding)
│ └─ Bridges/ EventKit, App Intents
├─ Shared/ boîte d'échange app ↔ extension (groupe d'apps)
├─ Support/ dictée on-device, veille thermique
└─ Design/ thème, marque, fond
PocheShare/ Share Extension (entrée seulement)
PocheTests/ 21 tests, 5 suites
```
### Le principe non négociable
**Le modèle ne fait jamais d'effet de bord.** Il propose un appel d'outil ; l'application
valide, affiche, et n'exécute qu'après confirmation de l'utilisateur.
```mermaid
flowchart LR
U[Utilisateur] -->|message| S[LanguageModelSession]
S -->|appel d'outil| T[Outil
**Simon-Pierre Boucher** · [contact@spboucher.ai](mailto:contact@spboucher.ai)
*Aucune API. Aucun abonnement. Aucun serveur. Juste ton iPhone.*