Datalyn Code
Version française complète plus bas
A coding agent in VS Code. Datalyn reads, edits and tests your code; every file change and every
command goes through you, in the chat, before it happens.
Preview. This first public version works with Gemini, Ollama (local and cloud), OpenRouter and
your own OpenAI-compatible providers. Your feedback is welcome: Sberkani@datalyn.fr.
The chat opens in an editor tab beside your code (or in the side bar), and every decision waits
for you there.
What it does
- Asks before it acts. A file change shows its diff in the chat; "Review the diff" opens VS
Code's own comparison, where you can edit the proposal before accepting it. A shell command shows
the exact command line. You allow, deny, or allow that command for the session.
- Shows its work. One compact line per tool call (reads, searches, commands, tests with their
counts), a tasks panel while it works, and the subagents it starts.
- Lets you steer. Write while it works: your message is read before its next step, or kept for
the end of the turn. Esc stops it at the next safe point.
- Plans first when you want. Plan mode is read-only: Datalyn investigates and proposes a plan
you approve before anything changes.
Install
The extension: install it from the Marketplace (you are here).
The engine: Datalyn Code runs on its engine, dlc, a Python program installed with
uv. In a terminal:
curl -LsSf https://astral.sh/uv/install.sh | sh # uv, if you do not have it
uv tool install datalyn-code # the engine: dlc
(Windows: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
for uv.) The extension finds dlc by itself, also in ~/.local/bin when it is not on your PATH.
A model: write GEMINI_API_KEY=<your key> in ~/.datalyn/.env
(get a free key), or use Ollama on your machine (no key).
The extension never reads nor shows a key.
Then run Datalyn: Check the installation (uv, the engine, the keys, set or not, never their
value, and Docker, in a read-only report). The Get started with Datalyn Code walkthrough (Help,
Welcome) takes you through these steps: its Install the engine button types the command in a
terminal for you to run. Update the engine with uv tool upgrade datalyn-code; the extension tells
you when the engine is too old.
Choose your model
Click the model pill under the input (between two turns): a menu opens above it, with a search
field, Recommended models, then one section per provider: Gemini, Ollama Cloud, Ollama
(local), OpenRouter and the providers you added. Each model shows its context window and a
badge: local (it runs on your machine) or cloud (someone else's servers: your code is sent
there, and the chat says so the first time in a session). Only chat models that call tools are
shown; Show all models lists the others, greyed, with the reason. A provider you cannot use yet
shows why ("key not set", "Ollama is not running"). Arrows, Enter and Esc work as expected.
datalyn.defaultModel sets the model of new sessions, for example gemini:gemini-2.5-pro.
Ollama local and cloud
Local: open models on your machine, free, your code never leaves it; slower and less reliable
than Gemini on long tasks.
brew install ollama && brew services start ollama
ollama pull qwen2.5-coder:7b # or gemma4:12b, qwen3:8b: models that call tools
Datalyn gives the model an explicit context window (32,768 tokens by default,
DATALYN_OLLAMA_NUM_CTX). Ollama's OpenAI endpoint ignores that setting, so Datalyn creates once a
small datalyn/<model>:ctx<N> entry that shares the model's files; dlc ollama clean lists and
removes them. An Ollama version that honours the setting is detected, and then nothing is created.
Cloud: large models hosted by ollama.com. Create a key at https://ollama.com/settings/keys and
write OLLAMA_API_KEY=<your key> in ~/.datalyn/.env (never shown, never logged). Not every model is
in the free plan (gemma4:31b is, and it is the recommended one). Cloud models that your local Ollama
shows after ollama signin (a -cloud suffix) are labelled cloud, never local.
Add a provider
Any OpenAI-compatible API (LM Studio, vLLM, Mistral, Groq…): Add a provider… at the bottom of
the model menu asks for a name, the base address (http://localhost:1234/v1), the name of the
variable that holds its key in ~/.datalyn/.env (MISTRAL_API_KEY; none for a local server; never
the key itself), then tests the connection. The engine keeps the list in ~/.datalyn/settings.json,
so the terminal sees it too. An address off your machine must use https://. Remove a provider with
the × of its section.
Features
|
|
| Chat |
In an editor tab beside your code (or in the side bar), kept when hidden and after a reload |
| Decisions |
File-change, shell-command, question (with proposed answers) and plan cards; keyboard: Enter allows, Esc denies |
| Review |
VS Code's comparison view: "stats.py (before) ↔ stats.py (proposed by Datalyn)", editable right side |
| Context |
Attach files with @ or "Send the selection"; a ring shows how full the context is, click to compact |
| Modes |
Default (asks for everything), Edit (edits without asking), Plan (read-only), Bypass (no confirmation, red status bar) |
| Models |
Gemini, Ollama Cloud, Ollama (local, free), OpenRouter and your own OpenAI-compatible providers, changed between two turns from the chat's menu |
| Sessions |
Resume one of the folder's sessions from the welcome screen or the history button |
Security
- Nothing runs without your decision, except in Bypass mode, which you confirm for each session and
which stays visible (red pill and status bar).
- In a folder you have not trusted (Restricted Mode), Datalyn stays read-only (plan mode), and the
engine command is taken from your user settings only.
- Keys stay in
~/.datalyn/.env, read by the engine only: the extension never reads them, and they
are never shown, logged, or sent anywhere but to the model's provider. The log masks anything that
looks like a key.
- With a cloud model (Gemini, Ollama Cloud, OpenRouter, a remote provider), the code the agent reads
is sent to that provider; the menu labels each model local or cloud. With Ollama on your
machine, your code stays on it.
- No telemetry: neither the extension nor the engine sends usage data anywhere. The only network
calls go to the model providers you set up (and to Opik, only if you configure it).
- The chat has a strict Content Security Policy: its own script only, no remote content.
Settings
| Setting |
Default |
|
datalyn.enginePath |
(empty) |
For developers: a clone of the engine, used with uv when no installed dlc is found |
datalyn.serverCommand |
(empty) |
For developers: the whole command that starts the engine |
datalyn.openIn |
editorTab |
Where the chat opens: editorTab or sidebar |
datalyn.defaultModel |
(empty) |
Model of new sessions, provider:name; empty: the engine's default |
Shortcuts
| Action |
macOS |
Windows, Linux |
| Open the chat, or put the cursor in it |
Cmd+Alt+K |
Ctrl+Alt+K |
| Send / new line |
Enter / Shift+Enter |
Enter / Shift+Enter |
| Stop the turn, or deny the decision shown |
Esc |
Esc |
Every shortcut can be changed in Keyboard Shortcuts (search "Datalyn").
Troubleshooting
- "The Datalyn engine is not installed": run
uv tool install datalyn-code in a terminal (or
the Install the engine button), then Datalyn: Check the installation.
- "The Datalyn engine x.y is too old":
uv tool upgrade datalyn-code (the card's button types
it), then a new session.
- A local model times out: the first answer of a large Ollama model can take minutes (loading,
then reading the whole conversation); the chat says "Loading the model into memory…". The engine
waits up to 600 s for a local model (
DATALYN_OLLAMA_LOCAL_TIMEOUT_S); the error offers Try again
and Change the model.
- The engine does not answer: open Datalyn: Show the log (Output, Datalyn Code); what the
engine wrote is also shown in the chat.
- The key is missing: the report says so; write it in
~/.datalyn/.env
(Datalyn: Open the folder of the key).
Limits
- One session per folder at a time; multi-root workspaces use the folder of the active editor.
- The model changes between two turns, never during one.
- Local models need memory: on 16 GB, prefer models of 12 billion parameters or less.
- The engine runs on your machine (or in Docker with its sandbox modes); it needs uv and Python 3.12
or later (uv installs it when needed).
- Preview: the interface and its settings may still change.
Datalyn Code en français
Un agent de codage dans VS Code. Datalyn lit, modifie et teste votre code ; chaque modification de
fichier et chaque commande passe par vous, dans le chat, avant d'avoir lieu.
Préversion. Cette première version publique fonctionne avec Gemini, Ollama (local et cloud),
OpenRouter et vos fournisseurs compatibles OpenAI. Vos retours sont bienvenus : Sberkani@datalyn.fr.
Ce qu'il fait
- Il demande avant d'agir. Une modification de fichier montre son diff dans le chat ;
« Revoir le diff » ouvre la comparaison de VS Code, où vous pouvez retoucher la proposition avant
de l'accepter. Une commande shell montre la ligne de commande exacte. Vous autorisez, refusez, ou
autorisez cette commande pour la session.
- Il montre son travail. Une ligne compacte par appel d'outil (lectures, recherches, commandes,
tests avec leurs résultats), un panneau des tâches pendant qu'il travaille, et les sous-agents
qu'il lance.
- Vous le guidez. Écrivez pendant qu'il travaille : votre message est lu avant sa prochaine
étape, ou gardé pour la fin du tour. Échap l'arrête au prochain point sûr.
- Il planifie d'abord, si vous le voulez. Le mode plan est en lecture seule : Datalyn étudie et
propose un plan que vous approuvez avant tout changement.
Installation
L'extension : installez-la depuis la Marketplace (vous y êtes).
Le moteur : Datalyn Code s'appuie sur son moteur, dlc, un programme Python installé avec
uv. Dans un terminal :
curl -LsSf https://astral.sh/uv/install.sh | sh # uv, si vous ne l'avez pas
uv tool install datalyn-code # le moteur : dlc
(Windows : powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
pour uv.) L'extension trouve dlc d'elle-même, y compris dans ~/.local/bin s'il n'est pas dans
votre PATH.
Un modèle : écrivez GEMINI_API_KEY=<votre clé> dans ~/.datalyn/.env
(obtenir une clé gratuite), ou utilisez Ollama sur votre
machine (sans clé). L'extension ne lit ni n'affiche jamais une clé.
Lancez ensuite Datalyn : Vérifier l'installation (uv, le moteur, les clés, définies ou non,
jamais leur valeur, et Docker, dans un rapport en lecture seule). Le parcours Bien démarrer avec
Datalyn Code (Aide, Bienvenue) reprend ces étapes : son bouton Installer le moteur tape la
commande dans un terminal, vous la lancez. Mettez le moteur à jour avec
uv tool upgrade datalyn-code ; l'extension vous prévient quand il est trop ancien.
Choisir son modèle
Cliquez sur la pastille du modèle sous la saisie (entre deux tours) : un menu s'ouvre au-dessus,
avec un champ de recherche, les modèles Recommandés, puis une section par fournisseur :
Gemini, Ollama Cloud, Ollama (local), OpenRouter et vos fournisseurs. Chaque modèle
montre sa fenêtre de contexte et un badge : local (il tourne sur votre machine) ou cloud (les
serveurs d'un autre : votre code y est envoyé, et le chat le dit la première fois dans une session).
Seuls les modèles de discussion qui gèrent les outils sont affichés ; Afficher tous les modèles
montre les autres, grisés, avec la raison. Un fournisseur pas encore utilisable dit pourquoi (« clé
absente », « Ollama n'est pas démarré »). Flèches, Entrée et Échap fonctionnent comme attendu.
datalyn.defaultModel règle le modèle des nouvelles sessions, par exemple gemini:gemini-2.5-pro.
Ollama local et cloud
Local : des modèles ouverts sur votre machine, gratuits, votre code n'en sort pas ; plus lents
et moins sûrs que Gemini sur les tâches longues.
brew install ollama && brew services start ollama
ollama pull qwen2.5-coder:7b # ou gemma4:12b, qwen3:8b : des modèles qui gèrent les outils
Datalyn donne au modèle une fenêtre de contexte explicite (32 768 jetons par défaut,
DATALYN_OLLAMA_NUM_CTX). L'API OpenAI d'Ollama ignore ce réglage : Datalyn crée donc une fois une
petite entrée datalyn/<modèle>:ctx<N> qui partage les fichiers du modèle ; dlc ollama clean les
liste et les supprime. Une version d'Ollama qui honore ce réglage est détectée : plus rien n'est créé.
Cloud : de grands modèles hébergés par ollama.com. Créez une clé sur
https://ollama.com/settings/keys et écrivez OLLAMA_API_KEY=<votre clé> dans ~/.datalyn/.env
(jamais affichée, jamais journalisée). Tous les modèles ne sont pas dans l'offre gratuite
(gemma4:31b l'est, c'est le modèle recommandé). Les modèles cloud que montre votre Ollama local
après ollama signin (suffixe -cloud) sont étiquetés cloud, jamais local.
Ajouter un fournisseur
N'importe quelle API compatible OpenAI (LM Studio, vLLM, Mistral, Groq…) : Ajouter un
fournisseur…, en bas du menu du modèle, demande un nom, l'adresse de base
(http://localhost:1234/v1), le nom de la variable qui contient sa clé dans ~/.datalyn/.env
(MISTRAL_API_KEY ; aucune pour un serveur local ; jamais la clé elle-même), puis teste la
connexion. Le moteur garde la liste dans ~/.datalyn/settings.json : le terminal la voit aussi. Une
adresse hors de votre machine doit être en https://. Le × de sa section retire un fournisseur.
Fonctions
|
|
| Chat |
Dans un onglet à côté du code (ou dans la barre latérale), conservé quand il est masqué et après un rechargement |
| Décisions |
Cartes de modification de fichier, de commande shell, de question (avec réponses proposées) et de plan ; clavier : Entrée autorise, Échap refuse |
| Revue |
La comparaison de VS Code : « stats.py (avant) ↔ stats.py (proposé par Datalyn) », côté droit modifiable |
| Contexte |
Joindre des fichiers avec @ ou « Envoyer la sélection » ; un anneau montre le remplissage du contexte, un clic propose de compacter |
| Modes |
Par défaut (demande tout), Édition (modifie sans demander), Plan (lecture seule), Bypass (sans confirmation, barre d'état rouge) |
| Modèles |
Gemini, Ollama Cloud, Ollama (local, gratuit), OpenRouter et vos fournisseurs compatibles OpenAI, changés entre deux tours depuis le menu du chat |
| Sessions |
Reprendre une session du dossier depuis l'accueil ou le bouton Historique |
Sécurité
- Rien ne s'exécute sans votre décision, sauf en mode Bypass, que vous confirmez à chaque session et
qui reste visible (pastille et barre d'état rouges).
- Dans un dossier non approuvé (mode restreint), Datalyn reste en lecture seule (mode plan), et la
commande du moteur n'est lue que dans vos réglages utilisateur.
- Les clés restent dans
~/.datalyn/.env, lues par le moteur seul : l'extension ne les lit jamais ;
elles ne sont jamais affichées ni journalisées, et ne partent qu'au fournisseur du modèle. Le
journal masque tout ce qui ressemble à une clé.
- Avec un modèle cloud (Gemini, Ollama Cloud, OpenRouter, un fournisseur distant), le code que lit
l'agent est envoyé à ce fournisseur ; le menu marque chaque modèle local ou cloud. Avec
Ollama sur votre machine, votre code y reste.
- Aucune télémétrie : ni l'extension ni le moteur n'envoient de données d'usage. Les seuls appels
réseau vont aux fournisseurs de modèles que vous configurez (et à Opik, seulement si vous le
configurez).
- Le chat a une politique de sécurité de contenu stricte : son propre script seulement, aucun contenu distant.
Réglages
| Réglage |
Défaut |
|
datalyn.enginePath |
(vide) |
Pour les développeurs : un clone du moteur, lancé avec uv quand aucun dlc installé n'est trouvé |
datalyn.serverCommand |
(vide) |
Pour les développeurs : la commande complète du moteur |
datalyn.openIn |
editorTab |
Où s'ouvre le chat : editorTab ou sidebar |
datalyn.defaultModel |
(vide) |
Modèle des nouvelles sessions, fournisseur:nom ; vide : le défaut du moteur |
Raccourcis
| Action |
macOS |
Windows, Linux |
| Ouvrir le chat, ou y placer le curseur |
Cmd+Alt+K |
Ctrl+Alt+K |
| Envoyer / aller à la ligne |
Entrée / Maj+Entrée |
Entrée / Maj+Entrée |
| Arrêter le tour, ou refuser la décision affichée |
Échap |
Échap |
Tous les raccourcis se changent dans Raccourcis clavier (chercher « Datalyn »).
Dépannage
- « Le moteur Datalyn n'est pas installé » : lancez
uv tool install datalyn-code dans un
terminal (ou le bouton Installer le moteur), puis Datalyn : Vérifier l'installation.
- « Le moteur Datalyn x.y est trop ancien » :
uv tool upgrade datalyn-code (le bouton de la
carte la tape), puis une nouvelle session.
- Un modèle local dépasse le délai : la première réponse d'un gros modèle Ollama peut prendre
plusieurs minutes (chargement, puis lecture de toute la conversation) ; le chat affiche
« Chargement du modèle en mémoire… ». Le moteur attend jusqu'à 600 s un modèle local
(
DATALYN_OLLAMA_LOCAL_TIMEOUT_S) ; l'erreur propose Réessayer et Changer de modèle.
- Le moteur ne répond pas : ouvrez Datalyn : Afficher le journal (Sortie, Datalyn Code) ; ce
que le moteur a écrit s'affiche aussi dans le chat.
- La clé manque : le rapport le dit ; écrivez-la dans
~/.datalyn/.env
(Datalyn : Ouvrir le dossier de la clé).
Limites
- Une session par dossier à la fois ; dans un espace de travail à plusieurs dossiers, celui de
l'éditeur actif.
- Le modèle change entre deux tours, jamais pendant un tour.
- Les modèles locaux demandent de la mémoire : sur 16 Go, préférez des modèles de 12 milliards de
paramètres ou moins.
- Le moteur tourne sur votre machine (ou dans Docker avec ses modes sandbox) ; il demande uv et
Python 3.12 ou plus (uv l'installe au besoin).
- Préversion : l'interface et ses réglages peuvent encore changer.
Datalyn Code, © 2026 DATALYN. All rights reserved. Tous droits réservés.
| |