fornews.ai Agence — la mémoire de votre équipe
Agence rassemble dans une seule archive tout ce que votre équipe a lu avec fornews.ai, sur ses Mac, iPhone et iPad. Et cette archive ne dort pas dans un tiroir : elle se regarde, elle se consulte, elle répond à vos questions.
Tout reste chez vous, sur vos machines, hors iCloud. Sauvegardé tout seul, vérifié, et ouvert à vos assistants IA.
Sur le Mac App Store. Téléchargement gratuit : une machine verse sans licence.
Ce que vous allez aimer
🗂️ Une seule archive pour toute l'équipe
Chaque Mac, iPhone ou iPad verse ses articles dans une base unique. Un article versé deux fois reste un seul article, et chacun garde sa provenance.
🕸️ Votre archive d'un coup d'œil
Le tableau de bord, la toile des personnalités et des lieux qui reviennent ensemble, l'évolution du fonds au fil des mois, une fiche pour chaque entité.
💾 Des sauvegardes qui ne mentent pas
Elles partent toutes seules, gardent plusieurs copies, et chaque copie est vraiment rouverte pour être vérifiée. Un retard se voit tout de suite.
🤖 Ouvert à vos assistants IA
Demandez un rapport à Claude, ou à tout assistant compatible : il puise dans votre fonds par le serveur MCP intégré, en lecture seule.
🔒 Chez vous, et seulement chez vous
Ni iCloud ni serveur tiers : le fonds vit sur votre machine. Accès par invitation, archives scellées, journal de tout ce qui se passe.
🏷️ Un achat unique
Gratuit pour une machine. Les paliers ouvrent 5, 12, 25 ou 60 machines, ou un nombre illimité, sans abonnement. Lire, chercher et exporter ne dépendent d'aucun achat.
🎨 Bientôt : votre fonds en images 1.8
Un mur d'images avec les visuels de la presse, une mappemonde des lieux cités, les personnalités du moment en portraits, vos histoires en rubans qui s'épaississent au fil des jours, le pouls de vos sources — et une ambiance musicale propre à chaque écran. Voir la feuille de route.
Mettre en place Agence
Le guide complet, pas à pas : l'archive, la portée réseau, le raccordement des machines, les sauvegardes et le branchement d'un assistant.
Agence en images
Captures prises sur une archive réelle de 9 880 articles — aucun écran de démonstration. Les identifiants de machines et le chemin de sauvegarde y sont volontairement masqués.
fornews-agence les compléments qui l'éclairent — textes et
images déjà collectés par la rédaction.
Ouvrir dans md Viewer Télécharger le .md
Avant de commencer
À qui elle s'adresse
fornews.ai n'est pas une application, c'est une gamme — et chaque pièce y tient un rôle différent plutôt qu'une taille différente. L'iPhone, l'iPad et l'Apple TV donnent à lire. Le Mac collecte et travaille : il suit les flux, extrait les entités, corrige, monte des histoires. Agence garde — elle rassemble ce que plusieurs Macs produisent en un seul fonds, et le sert à toute une équipe. Prises ensemble, elles font une expérience complète de veille informationnelle, du coup d'œil du matin à l'archive de plusieurs années.
L'édition Agence s'adresse à ceux qui veulent aller plus loin dans la gestion de l'actualité : une rédaction, un service de veille ou de marketing — mais aussi le passionné qui suit un sujet depuis des années et refuse de le voir disparaître avec un site qui ferme. Ce n'est pas une question de volume, c'est une question d'exigence : vouloir que le corpus dure, qu'il soit partagé, et qu'on puisse dire d'où vient chaque article.
Ce qu'elle fait, et ce qu'elle ne fait pas
Agence ne collecte rien elle-même. Elle reçoit. La collecte reste le travail de l'app fornews.ai installée sur vos machines : c'est elle qui suit les flux, récupère les articles et en extrait les entités. Agence les rassemble et les garde.
Vous aurez besoin de deux machines pour que l'exercice ait un sens : celle qui héberge l'agence, et au moins une qui collecte. Les deux peuvent être la même au départ, le temps de prendre le pli.
L'archive
-
Choisir où elle vit
Au premier lancement, Réglages vous demande un dossier. Agence y crée un fichier
archive.store. Un disque interne convient mieux qu'un volume réseau : l'archive est une base de données, elle est écrite en continu. -
Le garder debout
Un serveur qui s'endort n'est pas un serveur : les collecteurs trouvent porte close, sans erreur, et vous ne le voyez qu'au manque d'articles. Deux réglages y répondent, et il faut les deux — ils traitent deux pannes différentes.
Empêcher la veille est actif par défaut, et ne tient que tant qu'une porte écoute : Agence ne garde pas votre Mac éveillé pour rien.
Toujours active → « Démarrer à l'ouverture de session » répond à l'autre panne, la plus sournoise : après une coupure de courant ou une mise à jour, le Mac redémarre et l'app, elle, ne revient pas. Rien n'a l'air cassé — l'application est simplement fermée, et les collecteurs poussent dans le vide.
Et la fenêtre peut disparaître sans rien arrêter. Agence laisse une icône en forme de base de données dans la barre de menus : fermer la fenêtre l'y range, le service continue, et le menu dit d'un coup d'œil si l'archive est ouverte et si les portes écoutent. C'est le mode normal d'un Mac qui ne fait que servir.
-
Reprendre un fonds existant
Si vous avez déjà un corpus dans l'app Mac, exportez-le (fichier
.fornewsarchive) et versez-le par Import d'archive. L'import se fait en deux temps : Agence inventorie et vous montre ce que le fichier contient avant d'écrire quoi que ce soit.
La portée réseau
Agence ouvre deux portes, et vous décidez jusqu'où elles portent. Le réglage vaut pour les deux — restreindre l'une en laissant l'autre ouverte donnerait l'illusion d'avoir restreint.
| Portée | Ce que ça veut dire | Quand la choisir |
|---|---|---|
| Cette machine uniquement (par défaut) |
Invisible depuis le réseau, y compris votre propre LAN. | Agence et collecteur sur le même Mac. |
| Tailscale uniquement | Joignable par votre tailnet, invisible sur tout autre réseau — y compris les Wi-Fi publics. | Le cas courant dès qu'il y a deux machines. |
| Toutes les interfaces | Toutes les interfaces sont liées, y compris les réseaux publics auxquels ce Mac se connecte. | Réseau maîtrisé de bout en bout, et seulement là. |
Les deux ports, une fois pour toutes :
| Port | Porte | Sens |
|---|---|---|
5274 | Ingestion | Vos Macs écrivent — c'est par là qu'arrivent les articles. |
5275 | MCP | Vos outils lisent — la porte est en lecture seule. |
Raccorder un nœud
Un nœud, c'est une machine qui collecte — un Mac, un iPhone ou un iPad. Le raccorder tient en deux gestes : l'agence lui délivre un jeton, le collecteur le présente.
| Palier | Nœuds | Prix |
|---|---|---|
| Sans licence | 1 | — |
| Atelier | 5 | Fr. 10.— |
| Studio | 12 | Fr. 50.— |
| Rédaction | 25 | Fr. 200.— |
| Agence | 60 | Fr. 500.— |
| Réseau | illimité | Fr. 900.— |
Achat unique, pas un abonnement. ⚠️ Chaque machine collectrice a par ailleurs besoin de l'app fornews.ai : le palier n'est donc pas le coût complet d'un poste.
-
Sur l'agence — délivrer le jeton
Administration → émettre un jeton de versement pour le nœud. Le jeton n'est montré qu'une seule fois : l'archive n'en garde que l'empreinte, comme pour un mot de passe. Copiez-le tout de suite.
Deux jetons, pas un. Verser des archives et interroger le fonds sont deux usages distincts, souvent portés par deux logiciels. Les séparer permet de couper l'accès en lecture de quelqu'un sans interrompre ses versements — et l'inverse. Un jeton unique rendrait toute révocation totale. -
Sur le collecteur — présenter le jeton
Dans l'app fornews.ai du Mac, section Agence : l'adresse de l'agence, le jeton, et la cadence. Une fois par heure convient à la plupart des usages ; le versement n'envoie que ce qui est nouveau depuis la dernière fois.
# L'adresse est celle de la porte d'INGESTION http://<adresse-de-l-agence>:5274
Le premier versement est long, les suivants non. Il rattrape tout l'historique par lots ; ensuite il ne porte que le neuf. Un compteur de rattrapage vous dit ce qui reste.Vos corrections d'entités voyagent avec. Renommez une entité, changez son type ou rattachez-la à la bonne fiche Wikidata : le versement suivant porte la correction jusqu'à l'archive. Vous corrigez une fois, sur le poste où vous avez vu l'erreur ; la rédaction entière en profite. Deux entités qui deviennent identiques fusionnent, et leurs articles se rejoignent. -
Depuis un iPhone ou un iPad : scanner
Un téléphone qui a collecté seul — en déplacement, sans Mac allumé — peut verser lui aussi. Mais un appareil neuf pose un problème d'amorçage : il n'a pas encore de nœud, et l'on ne peut donc pas lui émettre un jeton « pour son nœud ».
D'où un geste à part, dans Nœuds : « Raccorder un appareil… » délivre un jeton lié à aucune machine, valable trente jours, avec son QR. L'appareil s'identifie lui-même au premier versement : son nœud naît à ce moment-là, dans la limite de votre palier, et le jeton lui est alors rattaché — il ne sert donc qu'une fois à enrôler.
Sur l'appareil : Réglages → Archive d'agence, activez « Verser mes articles dans une archive d'agence », puis « Scanner le QR de l'agence ». L'adresse et le jeton se remplissent d'un geste. Reste « Verser maintenant ».
Ne donnez JAMAIS à un téléphone le jeton d'un Mac déjà raccordé. L'identité d'un versement vient du jeton, jamais du contenu de la requête — c'est ce qui empêche une machine de se faire passer pour une autre. Le contournement produirait donc des articles d'iPhone attribués au Mac, silencieusement et sans erreur. C'est exactement ce que « Raccorder un appareil… » évite.Le bouton est gris sous « Cette machine uniquement ». Aucun autre appareil ne peut alors joindre l'agence : un QR serait un mensonge. Changez la portée réseau, et il s'active.⚠️ Un QR ne crée pas le chemin réseau. Le téléphone doit encore pouvoir joindre l'agence. S'il appartient à quelqu'un d'autre — donc à un autre tailnet — le partage de machine lui ouvre cette seule machine, sans l'exposer à Internet.Ce carré EST le jeton. Qui le photographie obtient le droit de verser. Il s'affiche à la demande, et le jeton reste révocable à tout instant depuis Administration.Le scan n'est jamais le seul chemin : les champs de saisie restent en dessous, pour un appareil sans appareil photo ou si l'autorisation est refusée.
Gardez l'écran ouvert le temps de la passe. iOS suspend une app mise en arrière-plan, et un premier versement de deux mille articles dure plus d'une minute. Rien n'est perdu si vous sortez — le curseur n'avance que sur un succès, donc la passe se refait — mais elle ne finira pas toute seule. -
Vérifier que ça tient
Sur l'agence, Nœuds liste les machines raccordées et la date de leur dernière livraison. Chroniques montre leur production dans le temps et permet de les comparer — un Mac qui a décroché s'y voit à sa courbe qui tombe à plat, sans disparaître de la légende.
Et le Journal écrit chaque livraison, à mesure :
Mac mini du studio a livré 23 article(s) — 6 nouveaux, 17 déjà connus, 0 refusésIl se relit tout seul — l'intervalle se règle dans sa barre de filtres, de Manuel à 60 secondes, 10 par défaut. C'est assez rapide pour qu'un geste que vous venez de faire apparaisse pendant que vous regardez.
Un même Mac ne compte qu'une fois. L'identité d'un nœud est un identifiant stable conservé dans son trousseau, pas son nom de machine — qui, lui, change au gré des réglages système et créerait des doublons.
Les sauvegardes
Le fonds d'une rédaction est ce qu'on ne peut pas recollecter : les articles disparaissent des sites, les flux s'arrêtent, les sources changent d'adresse. La sauvegarde n'est donc pas une précaution d'informaticien, c'est la seule chose qui rende l'archive durable.
-
Une destination, hors de ce Mac
Réglages › Sauvegarde › choisissez un dossier — un NAS, un disque de rotation, un dossier partagé. Le choix est retenu d'une session à l'autre.
Sur le même disque que l'archive, ce n'est pas une sauvegarde : la panne qui emporte l'un emporte l'autre. Le seul but est qu'une copie survive à ce Mac. -
Une cadence, et combien on garde
Trois choix : Manuelle uniquement, Une fois par jour, Une fois par semaine. Puis le nombre de sauvegardes conservées — les plus anciennes sont retirées à mesure, pour que la destination ne grossisse pas sans fin.
Garder plus d'une copie a une raison précise : une corruption peut passer inaperçue quelques jours. Avec une seule sauvegarde, elle est déjà recopiée par-dessus la bonne quand vous vous en apercevez. -
La clé de secours — à ranger ailleurs, tout de suite
Les sauvegardes sont chiffrées, parce qu'elles sortent du périmètre de FileVault dès qu'elles sont copiées ailleurs. La clé s'affiche une seule fois, à sa création.
Une sauvegarde chiffrée par une clé qui ne vit que sur ce Mac n'est pas une sauvegarde. Si la machine est volée ou détruite — la raison même d'en avoir — la clé part avec elle, et il ne reste que des fichiers illisibles gardés par superstition. Mettez-la dans un gestionnaire de mots de passe, ou sur papier, avant de fermer la fenêtre. L'app vous le rappellera tant que vous n'aurez pas confirmé l'avoir mise à l'abri. -
Vérifier, c'est restaurer
Le tableau de bord affiche la date de la dernière sauvegarde vérifiée. Vérifier ne veut pas dire comparer deux tailles de fichier : Agence ouvre la sauvegarde, contrôle l'intégrité SQLite, la version du schéma, et lit de vraies lignes avec de vraies requêtes.
Une sauvegarde jamais restaurée n'est pas une sauvegarde, c'est une croyance. Un fichier tronqué au bon endroit a la bonne taille — c'est pourquoi la comparaison de tailles ne prouve rien.
Chiffrement & accès
Deux questions distinctes, et il vaut mieux les séparer : ce qui est chiffré, et qui a le droit d'entrer. Voici ce qu'Agence fait réellement — y compris ce qu'elle ne fait pas.
Ce qui est chiffré, et ce qui ne l'est pas
| Ce dont on parle | Protection |
|---|---|
| L'archive, au repos | FileVault, et rien de plus — c'est un choix. La chiffrer une seconde fois avec une clé que l'app doit pouvoir lire toute seule pour ouvrir la base ne protégerait contre rien : la clé serait à côté de la serrure. |
| Les sauvegardes | AES-GCM par tranches de 4 Mo. Là, le calcul s'inverse : la
sauvegarde part sur un NAS ou un disque de rotation et sort du périmètre de
FileVault à l'instant où elle est copiée. ⭐ Chaque tranche est authentifiée avec son index et le nombre total : réordonner ou tronquer le fichier ne passe pas inaperçu. Une restauration silencieusement incomplète serait pire qu'une restauration qui échoue. |
| Une archive transmise | HPKE (RFC 9180) en mode authentifié, suite
Curve25519 · SHA-256 · ChaCha20-Poly1305 — chiffrée
pour l'agence, signée par celui qui l'a produite.⚠️ Un fichier .fornewsarchive ordinaire voyage
en clair : sa compression n'est pas un chiffrement, strings y lit les titres. C'est l'artefact le plus exposé de
la chaîne, et c'est précisément ce que le scellement corrige. |
| Les clés privées | Le Trousseau macOS. Elles ne sont jamais écrites dans l'archive. |
Tailscale est un moyen, pas le seul. Ce qu'Agence exige, c'est un chemin privé entre le collecteur et l'archive — un réseau local maîtrisé, un autre VPN ou un tunnel font aussi l'affaire. Tailscale a notre préférence parce qu'il ne demande aucune ouverture de port et suit les machines qui changent de réseau.
⭐ Et il règle le cas qui revient le plus en rédaction : l'appareil appartient à quelqu'un d'autre, donc à un autre tailnet. Le partage de machine donne accès à cette seule machine, sans l'exposer à Internet ni faire entrer la personne dans votre réseau.
⚠️ Tailscale met une machine partagée en quarantaine : elle peut recevoir des connexions, pas en établir. C'est sans conséquence ici — dans Agence, c'est toujours le collecteur qui pousse, et l'agence ne fait que répondre. La fonction est en bêta chez Tailscale au moment où nous écrivons.
Qui a le droit d'entrer
L'accès repose sur des jetons : 256 bits tirés au hasard, préfixés
fna_ pour qu'on les reconnaisse dans un fichier de configuration.
- Jamais stockés en clair. L'archive n'en garde que l'empreinte SHA-256, comme pour un mot de passe. Un jeton s'affiche une seule fois ; personne, pas même vous, ne peut le relire ensuite.
- Un jeton fait une seule chose. Les rôles sont séparés : ingestion (pousser des articles, et rien d'autre), téléversement (verser une archive entière), lecture (MCP), curation, administration.
- Révocables et datés. Couper un accès est immédiat, et chaque jeton porte sa date de dernier usage — « jamais utilisé » est une information, pas un trou.
Au-dessus des jetons, deux garde-fous que le code garantit :
- La porte MCP ne peut pas écrire. Elle ouvre l'archive par une seconde connexion, en lecture seule : c'est une garantie du moteur, pas une discipline qu'on demande aux outils.
- Sign in with Apple prouve qui quelqu'un est ; c'est la liste des personnes autorisées qui dit s'il a le droit d'entrer. Les deux sont séparés à dessein.
Interroger le fonds
La porte MCP donne à Claude — ou à tout client compatible — une lecture du corpus complet : recherche plein texte, entités, tendances, chronologies, santé des sources. La référence des outils est ici.
Sur ce Mac, Administration affiche une configuration prête à coller : elle pointe vers un fichier de jeton que votre client relit à chaque fois. Rien à renouveler.
Pour une autre machine, le bouton « Émettre un jeton pour un poste distant… » délivre un jeton durable — valable un an, révocable, listé avec les autres. La configuration complète s'affiche alors une seule fois :
{
"mcpServers": {
"fornews-agence": {
"type": "http",
"url": "http://<adresse-de-l-agence>:5275/mcp",
"headers": { "Authorization": "Bearer fna_…" }
}
}
}
git add distrait le publierait avec le reste.Brancher un client — ce qu'il faut savoir avant d'essayer
Trois choses qui ne se devinent pas, et qui expliquent la plupart des échecs de configuration :
- Une conversation ordinaire et une session de code ne chargent pas la même chose. Les serveurs MCP locaux sont déclarés sur votre machine ; les connecteurs de compte, eux, sont des services distants. Un serveur privé n'apparaîtra jamais dans la liste des seconds.
- Certains clients n'acceptent que des serveurs « stdio », c'est-à-dire une
commande locale, et refusent une adresse HTTP distante. Un pont comme
mcp-remoterésout ce cas : il présente au client une commande locale et parle HTTP à l'agence derrière. - Le HTTP en clair est refusé vers une adresse distante, et c'est une
protection légitime. Vers
127.0.0.1, il ne l'est pas.
127.0.0.1. Les deux portes écoutent la boucle locale en
plus de la portée choisie, et cette adresse ne déclenche aucune des protections ci-dessus. Pour
un autre poste, l'adresse du tailnet et un jeton durable — et s'il est hors de votre tailnet,
le partage de
machine.Le plus simple : demandez-le à votre client
Vous n'êtes pas obligé d'écrire ce JSON vous-même. Les clients savent modifier leur propre configuration, et ils s'en tirent mieux qu'une copie manuelle : ils connaissent l'emplacement du fichier et sa syntaxe. Décrivez ce que vous voulez :
Ajoute ce serveur MCP à ma configuration. Utilise un proxy MCP local via npx mcp-remote, afin de conserver l'URL localhost. Nom : fornews-agence URL : http://127.0.0.1:5275/mcp En-tête Authorization : Bearer <votre-jeton> Préserve les serveurs et préférences existants, puis valide la configuration.
Éprouvé avec GitHub Copilot, Codex et Claude : les trois se configurent ainsi.
127.0.0.1 par l'adresse réseau de la machine — une substitution
d'apparence inoffensive, qui rallume aussitôt le refus du HTTP en clair décrit plus haut. Le
pont reste local ; rien ne sort du Mac.Interroger le fonds depuis un iPhone ou un iPad
La règle du 127.0.0.1 semble vous clouer devant le Mac de
l'agence. Elle ne le fait pas. Avec Claude et l'option Répartition
(Dispatch), vous confiez une question depuis votre téléphone ou votre tablette à la
session qui tourne sur ce Mac : c'est elle qui interroge le fonds, et vous lisez la
réponse où que vous soyez.
Avec un modèle local : rien ne sort de la machine
La porte MCP ne suppose aucun service en ligne. Branchée sur LM Studio Bionic — l'agent de LM Studio pour modèles ouverts, qui s'exécute nativement en local — elle donne de bons résultats, et l'ensemble de la chaîne reste chez vous : le corpus ne quitte pas l'agence, la question ne quitte pas le poste, la réponse non plus.
Les deux serveurs MCP se complètent
Si vous mettez Agence en œuvre, son serveur MCP ne remplace pas celui de l'app Mac : il en couvre l'autre moitié. L'app Mac écrit dans votre corpus — créer une source, corriger une entité, monter une histoire. Agence lit à l'échelle de la rédaction, et répond à des questions qu'un seul Mac ne peut pas poser : d'où vient cet élément, quel nœud l'a livré, qui a un accès qui dort.
| Ce qu'on veut faire | fornews.ai (Mac) | Agence |
|---|---|---|
| Chercher, lire, relier des articles | ✅ | ✅ sur tout le fonds |
| Entités : lister, consulter le dossier | ✅ | ✅ |
| Analyse : chronologie, tendances, partage de voix | ✅ | ✅ |
| Sources : lister, santé | ✅ | ✅ |
| Histoires : lister, consulter | ✅ | ✅ |
| Volumétrie du corpus | ✅ | ✅ |
| Créer, corriger, supprimer une source | ✅ | ⛔ |
| Détecter les flux d'un site | ✅ | ⛔ |
| Centres d'intérêt : créer, modifier, supprimer | ✅ | ⛔ |
| Histoires : créer, ajouter, retirer, exporter | ✅ | ⛔ |
| Écarter, restaurer, mettre un article en favori | ✅ | ⛔ |
| Corriger les entités : fusionner, retyper, ignorer, lier un QID | ✅ | ⛔ |
| Provenance d'un élément — quel nœud, quel import | ⛔ | ✅ |
| Historique des imports | ⛔ | ✅ |
| Jetons : qui a un accès, lequel dort | ⛔ | ✅ |
| Sauvegardes : historique et vérifications | ⛔ | ✅ |
| Qualité du fonds | ⛔ | ✅ |
| Intégrité de la base | ⛔ | ✅ |
38 outils
fornews_* côté Mac, 21 outils
agence_* côté Agence, dont six réservés à l'administration.
fornews_* et
agence_* — donc un assistant choisit tout seul le bon serveur :
votre Mac pour agir sur vos sources, l'agence pour interroger des années de corpus.Si ça ne marche pas
| Ce que vous voyez | Ce que c'est |
|---|---|
| Le collecteur dit que l'agence n'a pas répondu | La portée est restée sur Cette machine uniquement, ou l'agence est endormie. Les deux se règlent dans ses Réglages. |
| Une erreur d'autorisation d'accès au démarrage | Le dossier de l'archive a bougé, ou son disque a été renommé. L'archive est intacte : rechoisissez le dossier, une fois. |
La porte répond 401 |
C'est bon signe : elle écoute et refuse ce qu'il faut. Le jeton est absent, expiré ou révoqué — réémettez-le. |
| Le compteur d'articles n'avance pas | Regardez-le à plus d'une minute d'intervalle : un lot de deux mille articles met plus longtemps que ça à passer. La date de dernier versement réussi est plus fiable que le compteur. |
| Deux nœuds pour une seule machine | Signalez-le : l'identité est censée être stable. Une fusion se fait depuis Nœuds. |
Une question qui n'est pas ici ? L'assistance est là.
fornews.ai Agency — your holdings come alive
Agency brings together, in a single archive, everything your team has read with fornews.ai on its Macs, iPhones and iPads. And that archive doesn't sit in a drawer: you can look at it, search it, and ask it questions.
Everything stays with you, on your machines, off iCloud. Backed up on its own, verified, and open to your AI assistants.
On the Mac App Store. Free download: one machine contributes without a licence.
What you'll love
🗂️ One archive for the whole team
Every Mac, iPhone or iPad sends its articles to a single database. An article sent twice stays one article, and each keeps its origin.
🕸️ Your holdings at a glance
The dashboard, the web of people and places that keep appearing together, how the holdings grow month after month, a file for every entity.
💾 Backups that don't lie
They run on their own, keep several copies, and every copy is actually reopened to be verified. A missed backup shows up right away.
🤖 Open to your AI assistants
Ask Claude, or any compatible assistant, for a report: it draws on your holdings through the built-in MCP server, read-only.
🔒 Yours, and only yours
No iCloud, no third-party server: the holdings live on your machine. Access by invitation, sealed archives, a log of everything that happens.
🏷️ A one-time purchase
Free for one machine. Tiers open 5, 12, 25 or 60 machines, or an unlimited number, with no subscription. Reading, searching and exporting never depend on a purchase.
🎨 Coming soon: your holdings in pictures 1.8
An image wall of press visuals, a world map of the places mentioned, today's newsmakers as portraits, your stories as ribbons that thicken day by day, the pulse of your sources — and a musical mood for every screen. See the roadmap.
Setting up Agency
The complete step-by-step guide: the archive, network reach, connecting machines, backups and plugging in an assistant.
Agency in pictures
Screenshots taken on a real archive of 9,880 articles — no demo screens. Machine identifiers and the backup path are deliberately masked.
Before you start
Who it is for
fornews.ai is not one application, it is a range — and each piece plays a different role rather than a different size. iPhone, iPad and Apple TV are there to read. The Mac collects and works: it follows the feeds, extracts entities, corrects, builds stories. Agency keeps — it gathers what several Macs produce into a single archive and serves it to a whole team. Taken together they make a complete news-monitoring experience, from the morning glance to a multi-year archive.
The Agency edition is for those who want to go further in managing the news: a newsroom, an intelligence or marketing team — but also the enthusiast who has followed a subject for years and refuses to watch it vanish along with a site that shuts down. It is not a question of volume but of demands: wanting the corpus to last, to be shared, and to be able to say where every article came from.
What it does, and what it does not
Agency collects nothing itself. It receives. Collecting stays the job of the fornews.ai app on your machines: that app follows the feeds, fetches articles and extracts entities. Agency gathers them and keeps them.
You'll want two machines for this to mean anything: the one hosting the agency, and at least one that collects. They can be the same machine at first, while you find your feet.
The archive
-
Choose where it lives
On first launch, Settings asks for a folder. Agency creates an
archive.storefile inside it. An internal disk suits it better than a network volume: the archive is a database, written to continuously. -
Keep it standing
A server that falls asleep is not a server: collectors find the door shut, with no error, and you only notice through missing articles. Two settings answer this, and you want both — they address two different failures.
Prevent sleep is on by default, and holds only while a door is listening: Agency does not keep your Mac awake for nothing.
Always on → "Start at login" answers the other, sneakier failure: after a power cut or an update, the Mac restarts and the app does not come back. Nothing looks broken — the application is simply closed, and collectors push into the void.
And the window can disappear without stopping anything. Agency leaves a database-shaped icon in the menu bar: closing the window puts it away there, the service keeps running, and the menu tells you at a glance whether the archive is open and the doors are listening. That is the normal mode for a Mac whose only job is to serve.
-
Bring an existing collection over
If you already have a corpus in the Mac app, export it (a
.fornewsarchivefile) and bring it in through Import archive. The import happens in two stages: Agency takes inventory and shows you what the file holds before writing anything.
Network reach
Agency opens two doors, and you decide how far they carry. The setting covers both — restricting one while leaving the other open would only look like restricting.
| Reach | What it means | When to pick it |
|---|---|---|
| This machine only (default) |
Invisible from the network, including your own LAN. | Agency and collector on the same Mac. |
| Tailscale only | Reachable over your tailnet, invisible on every other network — public Wi-Fi included. | The usual case as soon as there are two machines. |
| All interfaces | Every interface is bound, including public networks this Mac joins. | A network you control end to end, and only there. |
The two ports, once and for all:
| Port | Door | Direction |
|---|---|---|
5274 | Ingestion | Your Macs write — articles arrive through here. |
5275 | MCP | Your tools read — this door is read-only. |
Connecting a node
A node is a machine that collects — a Mac, an iPhone or an iPad. Connecting it takes two moves: the agency issues a token, the collector presents it.
| Tier | Nodes | Price |
|---|---|---|
| No licence | 1 | — |
| Atelier | 5 | CHF 10.— |
| Studio | 12 | CHF 50.— |
| Rédaction | 25 | CHF 200.— |
| Agence | 60 | CHF 500.— |
| Réseau | unlimited | CHF 900.— |
A one-off purchase, not a subscription. ⚠️ Each collecting machine also needs the fornews.ai app: a tier is not the full cost of a workstation.
-
On the agency — issue the token
Administration → issue a delivery token for the node. The token is shown once only: the archive keeps just its fingerprint, as it would for a password. Copy it straight away.
Two tokens, not one. Delivering archives and querying the collection are distinct uses, often carried by different software. Separating them lets you cut someone's read access without interrupting their deliveries — and the other way round. A single token would make every revocation total. -
On the collector — present the token
In the Mac's fornews.ai app, Agency section: the agency's address, the token, and the frequency. Once an hour suits most uses; a delivery only sends what is new since the last one.
# The address is that of the INGESTION door http://<agency-address>:5274
The first delivery is long, later ones are not. It catches up on the whole history in batches; after that it carries only what's new. A catch-up counter tells you what remains. -
From an iPhone or iPad: scan
A phone that has collected on its own — travelling, with no Mac running — can deliver too. But a brand-new device raises a bootstrapping problem: it has no node yet, so there is nothing to issue a token "for".
Hence a separate gesture, in Nodes: "Connect a device…" issues a token bound to no machine, valid for thirty days, with its QR code. The device identifies itself on its first delivery: its node is born at that moment, within your tier's ceiling, and the token is then attached to it — so it only ever enrols once.
On the device: Settings → Agency archive, switch on "Deliver my articles to an agency archive", then "Scan the agency's QR". The address and the token fill themselves in one gesture. All that is left is "Deliver now".
NEVER give a phone the token of a Mac that is already connected. A delivery's identity comes from the token, never from the body of the request — that is what stops one machine from posing as another. The workaround would therefore file the phone's articles under the Mac, silently and without error. That is precisely what "Connect a device…" avoids.The button is greyed out under "This machine only". No other device can reach the agency then: a QR code would be a lie. Change the network reach and it becomes available.⚠️ A QR does not create the network path. The phone still has to reach the agency. If it belongs to somebody else — hence to another tailnet — machine sharing opens that one machine to them, without exposing it to the internet.That square IS the token. Anyone who photographs it gains the right to deliver. It is shown on request, and the token stays revocable at any moment from Administration.Scanning is never the only route: the entry fields remain below, for a device without a camera or if permission is refused.
Keep the screen open during the pass. iOS suspends an app sent to the background, and a first delivery of two thousand articles takes more than a minute. Nothing is lost if you leave — the cursor only advances on success, so the pass is redone — but it will not finish on its own. -
Check that it holds
On the agency, Nodes lists the connected machines and when each last delivered. Trends shows their output over time and lets you compare them — a Mac that has dropped off shows as a curve falling flat, without vanishing from the legend.
And the Log records every delivery as it happens:
Studio Mac mini delivered 23 article(s) — 6 new, 17 already known, 0 refusedIt refreshes itself — the interval is set in its filter bar, from Manual to 60 seconds, 10 by default. Fast enough that something you have just done shows up while you are still looking.
One Mac counts once. A node's identity is a stable identifier kept in its keychain, not its machine name — which changes with system settings and would create duplicates.
Backups
A newsroom's archive is the thing you cannot collect again: articles vanish from sites, feeds stop, sources move. Backing it up is not an IT precaution — it is the only thing that makes the archive last.
-
A destination, off this Mac
Settings › Backup › choose a folder — a NAS, a rotation disk, a shared folder. The choice is remembered from one session to the next.
On the same disk as the archive, it is not a backup: the failure that takes one takes the other. The whole point is that a copy outlives this Mac. -
A frequency, and how many to keep
Three choices: Manual only, Once a day, Once a week. Then how many backups to keep — the oldest are removed as you go, so the destination does not grow without end.
Keeping more than one copy has a precise reason: corruption can go unnoticed for a few days. With a single backup, it has already been copied over the good one by the time you notice. -
The recovery key — put it elsewhere, right away
Backups are encrypted, because they leave FileVault's perimeter the moment they are copied somewhere else. The key is shown once only, when it is created.
A backup encrypted with a key that only lives on this Mac is not a backup. If the machine is stolen or destroyed — the very reason for having backups — the key goes with it, and all that remains is unreadable files kept out of superstition. Put it in a password manager, or on paper, before closing the window. The app will keep reminding you until you confirm you have put it somewhere safe. -
Verifying means restoring
The dashboard shows when a backup was last verified. Verifying does not mean comparing two file sizes: Agency opens the backup, checks SQLite integrity, the schema version, and reads real rows with real queries.
A backup never restored is not a backup, it is a belief. A file truncated in the right place has the right size — which is why comparing sizes proves nothing.
Encryption & access
Two separate questions, better kept apart: what is encrypted, and who is allowed in. Here is what Agency actually does — including what it does not.
What is encrypted, and what is not
| What we mean | Protection |
|---|---|
| The archive, at rest | FileVault, and nothing more — that is a choice. Encrypting it a second time with a key the app must be able to read on its own, in order to open the database, would protect against nothing: the key would sit next to the lock. |
| Backups | AES-GCM in 4 MB chunks. Here the trade-off flips: a backup goes
off to a NAS or a rotation disk and leaves FileVault's perimeter the moment
it is copied. ⭐ Each chunk is authenticated with its index and the total count: reordering or truncating the file does not go unnoticed. A silently incomplete restore would be worse than one that fails. |
| An archive in transit | HPKE (RFC 9180) in authenticated mode, suite
Curve25519 · SHA-256 · ChaCha20-Poly1305 — encrypted
for the agency, signed by whoever produced it.⚠️ A plain .fornewsarchive file travels
in the clear: its compression is not encryption, and
strings reads the headlines straight out of it. It is
the most exposed artefact in the chain, and sealing is exactly what fixes that. |
| Private keys | The macOS Keychain. They are never written into the archive. |
Tailscale is one means, not the only one. What Agency requires is a private path between collector and archive — a controlled local network, another VPN or a tunnel will do just as well. We prefer Tailscale because it needs no port opened and follows machines as they move between networks.
⭐ And it settles the case that comes up most in a newsroom: the device belongs to somebody else, hence to another tailnet. Machine sharing grants access to that one machine, without exposing it to the internet or bringing the person into your network.
⚠️ Tailscale quarantines a shared machine: it can receive connections, not open them. That costs nothing here — in Agency the collector always pushes, and the agency only answers. The feature is in beta at Tailscale as we write.
Who is allowed in
Access rests on tokens: 256 random bits, prefixed
fna_ so you recognise them in a configuration file.
- Never stored in the clear. The archive keeps only their SHA-256 fingerprint, as it would for a password. A token is shown once; nobody, not even you, can read it back afterwards.
- A token does one thing. Roles are separate: ingestion (push articles, and nothing else), upload (deliver a whole archive), read (MCP), curation, administration.
- Revocable and dated. Cutting an access is immediate, and each token carries its last-used date — "never used" is information, not a gap.
Above the tokens, two guarantees the code enforces:
- The MCP door cannot write. It opens the archive through a second connection, read-only: a guarantee of the engine, not a discipline asked of the tools.
- Sign in with Apple proves who someone is; it is the list of authorised people that says whether they may come in. The two are kept separate on purpose.
Querying the archive
The MCP door gives Claude — or any compatible client — a read of the whole corpus: full text search, entities, trends, timelines, source health. The tool reference is here.
On this Mac, Administration shows a ready-to-paste configuration: it points at a token file your client re-reads every time. Nothing to renew.
For another machine, the "Issue a token for a remote machine…" button delivers a durable token — valid for a year, revocable, listed with the others. The full configuration is then shown once only:
{
"mcpServers": {
"fornews-agence": {
"type": "http",
"url": "http://<agency-address>:5275/mcp",
"headers": { "Authorization": "Bearer fna_…" }
}
}
}
git add would publish it along with everything else.Connecting a client — what to know before trying
Three things that cannot be guessed, and that explain most configuration failures:
- An ordinary conversation and a code session do not load the same things. Local MCP servers are declared on your machine; account connectors are remote services. A private server will never appear in the list of the latter.
- Some clients only accept "stdio" servers — a local command — and refuse a
remote HTTP address. A bridge such as
mcp-remotesolves that case: it presents the client with a local command and speaks HTTP to the agency behind. - Plain HTTP is refused towards a remote address, and that is a legitimate
protection. Towards
127.0.0.1, it is not.
127.0.0.1. Both doors listen on the loopback in addition
to the chosen reach, and that address triggers none of the protections above. For another
machine, the tailnet address and a durable token — and if it sits outside your tailnet,
machine sharing.The simplest route: ask your client
You do not have to write that JSON yourself. Clients can edit their own configuration, and they do it better than a manual copy: they know where the file lives and what its syntax is. Describe what you want:
Add this MCP server to my configuration. Use a local MCP proxy via npx mcp-remote, so that the localhost URL is preserved. Name: fornews-agence URL: http://127.0.0.1:5275/mcp Authorization header: Bearer <your-token> Preserve existing servers and preferences, then validate the configuration.
Proven with GitHub Copilot, Codex and Claude: all three configure themselves this way.
127.0.0.1 with the
machine's network address — a harmless-looking substitution that immediately re-triggers the
plain-HTTP refusal described above. The bridge stays local; nothing leaves the Mac.Querying the holdings from an iPhone or iPad
The 127.0.0.1 rule looks as though it pins you to the agency's
Mac. It does not. With Claude and the Dispatch option, you hand a question from
your phone or tablet to the session running on that Mac: it queries the holdings, and you read
the answer wherever you are.
With a local model: nothing leaves the machine
The MCP door assumes no online service. Wired to LM Studio Bionic — LM Studio's agent for open models, running natively on the machine — it gives good results, and the whole chain stays with you: the holdings never leave the agency, the question never leaves the workstation, nor does the answer.
The two MCP servers complement each other
If you put Agency to work, its MCP server does not replace the Mac app's — it covers the other half. The Mac app writes into your corpus: creating a source, correcting an entity, building a story. Agency reads at newsroom scale, and answers questions a single Mac cannot even ask: where did this element come from, which node delivered it, whose access has gone dormant.
| What you want to do | fornews.ai (Mac) | Agency |
|---|---|---|
| Search, read, relate articles | ✅ | ✅ across the whole archive |
| Entities: list, open the dossier | ✅ | ✅ |
| Analysis: timeline, trends, share of voice | ✅ | ✅ |
| Sources: list, health | ✅ | ✅ |
| Stories: list, open | ✅ | ✅ |
| Corpus volumetrics | ✅ | ✅ |
| Create, correct, delete a source | ✅ | ⛔ |
| Detect a site's feeds | ✅ | ⛔ |
| Interests: create, update, delete | ✅ | ⛔ |
| Stories: create, add, remove, export | ✅ | ⛔ |
| Dismiss, restore, favourite an article | ✅ | ⛔ |
| Correct entities: merge, retype, ignore, link a QID | ✅ | ⛔ |
| Provenance of an element — which node, which import | ⛔ | ✅ |
| Import history | ⛔ | ✅ |
| Tokens: who has access, which one is dormant | ⛔ | ✅ |
| Backups: history and verifications | ⛔ | ✅ |
| Archive quality | ⛔ | ✅ |
| Database integrity | ⛔ | ✅ |
38
fornews_* tools on the Mac, 21
agence_* tools on Agency, six of them reserved for
administration.
fornews_* and agence_* — so an
assistant picks the right server on its own: your Mac to act on your sources, the agency to
query years of corpus.If it doesn't work
| What you see | What it is |
|---|---|
| The collector says the agency didn't answer | Reach is still This machine only, or the agency is asleep. Both are in its Settings. |
| An access permission error at startup | The archive folder moved, or its disk was renamed. The archive is intact: pick the folder again, once. |
The door answers 401 |
That's a good sign: it is listening and refusing what it should. The token is missing, expired or revoked — issue a new one. |
| The article count isn't moving | Look again more than a minute later: a batch of two thousand articles takes longer than that to pass. The last successful delivery time is more reliable than the counter. |
| Two nodes for a single machine | Tell us: identity is meant to be stable. Merging is done from Nodes. |
A question that isn't here? Support is this way.