<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jean-Phi Baconnais</title>
    <description>The latest articles on Forem by Jean-Phi Baconnais (@jphi_baconnais).</description>
    <link>https://forem.com/jphi_baconnais</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F232141%2F19dcf141-f87f-466c-9de2-930154936431.jpg</url>
      <title>Forem: Jean-Phi Baconnais</title>
      <link>https://forem.com/jphi_baconnais</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jphi_baconnais"/>
    <language>en</language>
    <item>
      <title>⚗️ A local Agent with ADK and Docker Model Runner</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Fri, 20 Mar 2026 15:55:05 +0000</pubDate>
      <link>https://forem.com/zenika/a-local-agent-with-adk-and-docker-model-runner-283j</link>
      <guid>https://forem.com/zenika/a-local-agent-with-adk-and-docker-model-runner-283j</guid>
      <description>&lt;p&gt;&lt;em&gt;A French version is available &lt;a href="https://jeanphi-baconnais.gitlab.io/post/2026-adk-dmr" rel="noopener noreferrer"&gt;on my website&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  ⛅ Using AI in the Cloud
&lt;/h2&gt;

&lt;p&gt;I’m the first to admit it: I use AI models provided in the Cloud. As a user, it suits me perfectly. The models are powerful and give me good answers.&lt;/p&gt;

&lt;p&gt;But is the scope of these models really adapted to my needs? They do the job, that’s a fact, but aren't they a bit too general-purpose for my specific use cases?&lt;/p&gt;

&lt;p&gt;Running models locally is not new. It was actually one of the very first requirements that emerged: trying to deploy a model on a local machine.&lt;/p&gt;

&lt;p&gt;The apparition of &lt;strong&gt;Small Language Models (SLM)&lt;/strong&gt; has offered a concrete answer to this problem, making it possible to adapt models to specific use cases and simplify their deployment.&lt;/p&gt;

&lt;p&gt;There are now various alternatives for deploying these models. I have first heard about &lt;a href="https://ollama.com/" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt;, as it was, if I’m right, one of the first tools to simplify this process.&lt;/p&gt;

&lt;p&gt;If you’re interested in Small Language Models, I highly recommend Philippe Charrière's articles available on &lt;a href="https://k33g.hashnode.dev" rel="noopener noreferrer"&gt;his blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I took some time to make my own experience, and that’s what I’m sharing with you in this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 My Context
&lt;/h2&gt;

&lt;p&gt;For this experiment, I wanted to use my usual agent framework for its simplicity: Google’s &lt;strong&gt;Agent Development Kit (ADK)&lt;/strong&gt;:&lt;a href="https://google.github.io/adk-docs/" rel="noopener noreferrer"&gt; https://google.github.io/adk-docs/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A Java agent can be quickly created with ADK and these lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;BaseAgent&lt;/span&gt; &lt;span class="nf"&gt;initAgent&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;LlmAgent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"trip-planner-agent"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"A simple trip helper with ADK"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"gemini.model"&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;instruction&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"""
        You are A simple Trip Planner Agent. Your goal is to give me information about one destination.
    """&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🐳 Docker Model Runner
&lt;/h2&gt;

&lt;p&gt;I had already tested Ollama to run models on my machine. But for this experiment, I wanted to try Docker's solution: &lt;strong&gt;&lt;a href="https://docs.docker.com/ai/model-runner/" rel="noopener noreferrer"&gt;Docker Model Runner&lt;/a&gt; (DMR)&lt;/strong&gt;. This project provides new Docker commands to pull, run, and list models available on your machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    docker model pull
    docker model list
    docker model run 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A quick configuration is required in the Docker Desktop settings to enable this service:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-adk-dmr%2F1-docker-config.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-adk-dmr%2F1-docker-config.png" alt="Docker settings" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that, DMR allows you to easily fetch a model and run it on your machine. For example, to use the “gemma3” model, simply run the following command. The model will be downloaded if you don’t already have it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    docker model run gemma3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once started, the agent can respond to you as shown in this example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-adk-dmr%2F2-dmr-run.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-adk-dmr%2F2-dmr-run.png" alt="Docker model run" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧩 The link between ADK / DMR
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/langchain4j/langchain4j" rel="noopener noreferrer"&gt;&lt;strong&gt;langchain4j&lt;/strong&gt;&lt;/a&gt; library will link the model specified in ADK and the model provided by DMR. This dependency must to be added:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;    &lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;dev.langchain4j&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;langchain4j-open-ai&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.1.0&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code will be a little bit modified. Instead of calling the model with a string, we use an instance of the LangChain4j class, defined with an OpenAiChatModel instance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;OpenAiChatModel&lt;/span&gt; &lt;span class="n"&gt;chatModel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAiChatModel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;baseUrl&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;modelUrl&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"not-needed-for-local"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;modelName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;modelName&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;maxRetries&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Duration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ofMinutes&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;

&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;adkModel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;LangChain4j&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chatModel&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;LlmAgent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;builder&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Travel Agent"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Travel expert using a local model"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;adkModel&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  🙌 A Locally Available Agent
&lt;/h2&gt;

&lt;p&gt;The agent is now plugged into a local model. The application can be started with the Maven command &lt;code&gt;mvn compile exec:java -Dexec.mainClass=adk.agent.TravelAgent&lt;/code&gt; after starting your model with Docker Model Runner. For development, this is perfect.&lt;/p&gt;

&lt;p&gt;Once the application was functional, I decided to set up a docker-compose.yml file to start the model and the application with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--build&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker attach adk-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;💡To avoid repackaging the application every time, a cache is implemented in the Dockerfile.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-adk-dmr%2F3-app-ok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-adk-dmr%2F3-app-ok.png" alt="Docker model run" width="800" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TADA!&lt;/strong&gt; 🥳&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 A "Local" Future?
&lt;/h2&gt;

&lt;p&gt;This project was just an experimentation, but it gives some other questions. My primary use of AI is for development. Wouldn't it be better to dedicate a locally deployed agent to this activity?&lt;/p&gt;

&lt;p&gt;When I create agents planned to be deployed on the Cloud, perhaps a local model would be more than sufficient during the development phase? These questions have been answered by others who have tested this, but can it be implemented (and quickly) in a corporate context?&lt;/p&gt;

&lt;p&gt;We can, of course, go even further by building our own custom model for our specific context, but that’s a topic for another day! 😁&lt;/p&gt;

</description>
      <category>ai</category>
      <category>development</category>
      <category>docker</category>
      <category>adk</category>
    </item>
    <item>
      <title>How agentic AI resurrected my "Old" side project</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Mon, 16 Mar 2026 10:27:33 +0000</pubDate>
      <link>https://forem.com/gde/how-agentic-ai-resurrected-my-old-side-project-31hf</link>
      <guid>https://forem.com/gde/how-agentic-ai-resurrected-my-old-side-project-31hf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A french version of this blog post is available &lt;a href="https://jeanphi-baconnais.gitlab.io/" rel="noopener noreferrer"&gt;on my website&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since I started working (a few years ago), I’ve been launching GitLab projects to test tools, frameworks, build PoCs, or start projects I hope to finish. Spoiler alert: that never happens!&lt;/p&gt;

&lt;p&gt;However, I have one side project that is a little bit different because it concerns my family: a genealogy tree application. One of my aunts managed to trace our genealogy tree and she found people before 1800!&lt;/p&gt;

&lt;p&gt;To answer a question I’ve been asked several times: I decided to create this project first to have fun, test, and learn new technologies and, let’s be honest, to avoid paying for a solution that, at the time, was expensive and didn't always fit my needs. But above all, I wanted to play around and learn things.&lt;/p&gt;

&lt;p&gt;This project is private because it undergoes constant testing. It’s the project that introduced me to Kubernetes and deploying a cluster on Google Cloud Platform. Is there any point in having an app used by one or two people running on Kubernetes? Clearly not. Installing it on a K8s cluster on a Raspberry Pi? Not really, but it’s fun (or not 😂).&lt;/p&gt;

&lt;p&gt;So, it’s a personal project where the architecture often changes and undergoes my experiments. In fact, those experiments are exactly what made the project so complex and why I regularly procrastinate when it comes to making updates.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔎 Architecture details
&lt;/h2&gt;

&lt;p&gt;The project consists of several technical blocks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On the Frontend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Vue.js component to visualize the family tree. No actions possible.&lt;/li&gt;
&lt;li&gt;A second Vue.js component dedicated to managing the tree.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;On the Backend:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A "legacy" Node.js block, consisting of a multitude of endpoints to fetch person data and calculate coordinates for links between individuals.&lt;/li&gt;
&lt;li&gt;A Go backend to handle "heavy" processing for all people in the tree, such as positioning.&lt;/li&gt;
&lt;li&gt;A Java/Quarkus backend to replace the legacy Node.js code, containing more recent features.&lt;/li&gt;
&lt;li&gt;A second Java/Quarkus backend, deployed on Cloud Run, which checks for birthdays daily and sends notifications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;On the Infrastructure side:&lt;/strong&gt; the Kubernetes parts (both Cloud and Raspberry Pi) mentioned earlier no longer exist. The birthday notification component is the only one deployed in Google Cloud Platform, I’m the only user. A &lt;code&gt;docker-compose&lt;/code&gt; configuration allows for quick local deployment.&lt;/p&gt;

&lt;p&gt;Here is a representation of the project architecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-side-project-revival%2F1-archi-old.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-side-project-revival%2F1-archi-old.png" alt="Old architecture" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As I mentioned at the beginning of this article, many choices are intentional (and not necessarily the best, I'll grant you that! 😁). I work on this project totally randomly depending on my professional and personal context, and the admin interface clearly leaves much to be desired (CSS and I don't get along), but:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My family gets birthday notifications.&lt;/li&gt;
&lt;li&gt;I’ve digitized part of my aunt’s work.&lt;/li&gt;
&lt;li&gt;The GCP deployment costs less than 5 euros a month.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ These goals satisfy me, which explains why I invest less time in the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 The Arrival of Agentic AI-Powered Dev Environments
&lt;/h2&gt;

&lt;p&gt;The arrival of AI and AI-boosted IDEs was, for me, and I imagine many others, an opportunity to test them and change the way to develop. My favorite tool? &lt;strong&gt;Google Antigravity&lt;/strong&gt;. The fact that I am a Google Developer Expert gives me the opportunity to receive updates directly via email or Google Chat and attend presentations. After testing other tools like Cursor or Claude, I am fine with Google's project.&lt;/p&gt;

&lt;p&gt;Before Antigravity, I was focused on IDX, which has since been integrated into &lt;strong&gt;Firebase Studio&lt;/strong&gt; (I talk more about it in this article: &lt;a href="https://dev.to/zenika/idx-becames-firebase-studio-be6"&gt;https://dev.to/zenika/idx-becames-firebase-studio-be6&lt;/a&gt;). Firebase Studio is more focused on applications prototyping, while Antigravity is more to continue a project by positioning the developer as an orchestrator of agents.&lt;/p&gt;

&lt;p&gt;I’m also a big fan of &lt;strong&gt;GitLab Duo&lt;/strong&gt;, which I’ve tested on some projects. A mix of GitLab Duo and Antigravity is possible (and very interesting); I give you this new article: &lt;a href="https://dev.to/zenika/how-gilab-duo-agent-platform-antigravity-can-collaborate-to-improve-the-quality-of-our-38bm"&gt;https://dev.to/zenika/how-gilab-duo-agent-platform-antigravity-can-collaborate-to-improve-the-quality-of-our-38bm&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Re-launching My Side Project
&lt;/h2&gt;

&lt;p&gt;Let’s get to the point of this article: how Antigravity relaunched my side project. The project was functional, and I regularly added ancestors found by my aunt. My many attempts at graphical representations impacted the architecture, and new options required a lot of time to adapt the backend components. After several years without writing JS or Node code, their migration was not very exciting. I had migrated a few features, but it represents a few percent of the code.&lt;/p&gt;

&lt;p&gt;That’s where I thought Antigravity could help. I often gave it technical tasks, like migrating a Java version, reviewing my &lt;code&gt;docker-compose&lt;/code&gt; files, or updating documentation. But when I thought to ask it to take over my Merge Request (MR) for migrating my Node component to Quarkus, I was blown away. &lt;/p&gt;

&lt;p&gt;The "skills" didn't exist yet, but after a few prompts to an agent in "Plan" mode, it proposed a plan that actually made sense. After I validated the plan, the Quarkus component was edited and completed. Of course, I had to review a few things, but it took me a few hours whereas a manual migration would have taken days.&lt;/p&gt;

&lt;p&gt;Why not continue? I ask Antigravity to delete the Go component and replace it with Quarkus. The code to migrate was much smaller and I have not any modification to do. Great!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For me, this is where AI can really help: supporting us in tasks that are clearly less fun to do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Discussing with AI agents in &lt;strong&gt;Plan mode&lt;/strong&gt; ensures your request is understood and the proposal meets your expectations. If it doesn't, you can adjust it, and only once you agree do you trigger the execution. This is the principle of "AI-Driven Development."&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 A side project re motivated in a few weeks
&lt;/h2&gt;

&lt;p&gt;After migrating my Node and Go components, I now have fewer components, focused on a technical stack I currently use: Quarkus and Vue.js. The application is simpler, and being able to focus on new features has given me a boost to work on this project again.&lt;/p&gt;

&lt;p&gt;Antigravity also helped me review and harmonize the UI of the admin interface. I’ll admit, I totally trust it when it suggests style changes. Honestly, it can’t be worse than if I did it myself! 😂&lt;/p&gt;

&lt;p&gt;Another interesting aspect is the long discussions with the agent in "Plan" mode to challenge technical aspects like architecture, even if it's simple, to optimize certain parts or brainstorm improvements and new features.&lt;/p&gt;

&lt;p&gt;Here is the current architecture: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-side-project-revival%2F2-archi-now.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-side-project-revival%2F2-archi-now.png" alt="New architecture" width="800" height="665"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, 60% of the project's code is in Java. Unfortunately, I don't have the stats from before this experiment, but Node.js was probably neck-and-neck with Java.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-side-project-revival%2F3-gitlab-stats.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2026-side-project-revival%2F3-gitlab-stats.png" alt="New architecture" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔑 Key Takeaways
&lt;/h2&gt;

&lt;p&gt;AI clearly allowed me to accelerate my side project by resolving tasks that had no real added value or didn't interest me. I’m not good at frontend, AI helped me improve that part, and it’s much more pleasant to work on a product that looks good, right? 😊 My motivation was boosted now that the migrations I started years ago are finally resolved.&lt;/p&gt;

&lt;p&gt;Now I’m going to focus on making the tree available to my family, and add new features like photo management.&lt;/p&gt;

&lt;p&gt;💡 For fans of &lt;strong&gt;gemini-cli&lt;/strong&gt;, the Plan mode is now available in the version released on March 11: &lt;a href="https://github.com/google-gemini/gemini-cli/discussions/22078" rel="noopener noreferrer"&gt;https://github.com/google-gemini/gemini-cli/discussions/22078&lt;/a&gt; &lt;/p&gt;

</description>
      <category>ai</category>
      <category>antigravity</category>
      <category>development</category>
    </item>
    <item>
      <title>How GiLab Duo Agent Platform &amp; Antigravity can collaborate to improve the quality of our applications</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Fri, 13 Feb 2026 13:37:56 +0000</pubDate>
      <link>https://forem.com/zenika/how-gilab-duo-agent-platform-antigravity-can-collaborate-to-improve-the-quality-of-our-38bm</link>
      <guid>https://forem.com/zenika/how-gilab-duo-agent-platform-antigravity-can-collaborate-to-improve-the-quality-of-our-38bm</guid>
      <description>&lt;h2&gt;
  
  
  🔎 Short introduction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitLab Duo Agent Platform&lt;/strong&gt; is the new AI solution available in the DevOps platform. Integrated in the Premium and Ultimate, this offers a lot of very interesting features powered by AI I tried to resume in this cheatsheet (available on &lt;a href="https://dev.to/zenika/gitlab-cheatsheet-15-gitlab-duo-3fhg"&gt;dev.to&lt;/a&gt;):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F1-duo-cheatsheet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F1-duo-cheatsheet.png" alt="GitLab Duo Agent Platform Cheatsheet" width="800" height="870"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Antigravity&lt;/strong&gt; is a new agent developer platform created by Google which notably changes the developer mindset by turning them into an agent manager or orchestrator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F2-antigravity.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F2-antigravity.png" alt="Antigravity logo" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Why use these 2 AI tools?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Antigravity&lt;/strong&gt; is a great development tool, mainly focused on the development of features or to resolve issues on projects. **GitLab Duo Agent Platform, **available for Premium and Ultimate GitLab, is present throughout the DevOps platform, helping us from project conception (epics, issues) to the CICD.&lt;/p&gt;

&lt;p&gt;I have the chance to have access to GitLab Duo Agent Platform for personal or demo projects. For my other projects, I use Antigravity and wait, why not use Antigravity on my projects that already have GitLab Duo Agent Platform access?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;🎯 This is the objective of this blog post. Show you the result of using these two tools and explain how much this can be useful to improve my projects.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For this blog post, I created a new application, very classic : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a React front end component, &lt;/li&gt;
&lt;li&gt;a Springboot backend with a Gemini integration to generate images&lt;/li&gt;
&lt;li&gt;a Docker compose configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🤗 How to combine these two Agentic Developer Platform?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitLab Duo Agent Platform&lt;/strong&gt; can help you generate a description of epics and issues from the title or notes you can initiate.&lt;/p&gt;

&lt;p&gt;The  first conclusion of this usage of AI (even outside the combination of GitLab Duo and Antigravity) is that it encourages me to write a maximum of information on my issues. Even on projects where I don’t have access to GitLab Duo, I maintain this behavior and try to give now more importance to the description of issues.&lt;/p&gt;

&lt;p&gt;The next step is to initiate a Merge Request (MR) directly from the issue using the button “Generate MR with Duo”.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F3-duo-issue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F3-duo-issue.png" alt="GitLab issue" width="550" height="592"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the result is very interesting. GitLab launches an agent session (visible in the menu “Automate”) and after a few minutes, a MR is created and one commit appears.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F4-issue-duo-done.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F4-issue-duo-done.png" alt="GitLab issue done" width="517" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F5-duo-session.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F5-duo-session.png" alt="GitLab Duo session" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F6-duo-plan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F6-duo-plan.png" alt="Duo session" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F7-duo-mr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F7-duo-mr.png" alt="Duo MR" width="800" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating an issue and letting GitLab Duo work on it to initialize one MR is a great game changer. Of course, as with any MR, human reviews are still required, but a high quality is here.&lt;/p&gt;

&lt;p&gt;I forgot to mention this point, Antigravity is based on a fork of Visual Studio Code, where you can install the GitLab Workflow extension including GitLab Duo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F8-gitlab-extension.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F8-gitlab-extension.png" alt="GitLab extension" width="800" height="531"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F9-duo-antigravity.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F9-duo-antigravity.png" alt="Duo integration in Antigravity" width="800" height="943"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 AI Review of AI generated code
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;💡Before reviewing this MR, can I imagine delegate this task to Antigravity?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Of course. Let’s see the result. After opening the Git branch in Antigravity, I ask it to review this MR. On the previous Merge Request, Antigravity found and fixed several issues like a CORS problem, and reviewed the Java class architecture. After examining the fixes, I agree with that and I commit and push.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F10-duo-review.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F10-duo-review.png" alt="Duo review" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*💡 Next step? Does GitLab Duo agree with the changes? *&lt;/p&gt;

&lt;p&gt;In the MR, we can ping GitLab Duo. “&lt;em&gt;Hey @GitLabDuo, what do you think about the last commit&lt;/em&gt;”? &lt;/p&gt;

&lt;p&gt;After a few minutes, GitLab Duo provided its review. All the items detected during the initial review are listed with their status updated with the new commits.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F11-duo-recommandations.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F11-duo-recommandations.png" alt="Duo recommandations" width="717" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this example, a demo application to generate LEGO images, the implementation of Gemini is missing but for the first step of this application, this is acceptable. I can merge it.&lt;/p&gt;

&lt;p&gt;👉 This approach is interesting. Everyone knows that AI needs human review. While this workflow might not immediately include your human review, for complex or big features, this AI review step can fix issues the first model didn’t see. On my MR, I saw interesting discussions and conflicting opinions.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Go further
&lt;/h2&gt;

&lt;p&gt;After playing with both AI tools, I noticed one action which is repeated: the manual request for GitLab Duo to make a review. To fix it, I connected the GitLab MCP, which allows me to facilitate actions on issues, merge requests, etc.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F12-gitlab-mcp-configuration.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F12-gitlab-mcp-configuration.png" alt="GitLab MCP configuration" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this configuration, I can ask Antigravity to ping GitLab Duo for a new review. I can stay on my IDE and keep focused on another task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F13-gitlab-mcp-work.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F13-gitlab-mcp-work.png" alt="GitLab MCP working" width="523" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This can be further improved by utilizing &lt;strong&gt;Skills&lt;/strong&gt;. This new standard maintained by Anthropic  introduces a way to specify instructions, scripts and resources that AI agents can integrate and use to perform tasks. &lt;/p&gt;

&lt;p&gt;📖 &lt;a href="https://github.com/agentskills/agentskills" rel="noopener noreferrer"&gt;https://github.com/agentskills/agentskills&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Antigravity integrated this standard (cf doc &lt;a href="https://antigravity.google/docs/skills" rel="noopener noreferrer"&gt;https://antigravity.google/docs/skills&lt;/a&gt;) and skills have to be in the &lt;code&gt;.agent/skills&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;To reduce manual action, I create a &lt;code&gt;request_review&lt;/code&gt; skill designed to automatically add a note into the Merge Request asking GitLab Duo to review it. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F14-skills.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F14-skills.png" alt="Skills example" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this file, we can also add a request to GitLab Duo after each commit. As you can see in the next screenshot, I commit the skill file and we see a glab (the GitLab CLI) command being executed to add a note in the MR.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F15-antigravity-status.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F15-antigravity-status.png" alt="Antigravity status" width="694" height="201"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F16-duo-review-by-antigravity.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F16-duo-review-by-antigravity.png" alt="Duo review by Antigravity" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 A future with some AI tools?
&lt;/h2&gt;

&lt;p&gt;I have used the pair GitLab Duo &amp;amp; Antigravity across different contexts and issues. From creating new projects to migrating Java versions or adding a feature, using these two tools was interesting. The “discussion” between them raised many questions and reflections.&lt;/p&gt;

&lt;p&gt;For this blog post, my Lego application is done and works locally in two issues. Of course I don’t let AI create all the code, but the majority was done by GitLab Duo and Antigravity.&lt;/p&gt;

&lt;p&gt;I am aware that this usage is primarily for demo projects or short PoCs, but I am sure that the power of these two tools can be complementary and significantly improve the quality of our application.&lt;/p&gt;

&lt;p&gt;As I explained in this &lt;a href="https://dev.to/zenika/google-antigravity-lere-des-ide-agentique-109i"&gt;blog post&lt;/a&gt; and at the beginning of this one, we, developers, must change our workflow by migrating from synchronous work to asynchronously, running tasks in parallel and focusing on agent orchestration. However, we must also be careful to respect the limitations of our cognitive capacity. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F17-lego-app.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F26-duo-antigravity%2F17-lego-app.png" alt="Lego Generator application" width="677" height="876"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gitlab</category>
      <category>antigravity</category>
      <category>google</category>
      <category>giltlabduo</category>
    </item>
    <item>
      <title>2025 Review 👀</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Fri, 19 Dec 2025 08:59:14 +0000</pubDate>
      <link>https://forem.com/jphi_baconnais/2025-review-3c2d</link>
      <guid>https://forem.com/jphi_baconnais/2025-review-3c2d</guid>
      <description>&lt;p&gt;Une nouvelle année qui se termine (déjà? 😅) et comme pour &lt;a href="https://dev.to/jphi_baconnais/2023-is-over--38oi"&gt;2023&lt;/a&gt; et &lt;a href="https://dev.to/jphi_baconnais/retour-sur-2024-3655"&gt;2024&lt;/a&gt;, je vous raconte mon année !&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sommaire :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Mon quotidien &lt;/li&gt;
&lt;li&gt;🗣️ Conférences&lt;/li&gt;
&lt;li&gt;📚 Blog post&lt;/li&gt;
&lt;li&gt;🫶 Communauté&lt;/li&gt;
&lt;li&gt;🎒 Zenika&lt;/li&gt;
&lt;li&gt;🎙️ Podcast&lt;/li&gt;
&lt;li&gt;🌍 Open source&lt;/li&gt;
&lt;li&gt;✋Mentoring&lt;/li&gt;
&lt;li&gt;🚀 2026 ? 🗓️&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mon quotidien? &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Une année 2025 sur les chapeaux de roues, mais côté pro c'est un peu en retrait, ou du moins sur le début d'année 😁. La raison? l'arrivée de mon second p'tit garçon quelques jours avant le début de l'année ! &lt;/p&gt;

&lt;p&gt;Toujours en place chez Nickel sur un rôle de Tech Lead sur le SI Métier, j'ai en cette fin d'année en visu ma sortie fin janvier 2026. Une mission de 3 ans très enrichissante. &lt;/p&gt;

&lt;h2&gt;
  
  
  🗣️ Conférences &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;L'arrivée de mon second garçon s'est remarqué sur mes soumissions à des conférences, moins nombreuses forcément &lt;strong&gt;mais&lt;/strong&gt; j'ai quand même eu la chance d'avoir été sélectionné au Devoxx France, au DevFest Francophone (en ligne) et au DevFest Nantes en tant que Backup (ma première !) 😁&lt;br&gt;
Mes sujets? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;{Cloud || Container} Development Environment&lt;/strong&gt; avec &lt;a href="https://www.linkedin.com/in/bourgeoisbenjamin" rel="noopener noreferrer"&gt;Benjamin Bourgeois&lt;/a&gt; sur ces 3 conférences&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Et si vous mettiez à disposition vos jobs de CI/CD sur une étagère ?&lt;/strong&gt; avec &lt;a href="https://www.linkedin.com/in/julesagostini" rel="noopener noreferrer"&gt;Jules Agostini&lt;/a&gt; au Devoxx France&lt;/li&gt;
&lt;li&gt;Un BOF GitLab au Devoxx France avec &lt;a href="https://www.linkedin.com/in/davinkevin" rel="noopener noreferrer"&gt;Kevin Davin&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/matthieu-vincent-ab25064" rel="noopener noreferrer"&gt;Matthieu Vincent&lt;/a&gt; et [Olivier Dupré](&lt;a href="https://www.linkedin.com/in/dupreolivier" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/dupreolivier&lt;/a&gt; (de GitLab)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firebase Studio &amp;amp; Antigravity : De l'idée à l'app, de l'assistance à l'orchestration&lt;/strong&gt;, un code lab que j'ai pu animé avec Benjamin dans le cadre des Formations de Noël pour le Secours populaire&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📚 Blog post &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Ne pas me déplacer m'a permis de rédiger plusieurs acticles de blog, autour de l'IA (sujet de l'année non? 😅) &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../gitlab-feature-flag"&gt;🦊 GitLab - Feature flags, a practical guide to control your features&lt;/a&gt; : Rapide démonstration de l'utilisation de l'outil de feature flipping de GitLab.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../welcome-firebase-studio"&gt;IDX becames Firebase Studio&lt;/a&gt; : Introduction de l'outil de Google Firebase Studio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../gemini-transcription"&gt;🎙️ Rendre son podcast accessible avec l'IA au service de la transcription&lt;/a&gt; : Retour d'expérience sur l'utilisation de Gemini 2.5 Pro et Vertex AI pour transcrire et nettoyer les épisodes du Zenikast.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../firebasestudio-videos"&gt;📺 Getting Started with Firebase Studio&lt;/a&gt; : Une série de vidéos pour prendre en main Firebase Studio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../cicd-catalog"&gt;🇬🇧 Modernize your CI/CD with CI/CD Catalog&lt;/a&gt; : Exploration des bénéfices du catalogue CI/CD de GitLab pour partager et réutiliser des composants.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../discovering-gkg"&gt;🔎 Exploring the GitLab Knowledge Graph&lt;/a&gt; : Découverte de l'outil de visualisation de dépendances de GitLab (GKG).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../gitlab-duo-agent-platform"&gt;🤖 Vibe Coding with GitLab Duo : Agentic Power in Action&lt;/a&gt; : Tour d'horizon de la plateforme agentique de GitLab Duo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../gemini-cli"&gt;🤖 Gemini dans votre terminal avec Gemini CLI&lt;/a&gt; : Quelques tips sur cette CLI que j'ai pu utilisée chez mon client et sur mes projets perso.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/zenika/hacktoberfest-25-ledition-zenika-open-source-3mh3"&gt;Hacktoberfest 25 : l’édition Zenika Open Source&lt;/a&gt; : Retour sur cette édition 2025 de l'Hacktoberfest.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../2025-gitlab-epic-conf"&gt;GitLab Epic Conference Paris 25&lt;/a&gt; : Mon compte-rendu de cet événement majeur où l'IA et les agents étaient au cœur des discussions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../adk-gemini-javelit"&gt;ADK, Gemini &amp;amp; Javelit = 😍&lt;/a&gt; : Ce trinôme est juste magique pour pouvoir créer des applications IA rapidement (et en Java).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="//../antigravity"&gt;Antigravity&lt;/a&gt;: Présentation de cette nouvelle plateforme de développement agentique (écrit avec Benjamin).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;la préparation d'un article pour le magazine Programmez.com avec Benjamin 🫢&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🫶 Communauté &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Concernant l'aspect communautaire, il y a eu du bon et du moins bons 😕&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Le moins bon sera ma décision en novembre de &lt;strong&gt;stopper&lt;/strong&gt; l'organisation des &lt;strong&gt;Human Talks Nantes&lt;/strong&gt;. Une page qui se tourne après 5 ans à essayer d'animer tout d'abord les "Human Talks à distance" pendant le Covid puis à reprendre localement la partie Nantaise. Après avoir organisé une belle session de Janvier dans les bureaux de Lucca, nous avons du annuler tous nos events d'après suite à un faible taux d'inscription et une difficulté à trouver des speakers-euses. Stopper une activité n'est jamais évident mais il faut savoir dire stop.&lt;/p&gt;

&lt;p&gt;Autre point négatif, l'arrêt "officiel" de la communauté &lt;strong&gt;Gitpod Hero&lt;/strong&gt;. Nous l'avions vu venir suite au départ de &lt;a href="https://www.linkedin.com/in/pnarvas" rel="noopener noreferrer"&gt;Pauline&lt;/a&gt;, avec le changement de nom Gitpod -&amp;gt; Ona, cela est donc officiel, dommage. &lt;/p&gt;

&lt;p&gt;Le positif est à aller voir du côté de GitLab et de Google. &lt;/p&gt;

&lt;h3&gt;
  
  
  🦊 GitLab Hero &amp;amp; GitLab France
&lt;/h3&gt;

&lt;p&gt;Fin 2024 j'avais créé un CFP sur &lt;a href="https://conference-hall.io/gitlab-france" rel="noopener noreferrer"&gt;Conference Hall&lt;/a&gt;. Peu de soumissions mais 3 évènements organisés dans l'année (en février, avril et novembre) + le BOF GitLab au Devoxx France. Aucun objectif sur le nombre d'évènement mais une volonté de pousser des lives dans l'année avec des sujets intéressant.&lt;/p&gt;

&lt;p&gt;Vous avez pu le voir dans la liste de mes articles de l'année, j'ai pu assister à l'Epic Conference (Merci Zenika). Une journée sur Paris très agréable avec bien sur au programme l'IA et &lt;strong&gt;Gitlab Duo Agent Platform&lt;/strong&gt;. Cette plateforme agentique que j'ai pu testée depuis sa sortie en beta (merci John 🙌). &lt;/p&gt;

&lt;p&gt;Cette année fut marquée personnellement par l'atteinte du niveau 4 de contribution de GitLab. Cette "gamification" mise en place par GitLab met en avant les contributions sur la plateforme DevSecOps et est disponible publiquement : &lt;a href="https://contributors.gitlab.com" rel="noopener noreferrer"&gt;https://contributors.gitlab.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-gitlab-contributor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-gitlab-contributor.png" alt="GitLab Contributor Level 4" width="800" height="1041"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🌤️ Champion Innovators Program ➡️ Google Developer Expert
&lt;/h3&gt;

&lt;p&gt;Le début d'année commençait fort avec mon renouvellement dans le programme &lt;em&gt;Champion Innovators Program&lt;/em&gt;. Un mois plus tard et après la bascule de ce programme dans celui des Google Developers Expert, me voila donc intégré dans ce programme des GDEs (syndrome de l'imposteur tout ça tout ça). &lt;/p&gt;

&lt;p&gt;Beaucoup d'infos reçues, à digérer et surtout savoir dire à son cerveau que "non, laisse ça, tu n'as pas le temps pour appronfondir ou tester ça" mais c'est impressiont de voir comment Google nous montre que la communauté des GDEs est un sujet important.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-gde-pins.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-gde-pins.png" alt="GDE pins" width="800" height="997"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Zenika  &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Côté Zenika, cela a pas mal bougé aussi cette année avec le podcast et la partie Open Source.&lt;/p&gt;

&lt;h3&gt;
  
  
  🎙️ Podcast Zenikast
&lt;/h3&gt;

&lt;p&gt;Initié en 2024, le podcast Zenikast a vécu une saison 2 de 4 épisodes et une saison 3 est actuellement en cours prévoyant 6 épisodes.Cette saison 4 est certes la plus énergivore pour essayer de garder un rythme de publication régulier mais au vue des nouvelles thématiques, des nouvelles personnes invitées, cela en vaut largement le coup !&lt;/p&gt;

&lt;p&gt;[📣 Instant pub]&lt;br&gt;
Zenikast est disponible sur toutes les plateformes de podcast, voici les liens du dernier numéro :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Youtube : &lt;a href="https://lnkd.in/ePbx8XbB" rel="noopener noreferrer"&gt;https://lnkd.in/ePbx8XbB&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Apple Podcast : &lt;a href="https://lnkd.in/eymNXhx7" rel="noopener noreferrer"&gt;https://lnkd.in/eymNXhx7&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Deezer : &lt;a href="https://lnkd.in/eSRVfSsC" rel="noopener noreferrer"&gt;https://lnkd.in/eSRVfSsC&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Spotify : &lt;a href="https://lnkd.in/eczMKDJT" rel="noopener noreferrer"&gt;https://lnkd.in/eczMKDJT&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🌍 Zenika Open source
&lt;/h3&gt;

&lt;p&gt;Côté Zenika Open Source, j'essaye de conserver une dynamique pour avoir "notre" soirée &lt;strong&gt;Zenika Open Source&lt;/strong&gt; début octobre pour l'&lt;a href="https://hacktoberfest.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt;. Cette soirée est souvent le moment de passer un bon moment à l'agence mais aussi avec les autres agences. Habitués à faire un live, nous avions cette année réduit le scope pour faire "juste" partager nos tips aux personnes venues dans les agences.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-zenika-open-source.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-zenika-open-source.png" alt="Soirée Zenika Open Source" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Tout le détail de cette année est détaillé dans &lt;a href="https://blog.zenika.com/2025/12/15/hacktoberfest-25-ledition-zenika-open-source/" rel="noopener noreferrer"&gt;cet article&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Cette année, les "travaux" portaient principalement sur :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;la "v2" du site &lt;a href="https://oss.zenika.com/" rel="noopener noreferrer"&gt;https://oss.zenika.com/&lt;/a&gt; qui a pu être déployée. Un rafraichissement graphique et de données qui était à faire 😅.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;la création d'un &lt;a href="http://github.com/zenika-open-source/agent-Z-transcribe-podcast/" rel="noopener noreferrer"&gt;outil de transcription&lt;/a&gt;, qui nous sert pour notre podcast Zenika .&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Code moi un mouton
&lt;/h3&gt;

&lt;p&gt;Ce programme initié par Zenika est top. Pour cette année, nous avons pu sollicitier les collaborateurs-trices Zenika mais aussi de nos clients pour organiser une session "Code moi un mouton" en octobre à l'agence de Zenika Nantes. Ces enfants ont pu découvrir ou redécouvrir la programmation avec les robots Thymio que nous met gentillement à disposition l'agence Zenika Lille 🙏.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-cmum.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-cmum.jpg" alt="Robot Thymio" width="750" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-cmum-robot.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-cmum-robot.jpg" alt="Apres midi Code moi un mouton" width="750" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🎙️ Podcast &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;En plus du podcast Zenika, j'ai eu la chance d'être invité au podcast de Clever Cloud, Message à caractère informatique pour l'épisode 147. C'est dispo par &lt;a href="https://www.youtube.com/watch?v=nJaRMalDLGI&amp;amp;list=PLvjEkX1131rBpr7T8t6Zwdhe5RlpsT3Ci" rel="noopener noreferrer"&gt;ici&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-maci-147.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F2025-review%2F2025-maci-147.png" alt="MACI 147" width="768" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;J'ai également participé à cet épisode du podcast Human Coders "Passion du code VS santé mentale" disponibe &lt;a href="https://podcasts.apple.com/in/podcast/passion-du-code-vs-sant%C3%A9-mentale-partie-1-r%C3%A9pondeur-8/id1479698892?i=1000717373512" rel="noopener noreferrer"&gt;ici&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Au delà de l'aspect Zenika Open Source, j'ai toujours quelques projets qui trainent ou qui sont apparus (et qui ne veront jamais la fin nous le savons toutes et tous 🤣) mais pour en parler d'un seul, c'est bien sur l'API des communautés. Quelques ajustements sur son fonctionnement, notamment suite à la coupure de l'API de Meetup 😵. Retour "aux sources" avec l'utilisation des Flux RSS et le problème qui va avec, l'absence des dates des évènements. Pour contrer ça, une tentative d'utilisation de Gemini 3 n'a pas été des plus concluantes (en termes de performance notamment). A réfléchir pour 2026 ...&lt;/p&gt;

&lt;h2&gt;
  
  
  ✋Mentoring &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Cette année, j'ai eu l'occasion de "mentorer" &lt;a href="https://www.linkedin.com/in/laurebrosseau" rel="noopener noreferrer"&gt;Laure Brosseau&lt;/a&gt; dans le cadre du tremplin Speaker du BDX IO et Agile Tour Bordeaux organisé par &lt;a href="https://www.linkedin.com/in/julien-top%C3%A7u" rel="noopener noreferrer"&gt;Julien Topçu&lt;/a&gt; et &lt;a href="https://www.linkedin.com/company/craftsrecords/" rel="noopener noreferrer"&gt;CraftRecords&lt;/a&gt;. Laure avait un sujet très intéressant et son talk était abouti et super bien préparé. C'est aussi pour cette raison que j'apprécie prendre du temps pour donner quelques conseils de speaker que j'ai pu acquérir ces dernières années.&lt;/p&gt;

&lt;h2&gt;
  
  
  2026 ? 🗓️ &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Finalement, même si l'année 2025 a commencé doucement côté pro, elle s'est terminée bien chargée 😅  Quid de l'année 2026 ? Je ne me fixe pas beaucoup d'objectif pour le moment, je reverrai ça calmement après passé les fêtes de fin d'année. En tout cas poursuivre une veille active et la partager, que ce soit en article, vidéo ou talks fait partie de ma &lt;strong&gt;TODO List&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Je compte bien reprendre les conférences (en tout cas les soumissions 🤞), plusieurs nouveaux talks en solo et en binome ont été préparés et attendent l'ouvertures des CFP. Ma prochaine mission va aussi joué sur le contenu de l'année, wait &amp;amp; see.&lt;/p&gt;

&lt;p&gt;Passez des bonnes fêtes de fin d'année 👋&lt;/p&gt;

</description>
      <category>development</category>
      <category>2025</category>
    </item>
    <item>
      <title>Google Antigravity : l'ère des IDE Agentiques</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Thu, 18 Dec 2025 08:52:21 +0000</pubDate>
      <link>https://forem.com/zenika/google-antigravity-lere-des-ide-agentique-109i</link>
      <guid>https://forem.com/zenika/google-antigravity-lere-des-ide-agentique-109i</guid>
      <description>&lt;p&gt;Si la “Developer eXperience” (DX) est en perpétuelle amélioration, l'intelligence artificielle générative bouscule actuellement les paradigmes de développement. Des outils comme Firebase Studio (cf &lt;a href="https://firebase.blog/posts/2025/04/introducing-firebase-studio/" rel="noopener noreferrer"&gt;annonce faite par Google&lt;/a&gt;) ont déjà introduit la puissance de l'IA dans les &lt;strong&gt;&lt;a href="https://docs.google.com/presentation/d/e/2PACX-1vQDLXqF7tlITWWYsYOj5nbV3YQR_drMSbfzT3z2M_FmVhCkf7pz56I_5mpP187iZPKoiXRjMuwCsv3G/pub?slide=id.g32959efb8b4_0_2472" rel="noopener noreferrer"&gt;Cloud Development Environment&lt;/a&gt;&lt;/strong&gt; (CDE) pour assister les développeurs·euses dans la création d'interfaces, la génération de code et l'intégration de services.&lt;/p&gt;

&lt;p&gt;Mais Google a déjà préparé l’étape suivante : l’arrivée des agents dans le monde du développement avec &lt;strong&gt;Google Antigravity&lt;/strong&gt;. Lancée en novembre 2025, cette nouvelle plateforme vise à redéfinir la façon dont nous interagissons avec les agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Premiers pas avec Antigravity : Installation et Configuration
&lt;/h2&gt;

&lt;p&gt;Google Antigravity est une nouvelle &lt;strong&gt;plateforme de développement « agentique ».&lt;/strong&gt; La promesse : l’IA ne se contente plus de suggérer des lignes de code, mais elle prend le clavier, pilote l’éditeur, le terminal et le navigateur.&lt;/p&gt;

&lt;p&gt;Antigravity s'appuie principalement sur les modèles Gemini. Toutefois, la plateforme est construite pour la flexibilité des modèles incluant le support pour Claude Sonnet 4.5 et Claude Opus 4.5 d'Anthropic ainsi queGPT-OSS d'OpenAI.&lt;/p&gt;

&lt;p&gt;L’installation d’Antigravity s’effectue rapidement à partir d’un package téléchargeable sur votre machine (Windows, Mac ou Linux) : &lt;a href="https://antigravity.google/download" rel="noopener noreferrer"&gt;https://antigravity.google/download&lt;/a&gt;. Actuellement en preview, Antigravity est accessible publiquement avec une limite dans les quotas d’utilisation des modèles (cf &lt;a href="https://antigravity.google/pricing" rel="noopener noreferrer"&gt;https://antigravity.google/pricing&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Une fois installé, une courte phase de configuration permet de définir le comportement des agents avec quelques options. Antigravity vous propose 4 modes de fonctionnement prédéfinis : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Développement piloté par agent (Agent-driven development)&lt;/li&gt;
&lt;li&gt;Développement assisté par agent (Agent-assisted development)&lt;/li&gt;
&lt;li&gt;Développement piloté par les avis (Review-driven development)&lt;/li&gt;
&lt;li&gt;Configuration personnalisée (Custom configuration)
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces profils sont des préréglages des options présentes sur la partie droite de l’écran, que vous pouvez ajuster manuellement si elles ne vous conviennent pas. Vous pourrez également les modifier par la suite à tout moment dans les préférences d’Antigravity, avec la possibilité d’ajouter des commandes autorisées ou interdites par les agents.  &lt;/p&gt;

&lt;p&gt;Ces options consistent à configurer l’autonomie des agents dans l’exécution, avec ou sans votre validation humaine, de commandes dans le terminal, de commandes Javascript ou pour valider les revues. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F1-configuration.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F1-configuration.png" alt="Antigravity, configuration" width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  La Rupture : L'IDE Agentique vs. L'Assistance Classique
&lt;/h2&gt;

&lt;p&gt;Avec les IDEs classiques, l'IA restait limitée à des rôles d'assistance, comme la complétion de lignes, des suggestions de changement dans le code, ou les réponses dans un chat latéral. Les développeurs·euses devaient attendre que l'IA ait fini de générer du code avant de poser la question suivante. L’approche agentique change la donne. Désormais les agents intègrent leurs modifications dans nos fichiers avec ou sans notre approbation.&lt;/p&gt;

&lt;p&gt;Avec Antigravity, la logique est celle de la délégation : la mission est confiée, l’IA effectue la majeure partie du travail. L’IA n'est plus seulement un outil d'écriture de code, mais un acteur autonome capable de planifier, d'exécuter, de valider et d'itérer sur des tâches complexes&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;strong&gt;Caractéristiques&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;
&lt;strong&gt;IDEs Classiques&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;
&lt;strong&gt;ADE (Google Antigravity)&lt;/strong&gt;
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;strong&gt;Objectif&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;Aider à écrire le code plus rapidement (complétion, snippets)
   &lt;/td&gt;
   &lt;td&gt;Orchestrer et exécuter des tâches complexes (délégation)
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;strong&gt;Mode de Travail&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;Synchrone, linéaire (le développeur/développeuse doit attendre la génération)
   &lt;/td&gt;
   &lt;td&gt;Agent-first, asynchrone, parallélisation (plusieurs agents travaillent simultanément)
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;strong&gt;Rôle de l'IA&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;Assistant, chat latéral, outil d'écriture de code
   &lt;/td&gt;
   &lt;td&gt;Agent autonome qui pilote l'éditeur, le terminal et le navigateur
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;
&lt;strong&gt;Validation&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;Implicite (le développeur vérifie le code généré)
   &lt;/td&gt;
   &lt;td&gt;Explicite par production d'artefacts (screenshots, vidéos, etc)
   &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Google Antigravity : IDE Agent-First
&lt;/h2&gt;

&lt;p&gt;Antigravity articule son expérience utilisateur autour de deux vues principales distinctes. En plus d’avoir sa &lt;strong&gt;vue de développement&lt;/strong&gt; comme tout IDE, la nouveauté réside dans l’apparition d’un écran de supervision des interactions avec les agents, l’&lt;strong&gt;Agent Manager&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Le Gestionnaire d'Agents (Agent Manager)
&lt;/h3&gt;

&lt;p&gt;Le Gestionnaire d’Agents (ou Agent Manager) est un tableau de bord où le·la développeur·euse agit en tant qu'architecte. Il peut :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Déléguer, orchestrer et surveiller plusieurs agents travaillant de manière asynchrone sur différentes tâches (exemples : refactoriser le module d'authentification, mettre à jour l'arborescence des dépendances, générer une suite de tests pour une API).&lt;/li&gt;
&lt;li&gt;Visualiser l'état de chaque agent, les artefacts produits et les demandes d'approbation humaine en attente.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cette architecture permet à un développeur de déléguer jusqu’à cinq agents différents pour travailler sur cinq bugs différents simultanément.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F2-agent-manager.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F2-agent-manager.png" alt="Agent Manager" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Les artefacts
&lt;/h3&gt;

&lt;p&gt;Déléguer des tâches complexes nécessite une certaine confiance envers l’agent ainsi que la nécessité de vérifier facilement le travail produit. Antigravity résout ce problème en exigeant des agents qu'ils génèrent des “&lt;strong&gt;artefacts&lt;/strong&gt;“.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F3-artefacts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F3-artefacts.png" alt="Antigravity artefacts" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Un artefact peut être :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un plan d’implémentation détaillé.&lt;/li&gt;
&lt;li&gt;Les “diffs” de code standardisés montrant les lignes exactes qui seront modifiées.&lt;/li&gt;
&lt;li&gt;Des captures d'écran de l'UI (avant et après une modification).&lt;/li&gt;
&lt;li&gt;Des enregistrements d’écran de navigateur pour vérifier que les exigences fonctionnelles sont respectées lors des interactions.&lt;/li&gt;
&lt;li&gt;Des journaux structurés des résultats de tests (réussis/échoués).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces artefacts sont interactifs : si un élément semble incorrect, il est possible de laisser un commentaire directement sur l'artefact et l'agent intégrera ce retour pour itérer sans interrompre son flux d'exécution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F4-artefacts-interactions.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F4-artefacts-interactions.png" alt="Antigravity workflow" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Un navigateur embarqué pour les tests automatisés
&lt;/h3&gt;

&lt;p&gt;Un élément différenciateur est la capacité des agents à lancer un navigateur embarqué, Google Chrome, pour interagir avec des pages Web. Ces agents ont accès à une variété d'outils leur permettant de cliquer, faire défiler, taper, lire les logs de la console et même prendre des vidéos de leurs actions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F5-browser.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F5-browser.png" alt="Browser" width="800" height="1256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cette capacité permet aux agents de démarrer l’application localement, d’ouvrir un serveur et d'exécuter un scénario utilisateur complet (comme tester une nouvelle fonctionnalité ou reproduire un bug). L'utilisateur·trice est notifié·e lorsque l'agent prend le contrôle, souvent par une bordure bleue visible autour de la fenêtre du navigateur. L'enregistrement de toutes les actions est disponible dans les artefacts, permettant de vérifier la logique fonctionnelle d'un simple coup d'œil.&lt;/p&gt;

&lt;p&gt;Lors de la première configuration d’Antigravity et de son browser, une fenêtre Google Chrome s’ouvre vous demandant d’installer l’extension “Antigravity Browser Extension” disponible ici &lt;a href="https://chromewebstore.google.com/detail/antigravity-browser-exten/eeijfnjmjelapkebgockoeaadonbchdd" rel="noopener noreferrer"&gt;https://chromewebstore.google.com/detail/antigravity-browser-exten/eeijfnjmjelapkebgockoeaadonbchdd&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F6-extension-.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F6-extension-.png" alt="Extensions" width="800" height="65"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Un changement d’état d’esprit
&lt;/h2&gt;

&lt;p&gt;Au-delà de la nouveauté technique, Antigravity amène un changement de paradigme dans les équipes de développement.&lt;/p&gt;

&lt;p&gt;Habituellement concentré sur le développement d’une fonctionnalité ou de la résolution d’un incident, l’aspect agentique permet de déléguer aux agents plusieurs tâches en parallèle.&lt;/p&gt;

&lt;p&gt;La partie &lt;strong&gt;« Inbox »&lt;/strong&gt; centralise le suivi des agents et de leurs discussions. Les développeurs•euses doivent s’habituer à regarder cette « nouvelle boîte de réception » pour observer les notifications informant de la fin de traitement d’un agent et contrôler le résultat des traitements des autres agents. Cela amène un important « context switching » qui peut être nouveau et déstabilisant. Une gymnastique devra être à appréhender pour orchestrer ces tâches exécutées en arrière-plan tout en étant concentré sur l’architecture et les éléments de développement sur lesquels nous voulons garder la main.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules, workflow et customisation
&lt;/h2&gt;

&lt;p&gt;Antigravity est personnalisable grâce aux “&lt;strong&gt;Rules&lt;/strong&gt;” et “&lt;strong&gt;Workflows&lt;/strong&gt;” qui permettent d'adapter le comportement des agents à vos habitudes de travail. Les “&lt;strong&gt;Rules&lt;/strong&gt;” guident le comportement des agents avec des consignes que vous pouvez leur donner. Ces règles peuvent être enregistrées dans le répertoire &lt;code&gt;.agent/rules/&lt;/code&gt;de votre projet ou dans le fichier &lt;code&gt;~/.gemini/GEMINI.md&lt;/code&gt; et précisent vos attentes en termes de code, de tests ou l’utilisation de librairies sans avoir à les répéter dans chaque conversation. Par exemple, vous pouvez définir une règle spécifiant que tous les composants React doivent être fonctionnels ou bien que le handler de l'API HTTP ne doit jamais appeler la couche ORM directement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F7-custom-rules.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F7-custom-rules.png" alt="Custom rules" width="598" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Les “&lt;strong&gt;workflows&lt;/strong&gt;” sont quant à eux des commandes personnalisées que vous utilisez fréquemment et qui pourront être exécutés rapidement. Ces commandes peuvent être enregistrées dans le répertoire &lt;code&gt;.agent/workflows/&lt;/code&gt; de votre projet ou bien à la racine de votre compte utilisateur dans le fichier &lt;code&gt;~/.gemini/antigravity/global_workflows/global-workflow.md.&lt;/code&gt;  Un exemple de workflow pourrait être de demander de générer des tests unitaires sur le code ajouté sur cette branche de développement.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F8-custom-workflow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F8-custom-workflow.png" alt="Custom workflow" width="684" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F9-workflow-rules.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F9-workflow-rules.png" alt="Workflows rules" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Les Model Context Protocol (MCP), utilisés dans les assistants IA pour faciliter les liens avec des services tiers, sont intégrables dans Antigravity. Une liste de MCP pré-configurée vous permet de rapidement en ajouter à votre projet. Les MCP absents de cette liste peuvent également être ajouté en éditant (ou créant) le fichier &lt;code&gt;mcp.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F10-mcp-store.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F10-mcp-store.png" alt="MCP Store" width="730" height="766"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Une fois configuré, vous avez la main sur l’activation ou désactivation des services des MCP configurés.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F11-mcp-example.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F11-mcp-example.png" alt="MCP integration example" width="800" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F12-mcp-config.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fantigravity%2F12-mcp-config.png" alt="MCP configuration" width="800" height="729"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Complément ou futur de Firebase Studio ?
&lt;/h2&gt;

&lt;p&gt;Antigravity n’est pas le seul à proposer une plateforme agentique pour développer des applications. &lt;a href="https://cursor.com/" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt; est une alternative qui propose un contexte équivalent et qui est assez connue et répandue. &lt;a href="https://about.gitlab.com/gitlab-duo/agent-platform/" rel="noopener noreferrer"&gt;GitLab Duo&lt;/a&gt; propose également une solution de développement agentique qui va cependant plus loin en intégrant des agents dans toute sa plateforme DevOps. &lt;/p&gt;

&lt;p&gt;Dans de précédentes conférences, nous soulignions les fonctionnalités d'IA de Firebase Studio, notamment dans le prototypage et l'intégration cloud. Avec l'arrivée de la plateforme Antigravity, qui introduit un changement de paradigme vers le développement « agentique », on peut légitimement se demander si l'approche d'assistance de Firebase Studio est remise en cause.&lt;/p&gt;

&lt;p&gt;L'atout principal de &lt;strong&gt;Firebase Studio&lt;/strong&gt; réside dans la rapidité de réalisation de prototypages transformant une simple intention en un plan d’action avec des guidelines graphiques, un déploiement simple et rapide sur les services Google Cloud et le tout depuis votre navigateur. L'exécution n'a pas lieu sur votre ordinateur mais sur la plateforme Cloud de Google (GCP).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google Antigravity&lt;/strong&gt;, quant-à lui, exécute votre projet en local et l'IA n'est plus un assistant, mais un acteur autonome capable de piloter l'éditeur, le terminal et un navigateur embarqué. Sa force réside dans la délégation de tâches complexes de bout en bout, comme le refactoring d'un module ou la génération d'une suite de tests complète. Avec son navigateur, Antigravity peut tester lui-même son code et générer un compte rendu de ses actions. Son gestionnaire d’agents permet l'orchestration asynchrone de plusieurs agents travaillant en parallèle.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Firebase Studio&lt;/strong&gt; est l'outil idéal pour l'entrée en matière et le déploiement rapide d'un PoC dans le cloud, tandis qu'&lt;strong&gt;Antigravity&lt;/strong&gt; prend le relais pour du travail complexe en arrière-plan.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Article écrit avec &lt;a href="https://www.linkedin.com/in/bourgeoisbenjamin" rel="noopener noreferrer"&gt;Benjamin Bourgeois&lt;/a&gt; 🙌&lt;/em&gt;&lt;/p&gt;

</description>
      <category>google</category>
      <category>ai</category>
      <category>antigravity</category>
      <category>development</category>
    </item>
    <item>
      <title>ADK, Gemini &amp; Javelit = 😍</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Mon, 15 Dec 2025 08:37:47 +0000</pubDate>
      <link>https://forem.com/zenika/adk-gemini-javelit--i05</link>
      <guid>https://forem.com/zenika/adk-gemini-javelit--i05</guid>
      <description>&lt;p&gt;Tandis que les épisodes de notre podcast &lt;strong&gt;Zenikast&lt;/strong&gt; se succèdent, la nécessité de produire la transcription de chaque épisode est bien entendu toujours d’actualité (cf &lt;a href="https://dev.to/zenika/rendre-son-podcast-accessible-avec-lia-au-service-de-la-transcription-e01"&gt;précédent article&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;Si une première approche s’était révélée concluante avec &lt;strong&gt;Vertex AI&lt;/strong&gt;, une solution qui nous avait clairement aidé dans la production de qualité de ces transcriptions, nous voulions aller plus loin en rendant disponible ce moyen de transcription à l’ensemble des collaborateurs·trices de Zenika, via une interface graphique, indépendamment de leur connaissance en Vertex AI, Google Cloud Platform ou autre item technique.&lt;/p&gt;

&lt;p&gt;En tant que développeur, l’idée de démarrer un projet, un “nième side project”, vient rapidement à l’esprit 😁. Javaiste depuis mes études, il était évident pour moi que ce nouveau projet allait se faire avec du Java !&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 ADK
&lt;/h2&gt;

&lt;p&gt;La première question tourne autour du “comment”. Comment intégrer Gemini dans une API? Une librairie de bas niveau de Google, &lt;a href="https://github.com/googleapis/java-genai" rel="noopener noreferrer"&gt;java-genia&lt;/a&gt;, couvre clairement ce besoin. &lt;/p&gt;

&lt;p&gt;Mais mon regard s’est finalement porté vers &lt;strong&gt;&lt;a href="https://google.github.io/adk-docs/" rel="noopener noreferrer"&gt;Agent Development Kit&lt;/a&gt;&lt;/strong&gt; (ADK), un framework créé par Google facilitant la création d’agents. Initialement créé en &lt;a href="https://github.com/google/adk-python" rel="noopener noreferrer"&gt;Python&lt;/a&gt;, des versions &lt;a href="https://github.com/google/adk-java" rel="noopener noreferrer"&gt;Java&lt;/a&gt; et dernièrement en &lt;a href="https://github.com/google/adk-go" rel="noopener noreferrer"&gt;Go&lt;/a&gt; sont disponibles.&lt;/p&gt;

&lt;p&gt;Après avoir créé votre projet maven, vous aurez besoin de cette dépendance :&lt;/p&gt;

&lt;p&gt;La librairie &lt;code&gt;google-adk&lt;/code&gt; amène plusieurs classes dont voici les 3 principales et nécessaires que vous allez manipuler :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BaseAgent&lt;/li&gt;
&lt;li&gt;LlmAgent&lt;/li&gt;
&lt;li&gt;InMemoryRunner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La classe LlmAgent représente le builder de votre agent. C’est à cet endroit que vous allez définir votre agent avec un nom, une description, le modèle à utiliser et des instructions.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&amp;gt; A noter que le choix du modèle est libre et peut être un autre modèle que Gemini.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Une instance de InMemoryRunner permet d’initier et de gérer le cycle de vie de votre agent, notamment l’allocation mémoire à son fonctionnement. &lt;/p&gt;

&lt;p&gt;Une session est ensuite à initier à partir de ce runner afin de maintenir l’état conversationnel avec l’agent :&lt;/p&gt;

&lt;p&gt;L’exécution de votre agent peut se faire avec cet exemple : &lt;/p&gt;

&lt;p&gt;Le résultat est récupéré à partir de l’&lt;code&gt;events&lt;/code&gt; :&lt;/p&gt;

&lt;p&gt;Une fois configuré, l’agent est exécuté avec cette commande et lorsque la réponse sera obtenue, votre programme sera arrêté. Votre agent est fonctionnel 🎉.&lt;/p&gt;

&lt;p&gt;ADK met à disposition une seconde dépendance, &lt;code&gt;google-adk-dev&lt;/code&gt;, offrant une interface graphique pour tester, utiliser et debbuger vos agents.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;⚠️ Cette dépendance est à utiliser lors de vos développements.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;La commande à exécuter est légèrement différente. Elle exécute la classe &lt;code&gt;AdkWebServer&lt;/code&gt;disponible dans la dépendance d’ADK. &lt;/p&gt;

&lt;p&gt;Cette interface est composée de deux parties. La première, le menu de gauche, détaille les différents événements et étapes de réflexions de votre agent, comme les logs, l’état des sessions en cours et passées ainsi que les outils que l’agent peut être amené à utiliser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fadk-javelit%2Fadk-ui-menu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fadk-javelit%2Fadk-ui-menu.png" alt="ADK UI menu" width="800" height="960"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La partie centrale quant à elle, est une zone de conversation où vous interagissez avec votre agent. Dans cet exemple, je lui envoie un passage audio pour vérifier la qualité de la transcription (et de mon prompt associé).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fadk-javelit%2Fadk-ui.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fadk-javelit%2Fadk-ui.jpg" alt="ADK UI menu" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉Retrouvez toute la documentation d’ADK sur &lt;a href="https://google.github.io/adk-docs" rel="noopener noreferrer"&gt;https://google.github.io/adk-docs&lt;/a&gt; .&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚙️ Gemini 3
&lt;/h2&gt;

&lt;p&gt;La sortie de la version 3 de Gemini a été remarquée de par sa progression par rapport à la précédente version et notamment grâce à son entraînement multimodal. Google a sorti une gamme de modèles très performant, que ce soit Gemini 3 pro, mais aussi sur son modèle d’images, &lt;a href="https://gemini.google/lu/overview/image-generation/?hl=fr" rel="noopener noreferrer"&gt;Nano Banana&lt;/a&gt; ou bien vidéo avec &lt;a href="https://gemini.google/fr/overview/video-generation/?hl=fr" rel="noopener noreferrer"&gt;Veo 3&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Après avoir testé Gemini 3 pour nos transcriptions, l’amélioration de la qualité est clairement présente. &lt;/p&gt;

&lt;h2&gt;
  
  
  🎨 Javelit
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/javelit/javelit" rel="noopener noreferrer"&gt;Javelit&lt;/a&gt; est un projet créé par &lt;a href="https://fr.linkedin.com/in/cyril-de-catheu" rel="noopener noreferrer"&gt;Cyril de Catheu&lt;/a&gt;. Inspiré de &lt;a href="https://streamlit.io/" rel="noopener noreferrer"&gt;Streamlit&lt;/a&gt;, une librairie de création de composants graphiques en Python, Javelit est une variante pour … Java. Ce projet n’a pas vocation àconcurrencer les frameworks Front end comme Angular, Vue ou React. Il offre la possibilité de créer rapidement des applications web dans le même langage que votre API, et ça, c’est super intéressant. &lt;/p&gt;

&lt;p&gt;A partir de l’import de la dépendance et du package &lt;code&gt;core&lt;/code&gt;, vous avez accès à des classes qui vous permettent d’avoir votre premier composant graphique en Java.&lt;/p&gt;

&lt;p&gt;Dans cet exemple, je mentionne un composant “markdown” mais le catalogue de composants est très complet, avec par exemple : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Jt.title pour mettre un titre à votre page&lt;/li&gt;
&lt;li&gt;Jt.text pour afficher du texte&lt;/li&gt;
&lt;li&gt;Jt.code pour afficher du code &lt;/li&gt;
&lt;li&gt;Jt.html pour afficher du code HTML l’exécution de Javascript n’est pas possible&lt;/li&gt;
&lt;li&gt;Jt.echarts pour afficher des graphiques (basés sur la librairie &lt;a href="https://echarts.icepear.org/#/" rel="noopener noreferrer"&gt;ECharts&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Jt.button, Jt.radio, Jt.textInput pour faire des formulaires&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉Retrouvez la documentation complète sur &lt;a href="https://docs.javelit.io/" rel="noopener noreferrer"&gt;https://docs.javelit.io/&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  🙌 ADK + Javelit = ♥️
&lt;/h2&gt;

&lt;p&gt;La puissance et la simplicité d’ADK pour créer un agent, combinées à l’efficacité de Javelit pour développer des interfaces graphiques permettent de transformer rapidement des idées en applications fonctionnelles de A à Z. L’infrastructure “mono composant” amène aussi des simplicités dans le déploiement, par exemple avec Cloud Run il est rapidement possible de déployer et mettre à disposition une application.&lt;/p&gt;

&lt;p&gt;C’est avec ce raisonnement que l’application de transcription de podcast Zenika a été créée et déployée sur Google Cloud Platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fadk-javelit%2Fagent-Z-transcribe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fadk-javelit%2Fagent-Z-transcribe.png" alt="ADK UI menu" width="800" height="676"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Plusieurs options ont été rajoutées pour modifier ou adapter le prompt en fonction des besoins comme l’affichage de l’horodatage dans la transcription (merci Théophile pour l’idée), ou bien pour générer une transcription stricte (équivalente aux mots des intervenants·es) ou une version plus lisible.&lt;/p&gt;

&lt;p&gt;👉 Retrouvez le projet Agent-Z-transcribe-podcast sur GitHub : &lt;a href="http://github.com/zenika-open-source/agent-Z-transcribe-podcast/" rel="noopener noreferrer"&gt;http://github.com/zenika-open-source/agent-Z-transcribe-podcast/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Ce trinôme &lt;strong&gt;ADK, Gemini + Javelit&lt;/strong&gt; est une belle découverte. Déployée sur une instance serverless comme Cloud Run, notre application de transcription de podcast est graphiquement agréable, sans trop de prise de tête avec du CSS 😅, et utilise la puissance du dernier modèle de Gemini pour me générer une transcription de qualité.&lt;/p&gt;

&lt;p&gt;Cela donne des idées par la suite pour faire rapidement des projets. Si on ajoute à cette expérience, l’utilisation de l’IDE “agentique” &lt;a href="https://antigravity.google/" rel="noopener noreferrer"&gt;Antigravity&lt;/a&gt;, la production et surtout la réalisation de nouveaux projets vont pouvoir voir le jour beaucoup plus rapidement 🚀.&lt;/p&gt;

</description>
      <category>gemini</category>
      <category>adk</category>
      <category>ai</category>
      <category>development</category>
    </item>
    <item>
      <title>GitLab Epic Conference Paris</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Fri, 14 Nov 2025 13:49:43 +0000</pubDate>
      <link>https://forem.com/zenika/gitlab-epic-conference-paris-3678</link>
      <guid>https://forem.com/zenika/gitlab-epic-conference-paris-3678</guid>
      <description>&lt;p&gt;GitLab organisait ce jeudi 13 novembre la “&lt;strong&gt;GitLab Epic Conference&lt;/strong&gt;” dans sa version parisienne (&lt;a href="https://events.gitlab.com/e/epic-conference-paris/page/gitlab-epic-conference-paris-agenda" rel="noopener noreferrer"&gt;https://events.gitlab.com/e/epic-conference-paris/page/gitlab-epic-conference-paris-agenda&lt;/a&gt;) et j’ai eu la chance d’y participer. GitLab a choisi Station F pour ce nouvel évènement basé, et ce n’est pas une surprise, sur l’&lt;strong&gt;intelligence artificielle&lt;/strong&gt;. Si l’IA était déjà à l’honneur lors de ma participation au GitLab Summit day de 2023, cette année le focus est mis sur les “Agents” et leur l’adoption dans les entreprises.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F1-intro.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F1-intro.jpg" alt="Introduction" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🤖 Un contexte agentic
&lt;/h2&gt;

&lt;p&gt;Avec l’introduction de GitLab Duo, la première brique IA intégrée sur la plateforme DevOps, GitLab a accéléré le déploiement d’agents pour les intégrer, depuis la release 18, sur l’ensemble des étapes du workflow DevOps.&lt;/p&gt;

&lt;p&gt;Dans cet article, je vous présente cette nouvelle plateforme IA “GitLab Duo Agent Platform” : &lt;a href="https://dev.to/zenika/vibe-coding-with-gitlab-duo-agentic-power-in-action-1p47"&gt;https://dev.to/zenika/vibe-coding-with-gitlab-duo-agentic-power-in-action-1p47&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🗓️ Un agenda bien rempli
&lt;/h2&gt;

&lt;p&gt;La journée s’est articulée autour de deux axes de présentation : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;une matinée orientée autour de la plateforme GitLab et la présentation de ses dernières nouveautés
&lt;/li&gt;
&lt;li&gt;une après midi plutôt orientée sur des thématiques et un atelier&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Rise of the Agents: Driving Innovation in Secure Software Delivery
&lt;/h3&gt;

&lt;p&gt;Après une introduction de &lt;strong&gt;Sébastien Zins,&lt;/strong&gt; AVP Sales chez GitLab de la zone sud EMEA chez GitLab, c’est &lt;strong&gt;Manav Khurana&lt;/strong&gt;, “&lt;em&gt;Chief Product and Marketing Officer&lt;/em&gt;” chez GitLab qui a pris la parole. Il nous a dévoilé des fonctionnalités de la Roadmap 2026 qui s’annoncent fortes intéressantes ! Voici quelques une d’entre elles : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Les &lt;strong&gt;registres virtuels&lt;/strong&gt; pour NPM, Docker et Maven (entres autres) vont permettre de stocker dans le cache des GitLab les dépendances nécessaires aux développements des composants applicatifs.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatisation de la détection&lt;/strong&gt; des failles de sécurités avec, et c’est là où un agent IA entre en jeu, proposer des corrections.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab Secret Manager&lt;/strong&gt;, permettant de stocker des clés de sécurité.
&lt;/li&gt;
&lt;li&gt;Un sujet autour de la Supply Chain Security
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitLab Knowledge Graph&lt;/strong&gt;, un nouvel outil (que j’ai testé &lt;a href="https://dev.to/zenika/exploring-the-gitlab-knowledge-graph-5ga7"&gt;par ici&lt;/a&gt;) et qui permet de visualiser les dépendances de ses projets.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto hébergement d’agents IA&lt;/strong&gt;, permettant de répondre à beaucoup de contraintes (et craintes) autour de l’utilisation des données.
&lt;/li&gt;
&lt;li&gt;La &lt;strong&gt;GitLab CICD Visual Builder&lt;/strong&gt;, un outil de visualisation de la chaîne de CICD. Un agent IA permettra de nous assister dans la création de pipeline de CICD. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ensuite, &lt;strong&gt;Fatima Sarah Khalid&lt;/strong&gt;, &lt;em&gt;Developer Advocate&lt;/em&gt; chez GitLab, a rejoint Manav pour une démo live très rythmée. Elle a pu créer un composant back-end complet à partir d’une épique. En quelques minutes et à l’aide de plusieurs agents, le composant est créé, analysé en termes de sécurité et déployé.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F2-demo-live.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F2-demo-live.jpg" alt="Demo live" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Built with GitLab: Customer Spotlight with Canal+
&lt;/h3&gt;

&lt;p&gt;Après une table ronde avec &lt;strong&gt;Lucas Drago&lt;/strong&gt; (Michelin), &lt;strong&gt;Ahmed Amanou&lt;/strong&gt; (Gandi) et &lt;strong&gt;Philippe Guerreiro&lt;/strong&gt; (Carrefour) autour de l’utilisation de GitLab dans leurs équipes, c’est  &lt;strong&gt;Stéphane Baumier&lt;/strong&gt;, CTO du groupe Canal + qui est monté sur scène.&lt;/p&gt;

&lt;p&gt;Stéphane est venu souligner la place importante que GitLab a au sein du groupe Canal + et qui va accroitre dans les mois prochains suite à l’acquisition d’un groupe très présent dans l’Afrique anglophone. Après être passé sur la version GitLab Ultimate il y a 1 an, l’étape suivante consistera à intégrer GitLab Duo Core (la version autour de l’assistant de code) dans le groupe.&lt;/p&gt;

&lt;p&gt;Bien que la présentation ait été plus axée sur l’histoire du groupe Canal + et ses défis techniques plutôt qu’à la plateforme GitLab en elle même, elle fut très intéressante.&lt;/p&gt;

&lt;h3&gt;
  
  
  Builder track Building and Deploying AI-Native Applications with GitLab
&lt;/h3&gt;

&lt;p&gt;L'après-midi est divisée en deux sessions parallèles : d’un côté un workshop (animé par &lt;strong&gt;Chloé Cartron&lt;/strong&gt;, &lt;strong&gt;Fatima Sarah Khalid&lt;/strong&gt;, &lt;strong&gt;William Arias&lt;/strong&gt; et &lt;strong&gt;Salahddine Aberkan&lt;/strong&gt;) toute l’après-midi, des présentations de l’autre côté.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F3-workshop.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F3-workshop.jpg" alt="Builder Track" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Je n’ai pas assisté à ce workshop, ce fut un choix à faire, pas le plus facile comme dans toute conférence. Mais pour avoir déjà manipulé la plateforme agentique de GitLab, j’ai opté pour aller assister aux présentations. (D’autant que j’aurai d’autres opportunités de suivre ce workshop 😁). Mais j’ai pu voir la première session de 30 minutes, où William nous a fait une démo XXL sur un vrai cas d’usage de génération de LLM à partir de GitLab CI.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to scale people, process and technology
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F4-platform.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F4-platform.jpg" alt="How to scale people, process and technology" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Madou Coulibaly&lt;/strong&gt;, Staff Solutions Architect chez GitLab, poursuit avec un talk centré sur la problématique de mise à l’échelle des équipes, des processus dans un écosystème qui ne fait qu’évoluer. Qu’il s’agisse des logiciels, passant de monolithe à une architecture Cloud Native, ou bien des infrastructures traditionnelles qui s’orientent à des plateformes DevSecOps, la scalabilité reste une grosse problématique à laquelle beaucoup d’entreprises font face.&lt;/p&gt;

&lt;p&gt;Madou appuie sur le fait de vouloir penser “plateforme” pour casser les silos, répondre à un besoin d’entreprise (et non d’équipe), pouvant amener des brèches dans le workflow de livraison et/ou production de nos applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't Fear AI—Master It: How Highly-Regulated Industries Are Safely Modernizing Legacy Systems with AI-Native Development Platforms
&lt;/h2&gt;

&lt;p&gt;La dernière session de la journée fut l’occasion de voir la présentation de &lt;strong&gt;Thibault Jurado-Leduc,&lt;/strong&gt; Senior Solutions Architect chez GitLab. &lt;/p&gt;

&lt;p&gt;Dans son introduction, Thibault n’a pas voulu poser la question aux personnes présentes dans la salle, se doutant logiquement de la réponse positive : “qui a peur de l’IA ?”.&lt;/p&gt;

&lt;p&gt;La crainte de l’IA est bien entendu présente chez beaucoup de personnes et d’entreprises et les questions se regroupent autour des mêmes thématiques : quid de la RGPD? de la confidentialité et de la conformité à l’EU AI ACT? etc.&lt;/p&gt;

&lt;p&gt;Thibault termine cette présentation par nous donner un template de plan pour réduire voir éliminer cette “peur de l’IA” : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;établir la confiance, en utilisant par exemple l’IA en lecture seule ou pour générer des éléments sans impact sur le code des applications comme la documentation
&lt;/li&gt;
&lt;li&gt;construire une gouvernance, en formant un comité autour de l’IA, ou bien cartographier les cas d’usage de l’IA, créer un workflow d’approbation, etc..
&lt;/li&gt;
&lt;li&gt;passer à l’échelle, avec le déploiement d’agents autonomes, corriger les pipelines en erreur, ajouter des agents de vérification de la conformité, générer des tests et pourquoi pas la refactorisation de code.
&lt;/li&gt;
&lt;li&gt;prouver la valeur, avec la création de tableau de board pour visualiser la fréquence de déploiement et délai de livraison avant et après l’adoption de l’IA.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F5-ai-fear.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F5-ai-fear.jpg" alt="Dont Fear AI—Master It" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;La “&lt;strong&gt;GitLab Epic Conférence&lt;/strong&gt;” fut une journée très intéressante. L’équilibre entre la matinée orientée sur les nouveautés à venir côté GitLab et une après midi orientée sur des thématiques était très appréciable.&lt;/p&gt;

&lt;p&gt;Et c’est toujours un plaisir de revoir les personnes de la communauté et de GitLab que je connais, ainsi que découvrir de nouvelles personnes “en vrai”.&lt;/p&gt;

&lt;p&gt;Merci à Zenika pour m’avoir permis d’assister à cette conférence 🙏 et aux équipes GitLab pour cet évènement !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F6-station-f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2F25-gitlab-event%2F6-station-f.jpg" alt="GitLab Epic Conference" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>news</category>
    </item>
    <item>
      <title>Hacktoberfest 25 : l’édition Zenika Open Source</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Fri, 07 Nov 2025 12:09:53 +0000</pubDate>
      <link>https://forem.com/zenika/hacktoberfest-25-ledition-zenika-open-source-3mh3</link>
      <guid>https://forem.com/zenika/hacktoberfest-25-ledition-zenika-open-source-3mh3</guid>
      <description>&lt;p&gt;La 11ème édition de l’&lt;strong&gt;Hacktoberfest&lt;/strong&gt; vient de se terminer ! Fidèle aux éditions précédentes (&lt;a href="https://blog.zenika.com/2018/11/19/retour-vers-hacktoberfest-par-zenika/" rel="noopener noreferrer"&gt;2018&lt;/a&gt;, &lt;a href="https://blog.zenika.com/2019/11/26/hacktoberfest-2019-chez-zenika/" rel="noopener noreferrer"&gt;2019&lt;/a&gt;, &lt;a href="https://blog.zenika.com/2020/06/26/pensez-open-source-pensez-hacktoberfest/" rel="noopener noreferrer"&gt;2020&lt;/a&gt;, &lt;a href="https://www.youtube.com/watch?v=6WPzT9qZ9jo" rel="noopener noreferrer"&gt;2021&lt;/a&gt;, &lt;a href="https://blog.zenika.com/2022/11/22/bilan-hacktoberfest-2022/" rel="noopener noreferrer"&gt;2022&lt;/a&gt;, &lt;a href="https://blog.zenika.com/2023/12/01/lhacktoberfest-2023-vu-par-zenika/" rel="noopener noreferrer"&gt;2023&lt;/a&gt; et &lt;a href="https://blog.zenika.com/2024/11/14/zenika-open-source-bilan-hacktoberfest-2024/" rel="noopener noreferrer"&gt;2024&lt;/a&gt;), Zenika était une nouvelle fois mobilisé tout au long du mois d’octobre pour cet évènement. &lt;/p&gt;

&lt;p&gt;L’&lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt; est la fête mondiale de l’open source. Initiée par &lt;a href="https://www.digitalocean.com/" rel="noopener noreferrer"&gt;Digital Ocean&lt;/a&gt;, cet évènement a lieu pendant tout le mois d’octobre pour promouvoir et célébrer l’open source.&lt;/p&gt;

&lt;p&gt;Notre objectif reste le même : encourager les collaborateurs et collaboratrices Zenika à explorer le domaine de l’open source et à leur donner les moyens de contribuer sur leurs projets ou bien démarrer leurs propres projets.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎙️ Zenikast, épisode dédié à l’open source
&lt;/h2&gt;

&lt;p&gt;La saison 3 de notre podcast Zenikast a débuté en octobre avec un épisode dédié à l’open source. &lt;a href="https://www.linkedin.com/in/th%C3%A9ophile/" rel="noopener noreferrer"&gt;Théophile&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/bourgeoisbenjamin/" rel="noopener noreferrer"&gt;Benjamin&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/guillaume-lefloch/" rel="noopener noreferrer"&gt;Guillaume&lt;/a&gt; et notre invité &lt;a href="https://www.linkedin.com/in/benjamin-cavy-aa67a2a6/" rel="noopener noreferrer"&gt;Benjamin Cavy&lt;/a&gt; ont participé à ce premier épisode où et échangé sur leurs bonnes pratiques open source, en tant que contributeurs mais aussi du point de vue de  mainteneurs de projets. Benjamin Cavy nous a notamment parlé de expérience quotidienne au sein de la Maif de mainteneur sur des projets open source comme &lt;a href="https://maif.github.io/izanami/" rel="noopener noreferrer"&gt;Izanami&lt;/a&gt;, l’outil de feature flipping de la Maif.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98okgeyf2vly3qew89md.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F98okgeyf2vly3qew89md.png" alt="Zenikast, S3E01 sur l'open source" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;L’épisode est disponible sur les différentes plateformes de podcast : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=glFB3k8rWGA" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;,
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://podcasts.apple.com/fr/podcast/zenikast-saison-3-episode-1-opensource-dans-les-starting/id1750454113" rel="noopener noreferrer"&gt;Apple podcast&lt;/a&gt;,
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://link.deezer.com/s/31wopLQlH6nWb6Zanw5Qj" rel="noopener noreferrer"&gt;Deezer&lt;/a&gt;,
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://open.spotify.com/episode/54Fcamtxrrod6OYPEvbF7N" rel="noopener noreferrer"&gt;Spotify&lt;/a&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📣 Nos évènements
&lt;/h2&gt;

&lt;p&gt;En parallèle de cet épisode de podcast, nous avons l’habitude d’organiser des événements dans les agences. Cette expérience fut répétée avec notre traditionnelle soirée “&lt;strong&gt;&lt;em&gt;Zenika Open Source&lt;/em&gt;&lt;/strong&gt;”. Les agences Bordeaux, Lille et Nantes étaient au rendez-vous pour passer une soirée à contribuer sur des projets open sources ou accompagner les nouvelles personnes (internes ou externes) à faire leurs premiers pas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1199kscaygvrgokv959o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1199kscaygvrgokv959o.png" alt="Event live" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2b4d9cly03hqnchb64d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2b4d9cly03hqnchb64d.png" alt="Event live Nantes" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;De plus, le 30 octobre, nous avons reçu &lt;a href="https://github.com/samber" rel="noopener noreferrer"&gt;&lt;strong&gt;Samuel Berthe&lt;/strong&gt;&lt;/a&gt;, co organisateur de la communauté GenIA Nantes et mainteneur de plusieurs projets open source, qui est venu nous présenter son talk intitulé “Lessons learned from maintaining OSS projects”.&lt;br&gt;&lt;br&gt;
Une présentation super intéressante remplie d’astuces précieuses pour contribuer et maintenir des projets open source.&lt;/p&gt;

&lt;p&gt;👉 Le replay est disponible sur notre chaine Youtube : &lt;a href="https://www.youtube.com/watch?v=41KqfC0OF6Q" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=41KqfC0OF6Q&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbb5cxw9xgrl2og0jgl1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbb5cxw9xgrl2og0jgl1k.png" alt="Replay session live avec Samuel" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🙌 Nos projets
&lt;/h2&gt;

&lt;p&gt;L’Hacktoberfest est pour nous, un moyen de faire évoluer nos projets open source. Juste avant le mois d’octobre, une version v2 de notre site &lt;a href="http://oss.zenika.com" rel="noopener noreferrer"&gt;oss.zenika.com&lt;/a&gt; a pu être réalisée avec une nouvelle charte graphique et un rafraîchissement de nos projets. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfhp9e8e7vwg7krl52v9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flfhp9e8e7vwg7krl52v9.png" alt="oss.zenika.com" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;D’autres projets ont pu voir le jour dans l’organisation &lt;a href="https://github.com/zenika-open-source/" rel="noopener noreferrer"&gt;GitHub Zenika-open-source&lt;/a&gt;; comme les projets : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;clepsydre&lt;/strong&gt;, un timer créé par &lt;a href="https://github.com/david-dasilva" rel="noopener noreferrer"&gt;David Da Silva&lt;/a&gt; pour les présentations.&lt;br&gt;
👉 &lt;a href="https://github.com/zenika-open-source/clepsydre" rel="noopener noreferrer"&gt;https://github.com/zenika-open-source/clepsydre&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;mxw01-thermal-printer&lt;/strong&gt;, une librairie en JS  pour des imprimantes thermiques MXW01&lt;br&gt;
👉 &lt;a href="https://github.com/clementvp/mxw01-thermal-printer" rel="noopener noreferrer"&gt;https://github.com/clementvp/mxw01-thermal-printer&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cette année a également été marquée par une initiative d’accompagnement chez un nos clients pour animer des “code lab” pour faire découvrir l’open source, la philosophie, comment écrire sa première PR à leurs collaborateurs et collaboratrices. Ces ateliers ont permis de transmettre des bonnes pratiques de contribution mis directement en application sur des projets créés pour l’occasion.&lt;/p&gt;

&lt;h2&gt;
  
  
  👏 De nombreuses contributions
&lt;/h2&gt;

&lt;p&gt;Que ce soit sur des projets personnels, des projets de l’organisation Zenika Open Source ou bien des projets extérieurs, les contributions open source ont une nouvelle fois été au rendez-vous pendant ce mois d’octobre en termes de quantité mais surtout qualité, bravo à toutes et à tous pour votre engagement ! 👏 &lt;/p&gt;

&lt;h2&gt;
  
  
  📚 Quelques ressources
&lt;/h2&gt;

&lt;p&gt;Pour vous aider à démarrer ou poursuivre vos contributions, voici quelques ressources :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://oss.zenika.com/" rel="noopener noreferrer"&gt;https://oss.zenika.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/zenika-open-source/open-source-white-paper/blob/master/en/01-getting-started.md" rel="noopener noreferrer"&gt;https://github.com/zenika-open-source/open-source-white-paper/blob/master/en/01-getting-started.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://hacktoberfest.digitalocean.com/" rel="noopener noreferrer"&gt;https://hacktoberfest.digitalocean.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://up-for-grabs.net/" rel="noopener noreferrer"&gt;https://up-for-grabs.net/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/MunGell/awesome-for-beginners" rel="noopener noreferrer"&gt;https://github.com/MunGell/awesome-for-beginners&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.codetriage.com/" rel="noopener noreferrer"&gt;https://www.codetriage.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://goodfirstissue.dev/" rel="noopener noreferrer"&gt;https://goodfirstissue.dev/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/zenika-open-source/open-source-white-paper/blob/master/en/01-getting-started.md" rel="noopener noreferrer"&gt;https://github.com/zenika-open-source/open-source-white-paper/blob/master/en/01-getting-started.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>🤖 Gemini dans votre terminal avec Gemini CLI</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Mon, 03 Nov 2025 13:22:40 +0000</pubDate>
      <link>https://forem.com/zenika/gemini-dans-votre-terminal-avec-gemini-cli-1b6i</link>
      <guid>https://forem.com/zenika/gemini-dans-votre-terminal-avec-gemini-cli-1b6i</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Cet article est également disponible en anglais &lt;a href="https://jeanphi-baconnais.gitlab.io/post/gemini-cli-en/" rel="noopener noreferrer"&gt;➡️ ici ⬅️ &lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  👉 CLI, Kezako?
&lt;/h2&gt;

&lt;p&gt;Les &lt;em&gt;Command Line Interface&lt;/em&gt; (CLI) sont  des outils en ligne de commande qui permettent d'interagir avec une application en saisissant “du texte” formant des commandes. Ils existent depuis le début de l’informatique et sont toujours utilisés au quotidien par les développeurs·euses, SRE/OPS et toute autre personne aimant passer du temps dans les terminaux 😁.&lt;/p&gt;

&lt;p&gt;Une évolution, dans l’ère du temps, amène à intégrer l’IA dans les outils de CLI. Que ce soit Google, Amazon ou d’autres producteurs de modèle d’IA, les outils de CLI arrivent : Gemini CLI, &lt;a href="https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html?b=cli&amp;amp;p=overview&amp;amp;s=tiles" rel="noopener noreferrer"&gt;Amazon Q&lt;/a&gt;, &lt;a href="https://www.claude.com/product/claude-code" rel="noopener noreferrer"&gt;Claude code&lt;/a&gt;, etc.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;⚠️ Dans cet article, le focus sera mis sur la CLI de Google, **Gemini CLI&lt;/em&gt;*&lt;em&gt;, que *j’utilise à la fois chez mon client et dans un contexte Zenika/personnel. Ce tour d’horizon vous permettra de découvrir le fonctionnement de cette CLI ainsi que les fonctionnalités disponibles.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;Je ne ferai pas de comparatif avec les autres solutions du marché, faute de les connaître et de les avoir testé suffisamment. Je vous recommande cependant la conférence de &lt;a href="https://www.linkedin.com/in/fayeellis" rel="noopener noreferrer"&gt;Faye Ellis&lt;/a&gt; au DevFest Nantes sur la CLI d’Amazon (voir le &lt;a href="https://www.youtube.com/watch?v=QfXNd-Zx5Bc" rel="noopener noreferrer"&gt;replay&lt;/a&gt;)..&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ⚙️Gemini CLI
&lt;/h2&gt;

&lt;p&gt;Gemini CLI est un projet open source publié en juin 2025 conçu pour accroître la productivité des équipes à l’aide de l’IA directement dans votre terminal.&lt;/p&gt;

&lt;p&gt;Pour l’installation, vous devez avoir initié ou identifié un projet Google Cloud Platform avec l’API Gemini d'activée. Gemini CLI s’installe ensuite à l’aide de la commande npx &lt;a href="https://github.com/google-gemini/gemini-cli" rel="noopener noreferrer"&gt;https://github.com/google-gemini/gemini-cli&lt;/a&gt; ou bien avec brew brew install gemini-cli. Une fois la variable d’environnement &lt;strong&gt;&lt;em&gt;GOOGLE_CLOUD_PROJECT&lt;/em&gt;&lt;/strong&gt; configurée, l’ouverture de Gemini se fait simplement avec la commande &lt;strong&gt;gemini&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F1-welcome-gemini.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F1-welcome-gemini.png" alt="Welcome Gemini CLI" width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🚀 Fonctionnalités offertes par Gemini CLI
&lt;/h2&gt;

&lt;p&gt;La fonctionnalité principale de Gemini CLI est de permettre aux utilisateurs et utilisatrices de solliciter les modèles Gemini depuis le terminal, tout en intégrant des outils capables d'interagir avec leur environnement. &lt;/p&gt;

&lt;p&gt;Ces sollicitations peuvent prendre plusieurs formes : demander des informations sur un sujet, obtenir de l'aide sur la résolution d’une problématique, ou encore générer un contenu spécifique. Dans cet exemple, je lui ai demandé de faire un tableau comparatif entre 2 frameworks Java du moment, Quarkus et Springbot.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F2-comparaison.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F2-comparaison.png" alt="Quarkus / Springbot" width="800" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ce type de requête, identique à celle que nous ferons sur un moteur de recherche, est possible grâce à un outil que Gemini CLI intègre nativement : &lt;strong&gt;GoogleSearch&lt;/strong&gt;. Cet outil n’est pas seul, je vous détaillerai cette partie par la suite de l’article.&lt;br&gt;&lt;br&gt;
Il y a quelques mois, lorsque nous utilisions des Large Langage Model (LLM), nous étions limités dans la “fraîcheur” des données. Avec cet outil, les recherches vont permettre d’avoir des résultats à jour. &lt;/p&gt;

&lt;p&gt;Ce biais peut-être vérifié avec deux requêtes simples telles que “donne moi la date du jour” et “dis moi si un ancien président français est en prison et si oui depuis quand” (ce test a été fait le 23/10/2025 et ne me demandez pas pourquoi j’ai eu cette question en tête en premier 🤷) :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F3-date-day.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F3-date-day.png" alt="Date of the day" width="800" height="107"&gt;&lt;/a&gt; &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F4-googlesearch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F4-googlesearch.png" alt="GoogleSearch tool" width="800" height="200"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Dans la seconde requête, Gemini CLI nous indique son raisonnement et les outils utilisés pour répondre à nos questions. Dans ma requête spécifique, GoogleSearch est bien appelé, nous donnant une explication et une première justification sur la réponse donnée. &lt;/p&gt;
&lt;h2&gt;
  
  
  🗒️ Les commandes
&lt;/h2&gt;

&lt;p&gt;Gemini CLI intègre plusieurs commandes permettant notamment de :  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;configurer ou modifier son authentification Google,
&lt;/li&gt;
&lt;li&gt;régler ses préférences et options,
&lt;/li&gt;
&lt;li&gt;soumettre un bug,
&lt;/li&gt;
&lt;li&gt;copier le résultat d’une requête dans le presse papier&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F5-commands.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F5-commands.png" alt="Commands" width="800" height="177"&gt;&lt;/a&gt; &lt;/p&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F6-settings.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F6-settings.png" alt="Settings command" width="800" height="1070"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;La commande /init est intéressante. Elle permet de générer un fichier &lt;a href="http://GEMINI.MD" rel="noopener noreferrer"&gt;GEMINI.MD&lt;/a&gt; à votre projet.&lt;br&gt;&lt;br&gt;
Ce fichier Markdown (vous l’avez deviné avec son extension .md 🙃) contient le contexte de votre projet. Gemini CLI va parcourir les fichiers de votre projet et rassembler les informations nécessaires pour adapter ses futures réponses de Gemini CLI en fonction de votre contexte. &lt;/p&gt;

&lt;p&gt;Il est également possible de créer vos propres commandes personnalisées. Il suffit de créer un répertoire “&lt;em&gt;commands&lt;/em&gt;” soit dans le répertoire &lt;em&gt;.gemini&lt;/em&gt; de votre session ou de votre projet concerné par cette commande.&lt;br&gt;&lt;br&gt;
Le nom du fichier .&lt;code&gt;toml&lt;/code&gt; correspond au nom de la commande et doit posséder au minimum une description de prompt pour expliquer son raisonnement.&lt;/p&gt;

&lt;p&gt;Par exemple, la commande &lt;code&gt;/translate&lt;/code&gt; peut être configurée en ajoutant le fichier &lt;code&gt;translate.toml&lt;/code&gt; dans le répertoire &lt;code&gt;.gemini&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F7-translate-toml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F7-translate-toml.png" alt="Toml configuration file" width="800" height="140"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Dans Gemini CLI, la commande est disponible et permet d’avoir rapidement une traduction français -&amp;gt; anglais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F8-translate-command.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F8-translate-command.png" alt="Custom command" width="800" height="93"&gt;&lt;/a&gt; &lt;/p&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F9-translate-command-result.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F9-translate-command-result.png" alt="Custom command result" width="800" height="93"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  🤖 Un assistant de code “agentic”
&lt;/h2&gt;

&lt;p&gt;En tant que développeur, j’ai intégré dans mes IDEs du moment, VsCode et Intellij, le plugin Gemini, m’accompagnant dans la rédaction de documentation, l’explication du code et l’aide pour résoudre des problèmes. L’arrivée du monde “agentic” a permis de renforcer la partie “assistant” de code en permettant aux outils de proposer des mises à jour des fichiers dans les projets. Le plugin Gemini dispose depuis plusieurs mois la possibilité d’activer le mode “Agent” : &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F10-agent.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F10-agent.png" alt="Agent" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini CLI peut être ouvert dans un terminal, comme celui par défaut disponible sur Mac, dans des applications de terminaux comme &lt;a href="https://ghostty.org/" rel="noopener noreferrer"&gt;Ghostty&lt;/a&gt; (celle que j’utilise) ou bien directement dans le terminal de votre IDE.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F11-cli-terminal.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F11-cli-terminal.png" alt="Gemini CLI in a terminal" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini CLi, en plus de pouvoir modifier vos fichiers, peut exécuter les commandes disponibles sur votre poste. Par exemple, lors de la demande d’aide de création d’un nouveau projet en Go, Gemini CLI va interagir avec votre environnement, en vérifiant pour commencer si Go est installé sur votre poste. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F12-cli-system.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F12-cli-system.png" alt="CLI execution" width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F13-cli-system-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F13-cli-system-2.png" alt="CLI second execution" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Une autre commande à connaître, c’est &lt;strong&gt;/ide&lt;/strong&gt; qui permet de connecter Gemini CLI à votre IDE. Les propositions de code s’ouvriront dans votre IDE, ce qui facilite leur relecture.. Dans cet exemple j’ai demandé à Gemini de me générer des tests et la première étape est bien d’ajouter Junit dans mon projet Java &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F14-diff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F14-diff.png" alt="CLI diff" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Une fois (pour mon exemple) la proposition de Gemini validé, il continue son traitement et me propose de créer une classe de Test pour le code non testé (Oui je sais ce n’est pas bien 😁)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F15-diff-change.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F15-diff-change.png" alt="CLI diff" width="800" height="641"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;La sous commande &lt;strong&gt;/ide status&lt;/strong&gt; permet de voir l’état de cet intégration   &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F16-ide.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F16-ide.png" alt="IDE command" width="800" height="70"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  🧩 Les extensions
&lt;/h2&gt;

&lt;p&gt;Au-delà des fonctionnalités citées précédemment, Gemini CLI possède son système d’extensions qui permet d’accroître notre productivité.&lt;/p&gt;

&lt;p&gt;Une commande &lt;code&gt;/extensions&lt;/code&gt; est disponible. Accompagnée des sous-commandes &lt;code&gt;list&lt;/code&gt; et &lt;code&gt;update&lt;/code&gt;, vous allez pouvoir visualiser les extensions que vous avez et de les mettre à jour.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F17-extensions-list.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F17-extensions-list.png" alt="Extensions list command" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour le moment, j’ai installé ces deux extensions qui sont très pratiques pour faire une revue et faire un audit de sécurité sur la branche sur laquelle on développe. Il existe déjà une liste très intéressante d’extensions disponible sur ce site : &lt;a href="https://geminicli.com/extensions/" rel="noopener noreferrer"&gt;https://geminicli.com/extensions/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Si la génération d’image est quelque chose que vous faites régulièrement, je vous recommande l’extension &lt;code&gt;nanobanana&lt;/code&gt; (modèle de génération d’image de Google).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F18-extensions-website.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F18-extensions-website.png" alt="Gemini CLI extensions website" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pour les personnes qui se demanderaient pourquoi je n’ai pas installé cette extension que j’annonce être intéressante, la raison est assez simple, j’utilise ce modèle de génération d’image dans d’autres contextes 😎. &lt;/p&gt;
&lt;h2&gt;
  
  
  🙌 MCP
&lt;/h2&gt;

&lt;p&gt;Les &lt;strong&gt;MCP&lt;/strong&gt; (Model Context Protocol) permettent de faciliter les appels à des APIs. Gemini CLI offre la possibilité de configurer les MCP que vous avez développés et/ou ceux déjà disponibles. Et ça c’est vraiment intéressant. Pour ma part, j’ai intégré les MCP GitHub, GitLab et Atlassian chez mon client. Cela fait quelques semaines que j’essaye d’en utiliser régulièrement et cela peut très vite être un gain de temps. Envie de créer une issue GitHub ou GitLab ? Écris le à Gemini CLI et passe rapidement à autre chose. De la même façon, la création d’un ticket Jira se fait en quelques mots dans le terminal, pratique.&lt;/p&gt;

&lt;p&gt;Comment cela fonctionne? Gemini CLI gère sa configuration dans le fichier &lt;strong&gt;.gemini/settings.json&lt;/strong&gt; à la racine de votre compte. Ce fichier contient l’ensemble des configurations liées à l’utilisation dans votre IDE, les thèmes graphiques appliqués mais aussi la configuration des MCP.&lt;/p&gt;

&lt;p&gt;La configuration du serveur MCP de GItHub se fait avec cette configuration :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; "github": {  
     "httpUrl": "https://api.githubcopilot.com/mcp/",  
     "headers": {  
       "Authorization": "Bearer xxxxxx"  
     },  
     "timeout": 5000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Côté GitLab, cela peut se faire à l’aide de commande npx. Certains MCP peuvent se configurer avec la modification de ce fichier &lt;code&gt;settings.json&lt;/code&gt;, alors que pour d’autres, ils nécessitent de les installer une seule fois sur votre poste, avec de ce que j’ai vu pour la plupart du temps, des commandes npx.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   "GitLab": {  
     "command": "npx",  
     "args": \[  
       "mcp-remote",  
       "https://gitlab.com/api/v4/mcp",  
       "--static-oauth-client-metadata",  
       "{\\"scope\\": \\"mcp\\"}"  
     \]  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Une fois configuré, il sera possible de récupérer des informations directement dans Gemini CLI à partir des ressources mises à disposition. Dans cet exemple, je veux récupérer les issues de mon projet. Gemini CLI les affiche de manière brute en json mais termine par un affichage plus lisible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F19-mcp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F19-mcp.png" alt="MCP" width="800" height="690"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Concernant ma demande sur les PR ouvertes, Gemini CLi me les (enfin la dans mon exemple) restitue&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F20-mcp-pr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F20-mcp-pr.png" alt="MCP PR" width="800" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📊 Les stats
&lt;/h2&gt;

&lt;p&gt;A la fermeture de Gemini CLI, des statistiques de notre session sont restituées, notamment le nombre d’appels, le pourcentage de succès et les tokens consommés. Ces données sont à tout moment disponibles avec la commande &lt;code&gt;/stats&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F21-stats.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-cli%2F21-stats.png" alt="Stats" width="800" height="573"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Un outil du quotidien ?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Clairement oui&lt;/strong&gt; ! Bien que j’apprécie beaucoup GitLab Duo et leur plateforme agentique (&lt;a href="https://dev.to/zenika/vibe-coding-with-gitlab-duo-agentic-power-in-action-1p47"&gt;https://dev.to/zenika/vibe-coding-with-gitlab-duo-agentic-power-in-action-1p47&lt;/a&gt;), l’utilisation de Gemini CLI est très appréciable. Mon terminal Ghostty, que je dédie à Gemini CLI, me permet de faire toute les activités qui gravitent autour du développement.&lt;/p&gt;

&lt;p&gt;L’intégration des extensions et des MCP est un réel atout pour trouver une information rapidement. Bien sûr, pour des actions plus conséquentes sur GitHub, GitLab ou toute autre application configurable avec MCP, vous serez plus productifs·ves à aller sur l’application en question. Mais pour toute action rapide, l’utilisation des MCP est très intéressante et pertinente. &lt;/p&gt;

&lt;p&gt;Voici quelques articles autour de la CLI et des MCP : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Un code lab maintenu par Romin Iranin Developer Advocate chez Google &lt;a href="https://medium.com/google-cloud/gemini-cli-hands-on-codelab-2f9e04d464e5" rel="noopener noreferrer"&gt;https://medium.com/google-cloud/gemini-cli-hands-on-codelab-2f9e04d464e5&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Une série d’astuces / tutoriels par Romin Iranin : &lt;a href="https://medium.com/google-cloud/gemini-cli-tutorial-series-77da7d494718" rel="noopener noreferrer"&gt;https://medium.com/google-cloud/gemini-cli-tutorial-series-77da7d494718&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/google-cloud/simplified-google-workspace-automation-with-gemini-cli-extensions-cbd86bcd7948" rel="noopener noreferrer"&gt;https://medium.com/google-cloud/simplified-google-workspace-automation-with-gemini-cli-extensions-cbd86bcd7948&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/google-cloud/a-developers-guide-to-building-gemini-cli-extensions-5f72dcff4d29" rel="noopener noreferrer"&gt;https://medium.com/google-cloud/a-developers-guide-to-building-gemini-cli-extensions-5f72dcff4d29&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>gemini</category>
      <category>cli</category>
      <category>development</category>
      <category>tooling</category>
    </item>
    <item>
      <title>🙌 Vibe Coding with GitLab Duo : Agentic Power in Action</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Mon, 06 Oct 2025 08:32:43 +0000</pubDate>
      <link>https://forem.com/zenika/vibe-coding-with-gitlab-duo-agentic-power-in-action-1p47</link>
      <guid>https://forem.com/zenika/vibe-coding-with-gitlab-duo-agentic-power-in-action-1p47</guid>
      <description>&lt;h2&gt;
  
  
  🤘 Vibe Coding ?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Vibecoding&lt;/strong&gt; is clearly THE buzzword of recent months, bringing the famous debate that “Developers will disappear with IA and vibecoding”. &lt;/p&gt;

&lt;p&gt;Anyway, vibecoding represents a new practice for producing applications from prompts, without writing a single line of code, and this is the new revolution. &lt;/p&gt;

&lt;p&gt;Many tools already exist, and this blog post will once again talk about &lt;strong&gt;GitLab Duo&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I’m revisiting it because I’m a long-time user and a &lt;strong&gt;big fan of GitLab Duo&lt;/strong&gt; since I discovered and tested it since 2 years, cf &lt;a href="https://dev.to/zenika/discovering-gitlab-duo-2k0l"&gt;this blog post&lt;/a&gt; and my Cheatsheet (which I definitively need to update with this beta feature 😅) &lt;a href="https://dev.to/zenika/gitlab-cheatsheet-15-gitlab-duo-3fhg"&gt;https://dev.to/zenika/gitlab-cheatsheet-15-gitlab-duo-3fhg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F1-gitlabduo-cheatsheet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F1-gitlabduo-cheatsheet.png" alt="" width="800" height="724"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🦊 GitLab Duo Agent Platform
&lt;/h2&gt;

&lt;p&gt;GitLab brought a new version of GitLab Duo : &lt;strong&gt;GitLab Duo Agent Platform&lt;/strong&gt;. This new version focuses, as the name mentions it, on the agentic world.&lt;/p&gt;

&lt;p&gt;This project contains some features : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An agentic version of GitLab Duo Chat which understands a bigger context than GitLab Duo and it is able to create and edit files on your projects. This chat can retrieve information from different sources. &lt;/li&gt;
&lt;li&gt;A CLI agent allows to call a user @GitLab Duo in issues, merge requests or epics to help you&lt;/li&gt;
&lt;li&gt;An AI catalog that lists all public agents available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitLab Duo Agent Platform is based on “Flows”, a combination of agents available on GitLab UI and IDE plugin and able to help you for example for fixing your CI/CD pipelines and convert issues to merge requests. &lt;/p&gt;

&lt;p&gt;So many things are evolving : &lt;a href="https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/#anthropic-claude" rel="noopener noreferrer"&gt;https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/#anthropic-claude&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🃏Time for the demo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  AI Catalog
&lt;/h3&gt;

&lt;p&gt;The AI Catalog, available here : &lt;a href="https://gitlab.com/explore/ai-catalog/agents" rel="noopener noreferrer"&gt;https://gitlab.com/explore/ai-catalog/agents&lt;/a&gt;, contains public agents you can use on your projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F2-ai-catalog.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F2-ai-catalog.png" alt="" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Private agents can also appear in this page like this one I created to test this platform. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F3-gitmoji-agent.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F3-gitmoji-agent.png" alt="" width="800" height="735"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After providing a name, a description and setting the access rights, a prompt must be configured to explain the agent’s task. Tools can also be added to provide the agent with more context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F4-ai-agent-tools.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F4-ai-agent-tools.png" alt="" width="800" height="1233"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To test this agent, in VS Code, I asked to initialize a &lt;a href="//README.md"&gt;README.md&lt;/a&gt; and we can see in the log that the gitmoji 📝 is well used.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F5-gitmoji-use.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F5-gitmoji-use.png" alt="" width="732" height="112"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents
&lt;/h3&gt;

&lt;p&gt;The most powerful feature is the merge request generation. On an issue, a new “Generate MR with Duo” button will create a new “Agent session”. Within a few minutes, a new merge request will appear, complete with a description of the different steps and a single commit.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F6-issue-test.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F6-issue-test.png" alt="" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A new “Automate” menu allows you to see the GitLab Duo Agent’s work in progress. Each step of their reflection is displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F7-session-agent.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F7-session-agent.png" alt="" width="800" height="726"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The result was this merge request. GitLab Duo explains, and this is a very important aspect for me, what it did to address your issue. It made one commit with over 20 files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F8-mr-by-agent.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F8-mr-by-agent.png" alt="" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Of course, the generated code needs to be reviewed. In this example, the &lt;code&gt;npm run serve&lt;/code&gt; command failed due to a missing parameter export. &lt;/p&gt;

&lt;h3&gt;
  
  
  Agent CLI
&lt;/h3&gt;

&lt;p&gt;This first experiment involved an issue where I asked GitLab Duo to replace the Node.js backend with a Quarkus application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F9-duo-cli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F9-duo-cli.png" alt="" width="800" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F10-duo-response.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F10-duo-response.png" alt="" width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F11-duo-commit.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgitlab-duo-agent%2F11-duo-commit.png" alt="" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I particularly appreciate how GitLab Duo explains its thought process and each step, until going to the commit command. This can be very helpful for both junior and expert developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  🙌 Feedback
&lt;/h2&gt;

&lt;p&gt;This agent integration is very impressive.The ability to initiate a merge request and add changes directly from an issue using GitLab Duo Agent Platform is a big real time performer. While it is, of course, crucial for developers to review the code generated by IA, it provides an excellent foundation of work.&lt;/p&gt;

&lt;p&gt;I’m eager to see the new GitLab release to further explore and test how Duo can enhance our productivity.&lt;/p&gt;

&lt;p&gt;And a big thanks to &lt;a href="https://www.linkedin.com/in/johnwcoghlan" rel="noopener noreferrer"&gt;John&lt;/a&gt; for providing me the opportunity to test this fantastic feature 🙏&lt;/p&gt;

&lt;p&gt;Best practices are defined by GitLab in &lt;a href="https://docs.gitlab.com/user/duo_agent_platform/flows/issue_to_mr/#best-practices" rel="noopener noreferrer"&gt;this page&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://about.gitlab.com/gitlab-duo/agent-platform/" rel="noopener noreferrer"&gt;https://about.gitlab.com/gitlab-duo/agent-platform/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gitlab</category>
      <category>ai</category>
      <category>vibecoding</category>
      <category>development</category>
    </item>
    <item>
      <title>👀 Exploring the GitLab Knowledge Graph</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Fri, 19 Sep 2025 13:52:26 +0000</pubDate>
      <link>https://forem.com/zenika/exploring-the-gitlab-knowledge-graph-5ga7</link>
      <guid>https://forem.com/zenika/exploring-the-gitlab-knowledge-graph-5ga7</guid>
      <description>&lt;p&gt;Every month I enjoyed reading the GitLab Release. In the last one (18.4), a new tool, under active development, appeared in the GitLab ecosystem : &lt;strong&gt;GitLab Knowledge Graph&lt;/strong&gt; (gkg). GKG gives you a graphic representation of your code.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Let’s go&lt;/strong&gt; discover together this (very interesting and promising) tool.&lt;/p&gt;

&lt;h1&gt;
  
  
  🧑‍🔬 GKG Install
&lt;/h1&gt;

&lt;p&gt;👉 First step, install it. In my case, having a MacBookPro, it was very quick:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://gitlab.com/gitlab-org/rust/knowledge-graph/-/raw/main/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, I added an alias on my .zshrc file and I can use it with the gkg command. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;📚 &lt;a href="https://gitlab-org.gitlab.io/rust/knowledge-graph/#get-started-in-minutes" rel="noopener noreferrer"&gt;https://gitlab-org.gitlab.io/rust/knowledge-graph/#get-started-in-minutes&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My “crash test”project was my communities-api (&lt;a href="https://gitlab.com/communities-api/communities-api" rel="noopener noreferrer"&gt;https://gitlab.com/communities-api/communities-api&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;👉 The gkg index command launches a scan of your project. This action was quick for this project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxrg4xpcew8vgpmr2peu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqxrg4xpcew8vgpmr2peu.png" alt="GDG index" width="800" height="72"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;👉 Final step, run th server with the gkg server start command. GDK becomes available on &lt;a href="http://127.0.0.1:27495" rel="noopener noreferrer"&gt;http://127.0.0.1:27495&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note, you can index or re-index a project directly in the GKG UI: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqder4n8rrongb7js8akx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqder4n8rrongb7js8akx.png" alt="Index UI" width="680" height="544"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I didn’t test the IDEA integration yet.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🪂 GKG in action
&lt;/h1&gt;

&lt;p&gt;GKG displays the graphic in a simplify interface:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97w0x8cloiwoiltd85gg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97w0x8cloiwoiltd85gg.png" alt="Explorer UI" width="800" height="737"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the generated graph, we can see different types of elements like all directories and files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmd61ojo2jxkz4rgo54vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmd61ojo2jxkz4rgo54vd.png" alt="Explore directories" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dependencies are also displayed. In this Java project, we can see Java class imported in each class: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fssyzf0l8t9m1p7too00n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fssyzf0l8t9m1p7too00n.png" alt="Zoom Explorer" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The last type is “definition” and we can see Java class, Java methods, Javascript constants which appear as definitions.  &lt;/p&gt;

&lt;p&gt;And the last feature is the possibility to search items&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1o8970vy3yfoopc6iz6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1o8970vy3yfoopc6iz6.png" alt="Zoom panel" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  💡 Feedbacks
&lt;/h1&gt;

&lt;p&gt;This new GitLab tool is under development but this first version is very interesting. This type of tool solves a common problem in many teams/enterprises and I am sure that it will be adopted by a lot of teams to understand projects and have a quick look on complex projects dependencies. &lt;/p&gt;

&lt;p&gt;👀 Check out the blog post about this release: &lt;a href="https://about.gitlab.com/releases/2025/09/18/gitlab-18-4-released/" rel="noopener noreferrer"&gt;https://about.gitlab.com/releases/2025/09/18/gitlab-18-4-released/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;👀 Check out the GitLab project: &lt;a href="https://gitlab.com/gitlab-org/rust/knowledge-graph/-/issues" rel="noopener noreferrer"&gt;https://gitlab.com/gitlab-org/rust/knowledge-graph/-/issues&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;📝 Give your feedback on this issue: &lt;a href="https://gitlab.com/gitlab-org/rust/knowledge-graph/-/issues/160" rel="noopener noreferrer"&gt;https://gitlab.com/gitlab-org/rust/knowledge-graph/-/issues/160&lt;/a&gt; &lt;/p&gt;

</description>
      <category>gitlab</category>
      <category>tooling</category>
      <category>developer</category>
    </item>
    <item>
      <title>Making your podcast accessible with AI-generated transcription</title>
      <dc:creator>Jean-Phi Baconnais</dc:creator>
      <pubDate>Fri, 04 Jul 2025 07:36:26 +0000</pubDate>
      <link>https://forem.com/zenika/making-your-podcast-accessible-with-ai-generated-transcription-d5k</link>
      <guid>https://forem.com/zenika/making-your-podcast-accessible-with-ai-generated-transcription-d5k</guid>
      <description>&lt;p&gt;This blog post is a translation of the &lt;a href="https://dev.to/zenika/rendre-son-podcast-accessible-avec-lia-au-service-de-la-transcription-e01"&gt;original post&lt;/a&gt;, with help from Gemini and some human reviewers. Pictures come from the original blog post and are left in French.&lt;/p&gt;

&lt;p&gt;Artificial intelligence is everywhere. Its use is increasing and is transforming the way we approach our work. It is proving to be a valuable assistant, helping people accomplish their daily activities more quickly. Particularly in speech-to-text, it provides quick transcriptions of audio recordings, although human intervention remains vital to ensure that the generated content is accurate and on topic.&lt;/p&gt;

&lt;p&gt;In this article, we will tell you about our experience integrating AI into the production of our podcast, Zenikast, and more specifically, using Google Gemini to generate transcripts of episodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎙️ Zenikast, a new adventure
&lt;/h2&gt;

&lt;p&gt;When we decided to launch &lt;a href="https://youtu.be/4yBqGEsjy2E?si=nTpDGMSUTMx8fWyQ" rel="noopener noreferrer"&gt;Zenikast&lt;/a&gt;, Zenika's new podcast, we pondered how to make our episodes accessible.&lt;/p&gt;

&lt;p&gt;Unfortunately, accessibility, especially concerning podcasts, is not often a priority. At Zenika, it's a topic we consider important. We are dedicated to bringing accessibility into our services, audits, training, and even our side activities like the podcast!&lt;/p&gt;

&lt;p&gt;On podcast platforms like Apple Podcasts or YouTube, automatic transcriptions are generated, often containing errors and various hallucinations. We know that AI-based tools improve every day, but we were determined to provide near-perfect transcripts. To make possible, we opted for a simple and effective solution: a Google Doc. We have an internal tool that allows us to create meaningful links to web pages or documents, so we don’t have to share the obscure raw Google Doc link. This means we can quickly and easily have a link like &lt;a href="https://links.zenika.com/link/zenikast/episode-1" rel="noopener noreferrer"&gt;https://links.zenika.com/link/zenikast/episode-1&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Many thanks to &lt;a href="https://www.linkedin.com/in/emmanuelle-aboaf" rel="noopener noreferrer"&gt;Emmanuelle Aboaf&lt;/a&gt; for taking the time to answer our questions and for her advice 🙏.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧪 Our first tests: Whisper Transcribe
&lt;/h2&gt;

&lt;p&gt;For Season 1, the podcast was managed by several people with technical backgrounds. We experimented with various tools, including Node.js and Java libraries, as well as directly installable software. However, Zenikast is intended to be available to everyone at Zenika, whether they have a technical background or not. Therefore, the tool and method for creating our transcrips needed to be accessible to all Zenika employees.&lt;/p&gt;

&lt;p&gt;We chose &lt;a href="https://www.whispertranscribe.com/" rel="noopener noreferrer"&gt;Whisper Transcribe&lt;/a&gt; and were able to test our first transcriptions using the free version. A big thank you to everyone who worked on this fantastic project 💪.&lt;/p&gt;

&lt;p&gt;A significant feature in Whisper is the diarization, or the automatic detection of different speakers in the podcast. This feature is incredibly useful for our episodes, which can have up to six different voices.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image1.png" alt="Exemple de transcript réalisé par Whisper transcribe" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image2.png" alt="Paramétrage de Whisper transcribe" width="800" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image3.png" alt="Ajout de mots clés via Whisper transcribe" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Specific words, abbreviations, or technical terms can be added to Whisper's "known" word list.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image4.png" alt="Whisper transcribe" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Despite its quality, each transcript still required several hours of proofreading to optimize the text’s readability. Additionally, Whisper Transcribe is a paid service for more intensive use.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Towards generative AI with Vertex AI
&lt;/h2&gt;

&lt;p&gt;At &lt;a href="https://www.devoxx.fr/" rel="noopener noreferrer"&gt;Devoxx France&lt;/a&gt; in April, a conversation with &lt;a href="https://www.linkedin.com/in/deleplacevalentin?miniProfileUrn=urn%3Ali%3Afs_miniProfile%3AACoAAAC6MU8BEMDKEp_ITXuYBakCnC1wl8i8BDY&amp;amp;lipi=urn%3Ali%3Apage%3Ad_flagship3_search_srp_all%3BBBfW2gOtRmempl2qN6WRdg%3D%3D" rel="noopener noreferrer"&gt;Valentin Deleplace&lt;/a&gt; convinced us to continue our experiments with &lt;a href="https://gemini.google.com/app" rel="noopener noreferrer"&gt;Gemini&lt;/a&gt; and &lt;a href="https://cloud.google.com/vertex-ai" rel="noopener noreferrer"&gt;Vertex AI Studio&lt;/a&gt;. It's possible to import an audio file (.mp3 or .wav) and ask Gemini to provide the episode's transcript, all without writing a single line of code.&lt;/p&gt;

&lt;p&gt;The result was quite satisfactory and piqued our curiosity to try it out during our next podcast episode, which was recorded at Devoxx (see the episode's &lt;a href="https://www.youtube.com/watch?v=6jsWD7kCfQw" rel="noopener noreferrer"&gt;video&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  🧪 Feedback: testing Gemini 2.5 Pro
&lt;/h2&gt;

&lt;p&gt;We went straight to the latest model. Available in preview via Vertex AI, Gemini 2.5 Pro can process multimodal prompts: text, image, audio, and video. Unlike previous generations, it integrates much more advanced reasoning capabilities.&lt;/p&gt;

&lt;p&gt;Getting started is quick: by importing an mp3 or wav file, we interacted with the model directly in Vertex AI Studio, and in a few seconds Gemini generated a solid text that fit the audio. Whereas Whisper Transcribe needed painstaking proofreading, Gemini’s output was a significant improvement. More importantly, it is also capable of diarization.&lt;/p&gt;

&lt;h3&gt;
  
  
  🪜 Step 1: Transcription with voice detection
&lt;/h3&gt;

&lt;p&gt;We imported a wav file into Vertex AI Studio and gave it this simple instruction (this is a translation of our initial prompt in French).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Can you generate a transcript of this audio file for me?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Context: for Zenika’s podcast, Zenikast, we are recording an episode at Devoxx France 2025. The first person speaking is Jean-Philippe and the second person is Benjamin.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Can you provide a transcript in text format?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In a few seconds, Gemini produced a structured transcript, partitioned by speaker ("Speaker 1", "Speaker 2", etc). The raw result was really good. No hallucinations, very few mistakes, and above all, a good understanding of the transitions between speakers. This trial convinced us of the potential. But we wanted to go further: to improve the readability of the text, to make it more pleasant to read, or even publishable as is.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image5.jpg" alt="1ère transcription avec Gemini" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🪜 Step 2: Automatic cleaning of verbal tics
&lt;/h3&gt;

&lt;p&gt;During a second prompt, we asked for exactly the same transcript but with the removal of verbal tics such as “uh” and “so”. Gemini preserved the overall gist of the discussion, and made it much more fluid to read.&lt;/p&gt;

&lt;p&gt;This is the prompt:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Can you generate a transcript of this audio file for me?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Context: for the Zenika’s (Zenikast) podcast, Zenikast, we are recording an episode at Devoxx France 2025. The first person speaking is Jean-Philippe and the second person is Benjamin..&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Can you provide the transcript in text format? Can you also clean up the text by removing verbal tics like "uh", word repetitions, etc., to make it readable while remaining as faithful as possible to the original text?&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🪜 Step 3: Two complementary versions
&lt;/h3&gt;

&lt;p&gt;This dual output now allows us to have one version that remains faithful to the original audio and another that is more readable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image6.jpg" alt="Transcription brute avec Gemini" width="800" height="571"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image7.jpg" alt="Transcription améliorée avec Gemini" width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧭 Grounding: verified answers from reliable sources
&lt;/h2&gt;

&lt;p&gt;In the previous screenshots, you'll notice that we activated an option called "Grounding" on the right panel.&lt;/p&gt;

&lt;p&gt;The idea behind this is to connect Gemini to verifiable data sources, such as Google Search, Google Maps, or even your own data. This drastically reduces the risk of hallucinations.&lt;/p&gt;

&lt;p&gt;For example, if you ask Gemini to summarize a recent news article, generate up-to-date content, or even answer a very precise question on a constantly evolving topic, grounding with Google Search allows the output to be based on recent and relevant web content. Even better, citations and confidence scores can be added to the output which enhances auditability and transparency.&lt;/p&gt;

&lt;p&gt;It's possible to connect Gemini to a RAG Engine, Vertex AI Search, or Elasticsearch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image8.png" alt="Gemini - Custom grounding" width="800" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fjeanphi-baconnais.gitlab.io%2Fimg%2Fgemini-transcription%2F_image9.png" alt="Gemini - Custom grounding source" width="800" height="801"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 What's next, based on AI agents?
&lt;/h2&gt;

&lt;p&gt;Using artificial intelligence, whether it’s Whisper Transcribe or more recently Gemini, has saved us several hours on transcribing our episodes. During our initial tests, we spent 3 to 4 hours copyediting an episode. For now, even if this process isn’t as smooth and as automated as we’d like, we're still only spending 30 minutes.&lt;/p&gt;

&lt;p&gt;Given the announcements made by Google in April and May 2025, improvements will quickly be available and could further accelerate the process. This will allow any collaborator at Zenika to create transcripts in just a few clicks (via the &lt;a href="https://cloud.google.com/products/agentspace" rel="noopener noreferrer"&gt;AgentSpace&lt;/a&gt; platform, the &lt;a href="https://github.com/google-a2a/A2A" rel="noopener noreferrer"&gt;Agent2Agent&lt;/a&gt; (A2A) protocol, and the &lt;a href="https://google.github.io/adk-docs/" rel="noopener noreferrer"&gt;Agent Development Kit&lt;/a&gt;, ADK). Stay tuned for more about this in a future blog post.&lt;/p&gt;

&lt;p&gt;👉 Post wrote with &lt;a href="https://www.linkedin.com/in/bourgeoisbenjamin?" rel="noopener noreferrer"&gt;Benjamin Bourgeois&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🙏 Thanks to &lt;a href="https://www.linkedin.com/in/punkstarman" rel="noopener noreferrer"&gt;William&lt;/a&gt; for your review&lt;/p&gt;

</description>
      <category>gemini</category>
      <category>google</category>
      <category>ai</category>
      <category>podcast</category>
    </item>
  </channel>
</rss>
