Open source · BYOK · AGPL-3.0

Une personne.Toute une équipe.

L’espace de travail open source pour agents et bots : code, recherche, bureautique et tout le reste. Prêt à l’emploi, personnalisable jusqu’au bout, avec votre propre modèle.

macOS · Linux · Auto-hébergé avec Docker · Depuis un navigateur ou un téléphone

01 · Équipe

Vous fixez le cap. Ils se partagent le travail.

L’agent principal découpe la tâche et la confie à ses coéquipiers : un Worker écrit l’implémentation, l’agent de recherche rassemble le contexte, le vérificateur lance les tests. Chaque membre a son nom, son avatar et sa propre conversation. Ils s’écrivent directement, se transmettent du code et rendent compte à qui leur a confié le travail. Suivez leurs échanges dans le panneau de collaboration et intervenez quand vous voulez.

  • Les membres avancent en parallèle, chacun dans son fil
  • Ils s’écrivent directement, sans tout faire passer par vous
  • Les transferts de code arrivent avec leur diff, fichier par fichier
  • Chacun rend compte une fois le travail terminé

02 · Quatre façons de travailler

Quatre façons de travailler. Un seul espace.Le mode détermine les outils à portée de main et les coéquipiers présents.

ProgrammationCODE

Des outils pour travailler sur le code

Lire et modifier le code, lancer des commandes, ouvrir des terminaux. Chaque fichier modifié est sauvegardé à chaque tour, pour revenir en arrière à tout moment.

WorkerAgent de rechercheVérificateur
« Refactorise le module de connexion et préviens-moi quand les tests sont au vert. »

RechercheRESEARCH

Étudier des questions, comparer les explications, concevoir des expériences

Interroger OpenAlex et Semantic Scholar, lire articles et PDF, et faire avancer une expérience pas à pas.

WorkerAgent de recherchePartenaire de recherche
« Trouve les articles des deux dernières années sur ce sujet et fais-en un tableau comparatif filtrable. »

BureautiqueOFFICE

Documents, données, navigateur et outils de bureau

Word, Excel et PowerPoint, mais aussi le navigateur et les applications de votre ordinateur : il les manipule directement.

WorkerAgent de recherche
« Exporte les commandes du mois dernier dans un fichier Excel avec des graphiques. »

GénéralGENERAL

Des outils équilibrés pour le travail quotidien

Chercher une information, rédiger, créer un petit outil interactif. Tout ce que la journée apporte.

WorkerAgent de recherche
« Compare ces trois appareils photo et fais-moi un graphique réglable. »

03 · Bots

Un bot rien qu’à vous.

Un bot est un agent qui reste en poste. Il a son propre nom, sa personnalité, son modèle et son dossier de travail, mène plusieurs tâches de front et peut se voir attribuer un bureau d’ordinateur. Vous voyez tout ce dont il se souvient, vous pouvez le corriger ou le lui faire oublier. Mettez-le en veille et son travail est suspendu ; réveillez-le et il reprend exactement là où il s’était arrêté.

  • Son nom, ses instructions, son modèle et son dossier
  • Plusieurs tâches menées en parallèle
  • Une mémoire visible, corrigeable, effaçable
  • Veille et réveil sans perte de travail
NomMallowModèlePar défautDossier~/bots/mallow
  • Contrôle hebdo des dépendancesEn coursSuspenduReprise…
  • Mise au propre des notes de lectureEn coursSuspenduReprise…
  • Réponse aux commentaires de revueAttend votre avisSuspenduReprise…
Les rapports hebdo vont dans un tableauCorrigerOublierNe jamais pousser directement sur mainCorrigerOublier

04 · Harness

Le modèle réfléchit. Le harness va jusqu’au bout.

Le modèle est au centre. Chaque cellule autour de lui est quelque chose que Varin prépare pour lui : outils, contexte, exécution, collaboration et reprise. Placé ici, le même modèle mène des travaux plus longs et plus complexes.

05 · Prêt, et à vous

Prêt dès le premier jour. À vous jusqu’au bout.

Prêt à l’emploi

Ajoutez une clé et commencez. Tout le reste est déjà en place.

outils natifs
~80
modes de travail
4
espaces de travail officiels
4
serveurs de langage intégrés
6
protocoles de modèle natifs
8
familles de thèmes, clair et sombre
21
langues d’interface
10
langues en dictée hors ligne
~100

Personnalisable jusqu’au bout

Sans écrire de code, chaque détail se règle à votre goût.

  • Changez le modèle, les instructions ou les outils de n’importe quel agent prédéfini, ou créez le vôtre
  • Des modèles distincts pour les titres, le contexte, la planification, les images et les embeddings
  • Instructions système et mémoire modifiables
  • Skills compatibles avec les dossiers .claude et .agents, installables depuis un dépôt Git
  • Serveurs MCP exposés directement ou découverts à la demande
  • Règles de permission par outil et règles de relance sur mesure

Apportez votre propre modèle.

Les clés restent sur votre propre Host. L’usage est enregistré par canal et par modèle, tour après tour. Aucun intermédiaire.

  • OpenAI Responses
  • OpenAI Chat
  • Anthropic
  • Gemini
  • Vertex AI
  • Azure OpenAI
  • Bedrock
  • Mistral
  • Alibaba Model Studio
  • Zhipu
  • StepFun
  • Ollama
  • LM Studio
  • Tout endpoint compatible

06 · Extensions

Même nos espaces de travail sont des extensions.

Les espaces Agent, IDE, Recherche et Bot, ainsi que le navigateur, Office, le contrôle de l’ordinateur et les serveurs de langage, sont tous enregistrés dans un même catalogue d’extensions, avec les mêmes contrats que les vôtres. Chacun peut être désactivé, et un espace de travail peut être remplacé entièrement.

À quoi ressemble une extension

Survolez un fichier à gauche pour voir la partie correspondante du manifeste.

examples/extensions/agent-authored-panel/
varin.extension.json

Le contrat. Découverte, activation, revue des permissions et schémas d’outils le lisent tous : une extension est découvrable sans exécuter son code.

IdentitéPoints d’entréeServices et outilsContributions d’interface
package.json

Des métadonnées npm classiques. La version correspond au manifeste, et des points d’entrée de build peuvent y être déclarés.

host.js

Côté Host : outils, protocoles de modèle, algorithmes de contexte, politiques d’agent. Ici en mode brokered, dans son propre processus enfant.

surface.cjs

Côté interface : panneaux, éditeurs, voire un espace de travail entier. Déclaratif, géré, ou isolé dans une iframe ou un worker.

panel.css · panel.svg

Ressources. Icônes, styles ou exécutables fournis avec le paquet, tous résolus dans le paquet immuable.

{
  "schemaVersion": 1,
  "id": "example.agent-authored-panel",
  "version": "1.0.0",
  "engines": { "varin": "*" },
  "entrypoints": {
    "host": { "file": "host.js", "mode": "brokered",
              "activation": ["service-request"] },
    "surfaces": [{ "id": "panel", "file": "surface.cjs", "mode": "managed",
      "supports": ["web", "desktop"], "activation": ["application-startup"] }]
  },
  "provides": { "services": [{
    "id": "example.agent-authored-panel.count", "version": 1,
    "tool": { "name": "authored_text_count", "completion": "result",
              "operation": "read", "inputSchema": { … } }
  }] },
  "contributions": [{
    "id": "example.agent-authored-panel.summary", "kind": "panel",
    "entrypoint": "panel", "supports": ["web", "desktop"],
    "placement": { "slot": "workbench.secondary.after", "order": 20 }
  }]
}
import { defineHostExtension, provideTool } from '@varin/extension-sdk';
import manifest from './varin.extension.json' with { type: 'json' };
 
export default defineHostExtension({
  activate(context) {
    // Le service déclaré dans le manifeste : découverte et activation lisent une seule description
    provideTool(context, manifest.provides.services[0], async (input, call) => {
      // Appeler un outil intégré depuis le nouvel outil ; le reçu d’origine est conservé
      const memory = await call.tools.invoke({
        callId: 'memory', name: 'memory', arguments: input.memory,
      });
      return { memory };
    });
  },
});

Manifeste extrait de examples/extensions/agent-authored-panel, schémas longs omis ; host.ts simplifié à partir de nested-tools.

Trois couches, de nombreux points d’ancrage

L’interface ne détient aucun privilège. Le travail privilégié reste du côté de confiance.

SurfaceINTERFACE

Reçoit des callbacks typés et des points de montage, rien de plus. Changer de shell ou d’éditeur n’apporte aucune permission supplémentaire.

DéclaratifGéréiframe / worker isoléNatif

Application HostHOST

Outils, serveurs de langage, débogueurs et tests tournent ici. Une extension brokered a son propre processus et son propre cycle de vie ; en cas d’échec, seule elle est récupérée.

Processus enfant brokeredNatif

Runtime RustRUNTIME

Fixe l’implémentation exacte de chaque appel. Identifiants, requêtes de modèle, historique d’exécution et reprise restent ici.

Répertoire d’outilsAdaptateurs de modèleRegistre de composition

Contributions d’interface16 types

Espace completScène de transitionVueÉditeurPanneauBarre latéralePagePage de réglagesCommandeRaccourciÉlément de menuAction de saisieÉlément de statutBadge de sessionRendu de messageRendu d’outil

Contrats d’agentVersionnés

Outilsvarin.models@1varin.context.fragments@1varin.context.budget@1varin.context.compaction@1varin.retrieval.plan@1varin.agent.policy@4Observateurs d’activité

Espace de travailExécuté par le Host

Support des langagesAdaptateurs de débogageTests

Pourquoi cette conception

Quel que soit le nombre d’extensions, l’espace de travail reste stable et sous votre contrôle.

Le manifeste fait contrat

Découverte, activation et revue lisent le même varin.extension.json. Une extension peut être trouvée, affichée et vérifiée avant qu’une seule ligne de son code ne s’exécute.

Demander n’est pas obtenir

Les permissions s’approuvent par version et par couche. Une mise à jour n’hérite jamais de nouvelles permissions, et une révocation prend effet immédiatement.

Préparé, puis publié d’un bloc

Tout ce que contient une mise à jour prend effet au même instant. En cas d’échec, la génération précédente reste en place ; rien n’est installé à moitié.

Les mises à jour n’interrompent rien

Les appels en cours restent sur l’implémentation avec laquelle ils ont démarré. Seuls les nouveaux appels utilisent la nouvelle version.

Des échecs bien délimités

Les extensions brokered tournent dans leur propre processus enfant : un échec ne récupère que cette extension. Si l’espace choisi ne démarre pas, un shell de secours prend le relais.

Un agent écrit, il n’approuve pas

Un agent peut lire les contrats, écrire une extension et l’installer, mais une première installation reste désactivée jusqu’à votre revue.

SDKCLI : init · check · build · test7 modèles de projet16 exemplesKit de tests de conformitéEn attendant la publication du SDK, installez-le depuis le dépôt.Guide de création →Parcourir les exemples →

07 · Contrôle

Lâchez prise, gardez la main.

Les fichiers modifiés s’alignent sur une frise, tour par tour. Revenez en arrière en un geste, et annulez ce retour si besoin. Les fichiers que vous avez modifiés vous-même ne sont jamais écrasés, et une action au résultat incertain n’est jamais rejouée en silence.

08 · Partout

Reprenez de n’importe où.

Ordinateur, navigateur et téléphone se connectent au même Varin. Associez-les avec un QR code ; loin de votre réseau, un relais chiffré de bout en bout transporte la connexion sans voir votre contenu.

Open source · AGPL-3.0

Open source. À vous.

Votre code, vos données, vos modèles, vos extensions.