<?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>DEV Community: Jon Gottfried</title>
    <description>The latest articles on DEV Community by Jon Gottfried (@jonmarkgo).</description>
    <link>https://dev.to/jonmarkgo</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%2F379485%2Fd1c1869a-68d7-4536-a542-7775cb27d3e9.jpeg</url>
      <title>DEV Community: Jon Gottfried</title>
      <link>https://dev.to/jonmarkgo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonmarkgo"/>
    <language>en</language>
    <item>
      <title>Share, Embed, and Curate Agent Sessions on DEV [Beta]</title>
      <dc:creator>Jon Gottfried</dc:creator>
      <pubDate>Wed, 04 Mar 2026 20:19:27 +0000</pubDate>
      <link>https://dev.to/devteam/share-embed-and-curate-agent-sessions-on-dev-beta-5bj6</link>
      <guid>https://dev.to/devteam/share-embed-and-curate-agent-sessions-on-dev-beta-5bj6</guid>
      <description>&lt;p&gt;Authors can now upload Agent Session transcripts to their DEV account. Those transcripts can be curated, sliced up, shared publicly, and embedded into posts. &lt;strong&gt;&lt;em&gt;This is a beta feature, and we are actively looking for feedback!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every day, more people are creating software for the first time. Some have long histories as developers, and some have never seen a line of code in their life. In most cases, they're using the same tooling - coding agents. And yet, as these tools become ubiquitous there are surprisingly few ways to share your workflows and results in a standardized way beyond screenshots. Each tool has its own share link generator, each tool outputs logs in a different format. There are a few nascent projects out there to help, but they generally exist as standalone utilities or don't solve the sharing problem explicitly in a way that works on DEV.&lt;/p&gt;

&lt;p&gt;We decided to solve that problem by making it possible to upload your transcripts to DEV, automatically parse them into a standardized format, and embed whole or partial sessions into your posts in a way that fits naturally into technical writing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supported Platforms
&lt;/h2&gt;

&lt;p&gt;To start with, our parser supports Gemini CLI, Codex, Claude Code, Pi, and GitHub Copilot CLI. If you use a different tool, you're encouraged to open a PR or Issue on &lt;a href="https://github.com/forem/forem" rel="noopener noreferrer"&gt;Forem&lt;/a&gt; to add a new parser yourself or ask us to do so. As an example, you can check out how our Gemini CLI parser works in our GitHub commit:&lt;br&gt;
&lt;a href="https://github.com/forem/forem/commit/8f92c64a775ed3a0993e5edc0637112a95d1dae2#diff-d98a98bdd6e0d9154df5559b53644185d4ab13160e85c0fdaae3013ff985e27b" rel="noopener noreferrer"&gt;https://github.com/forem/forem/commit/8f92c64a775ed3a0993e5edc0637112a95d1dae2#diff-d98a98bdd6e0d9154df5559b53644185d4ab13160e85c0fdaae3013ff985e27b&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Example Session
&lt;/h2&gt;

&lt;p&gt;Here's a session from an example app I built using Gemini CLI for my pet guinea pig Pearl (obligatory pic in comments). &lt;/p&gt;


&lt;div class="ltag-agent-session"&gt;
  &lt;div class="agent-session-header"&gt;
    
      
      
      
    
    &lt;span class="agent-session-tool-icon-badge" title="Gemini CLI"&gt;
  
    
      
      
      
      
    
  
  

&lt;/span&gt;
    &lt;span class="agent-session-title"&gt;Wheeky Menu - Piggie Food Picker&lt;/span&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-scroll"&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;build me a simple web app to let my guinea pig tell me what food it wants&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Clarifying Application Needs&lt;/strong&gt; / &lt;strong&gt;Defining Food Selection UI&lt;/strong&gt; / &lt;strong&gt;Mapping Out The App's Flow&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;I'll build a vibrant, touch-friendly web app called &lt;strong&gt;"Pui Pui Picker"&lt;/strong&gt; designed for guinea pigs (and their humans).&lt;/p&gt;

&lt;h3&gt;The Plan:&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Scaffold:&lt;/strong&gt; Create a React + TypeScript project using Vite.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Design:&lt;/strong&gt; A "big button" interface with high-contrast colors and bouncy animations to make it engaging.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Features:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Food Grid:&lt;/strong&gt; Large cards for Hay, Carrots, Romaine, and Bell Peppers.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Pui Pui Feedback:&lt;/strong&gt; Visual and text-based "wheeking" feedback when an item is selected.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;History:&lt;/strong&gt; A small "Last Requested" log to track what the piggie "chose."&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Styling:&lt;/strong&gt; Custom Vanilla CSS for a polished, modern look without external dependencies.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Does this sound like a good start for your guinea pig? Or should I add specific snacks they love?&lt;/p&gt;

&lt;p&gt;I will start by scaffolding the project.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"npm create vite@latest . -- --template react-ts \u0026\u0026 npm ...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npm create vite@latest . -- --template react-ts &amp;amp;&amp;amp; npm install"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Scaffolding the React TypeScript project using Vite and installing dependencies."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;let's go simpler than vite and react&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Seeking Simplification for App&lt;/strong&gt; / &lt;strong&gt;Constructing the index.html&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;I'll create a single-file, vibrant, and touch-friendly HTML application called &lt;strong&gt;"The Wheeky Menu"&lt;/strong&gt;. It will use large, colorful buttons and bouncy animations—perfect for a guinea pig's "input" (or a human's finger).&lt;/p&gt;

&lt;h3&gt;The Plan:&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Single File:&lt;/strong&gt; Everything (HTML, CSS, JS) in &lt;code&gt;index.html&lt;/code&gt; for instant loading.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Piggie-Centric UI:&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Large Interaction Zones:&lt;/strong&gt; Easy-to-hit cards for Hay, Carrots, Peppers, and Lettuce.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Visual Feedback:&lt;/strong&gt; Cards will "pop" and flash when tapped.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Features:&lt;/strong&gt; 

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;"Wheek!" Notification:&lt;/strong&gt; A large visual alert showing what was picked.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Order History:&lt;/strong&gt; A simple log at the bottom to see what the piggie "requested" most.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I will now create the &lt;code&gt;index.html&lt;/code&gt; file.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-writefile"&gt;WriteFile&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"content":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003che...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;{"content":"\u003c!DOCTYPE html\u003e\n\u003chtml lang=\"en\"\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n    \u003cmeta name=\"viewport\" content=\"width=device-width, initial...&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Successfully created and wrote to new file: /Users/jonmarkgo/Documents/GitHub/gemini-guinea-pig/index.html. Here is the updated code:
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"&amp;gt;
    &amp;lt;title&amp;gt;Wheeky Menu - Piggie Food Picker&amp;lt;/title&amp;gt;
    &amp;lt;style&amp;gt;
        :root {
            --bg-color: #fdf6e3;
            --card-bg: #ffffff;
            --text-color: #5d4037;
            --accent-color: #ff8a65;
            --shadow: 0 8px 16px rgba(0,0,0,0.1);
            
            --color-hay: #fff176;
            --color-carrot: #ffb74d;
            --color-pepper: #ef5350;
            --color-lettuce: #81c784;
        }

        * {
            box-sizing: border-box;
            -webkit-tap-highlight-color: transparent;
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: var(--bg-color);
            color: var(--text-color);
            margin: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
            padding: 20px;
            overflow-x: hidden;
        }

        header {
            text-align: center;
            margin-bottom: 30px;
        }

        h1 {
            font-size: 2.5rem;
            margin: 0;
            color: var(--accent-color);
            text-shadow: 2px 2px 0px #fff;
        }

        p.subtitle {
            font-style: italic;
            margin-top: 5px;
            opacity: 0.8;
        }

        .grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 20px;
            width: 100%;
            max-width: 600px;
        }

        .food-card {
            background: var(--card-bg);
            border-radius: 24px;
            padding: 30px 10px;
            text-align: center;
            box-shadow: var(-
... (truncated)&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Constructing The Interface&lt;/strong&gt; / &lt;strong&gt;Refining The UX Design&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;The &lt;strong&gt;"Wheeky Menu"&lt;/strong&gt; is ready! It's a single-file web app with large, high-contrast buttons designed for easy "selection" (by snout or finger).&lt;/p&gt;

&lt;h3&gt;How to use:&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Open the file:&lt;/strong&gt; You can open &lt;code&gt;index.html&lt;/code&gt; directly in any web browser.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Piggie Input:&lt;/strong&gt; Place your tablet or phone on the floor or near the cage. When your guinea pig taps or "boops" a card:

&lt;ul&gt;
&lt;li&gt;  A large &lt;strong&gt;"WHEEK!"&lt;/strong&gt; announcement pops up.&lt;/li&gt;
&lt;li&gt;  The request is added to the &lt;strong&gt;Request History&lt;/strong&gt; at the bottom (so you can see what they picked if you step away).&lt;/li&gt;
&lt;li&gt;  On mobile devices, it will provide a small vibration (haptic feedback) when touched.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I've used high-contrast colors and bouncy animations to make it visually stimulating. Enjoy the wheeking!&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-user"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-user"&gt;
          You
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div&gt;
                  &lt;div class="agent-session-text agent-session-text-collapse"&gt;
                    &lt;p&gt;Find the current Gemini CLI session log file. Look in ~/.gemini/sessions/ for the most recently modified .json or .jsonl file.&lt;/p&gt;

&lt;p&gt;Then run the devto command to upload it:&lt;/p&gt;

&lt;p&gt;Error: No file specified. Use --auto or provide a file path.\nRun 'devto --help' for usage.&lt;br&gt;
[Shell command 'devto --yes --tool gemini_cli --title "" "$(ls -t ~/.gemini/sessions/&lt;strong&gt;/*.json ~/.gemini/sessions/&lt;/strong&gt;/*.jsonl 2&amp;gt;/dev/null | head -1)"' exited with code 1]&lt;/p&gt;

&lt;p&gt;If devto is not installed, use curl directly:&lt;/p&gt;

&lt;p&gt;jq: Bad JSON in --rawfile body : Could not open : No such file or directory&lt;br&gt;
[Shell command 'TMPJSON=$(mktemp) &amp;amp;&amp;amp; jq -n --arg title "" --rawfile body "$(ls -t ~/.gemini/sessions/&lt;strong&gt;/*.json ~/.gemini/sessions/&lt;/strong&gt;/*.jsonl 2&amp;gt;/dev/null | head -1)" '{title: $title, tool_name: "gemini_cli", body: $body}' &amp;gt; "$TMPJSON" &amp;amp;&amp;amp; curl -s -X POST "${DEVTO_HOST:-&lt;a href="https://dev.to%7D/api/agent_sessions"&gt;https://dev.to}/api/agent_sessions&lt;/a&gt;" -H "Content-Type: application/json" -H "Accept: application/vnd.forem.api-v1+json" -H "api-key: $DEVTO_API_KEY" -d @"$TMPJSON" &amp;amp;&amp;amp; rm -f "$TMPJSON"' exited with code 2]&lt;/p&gt;

&lt;p&gt;After uploading, display the URL of the created session to the user.&lt;/p&gt;

                  &lt;/div&gt;
                  Show more
                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Examining Upload Strategies&lt;/strong&gt; / &lt;strong&gt;Implementing Dev Upload Skill&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I will activate the &lt;code&gt;dev-upload&lt;/code&gt; skill to securely and efficiently upload your session log to DEV.to.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-activateskill"&gt;Activate Skill&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"name":"dev-upload"}&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"dev-upload"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;&amp;lt;activated_skill name="dev-upload"&amp;gt;
  &amp;lt;instructions&amp;gt;
    # Upload Session to DEV

Upload the current session transcript to [DEV](https://dev.to) as an Agent Session.

## Steps

### 1. Find the transcript

Find the current session's transcript file — the most recently modified `.jsonl` file:
- Claude Code: `~/.claude/projects/` (recursive)
- Codex: `~/.codex/sessions/`
- Gemini CLI: `~/.gemini/sessions/`
- GitHub Copilot: `~/.copilot/`
- Pi: `~/.pi/sessions/`

Use the agent's own session context if available to identify the exact path.

### 2. Load config and check for API key

Load all config in a single bash call:

```bash
if [ -f ~/.config/devto/config ]; then source ~/.config/devto/config; fi
API_KEY="${DEVTO_API_KEY:-${API_KEY:-}}"
HOST="${DEVTO_HOST:-https://dev.to}"
echo "API_KEY=${API_KEY:+SET}"
echo "HOST=$HOST"
```

If no key is found:
1. Tell the user they need a DEV API key and link them to https://dev.to/settings/extensions to generate one.
2. Ask the user to paste their key here in the chat.
3. Once they provide it, save it (along with the host) so they never have to do this again:

```bash
mkdir -p ~/.config/devto
cat &amp;gt; ~/.config/devto/config &amp;lt;&amp;lt;'CONF'
DEVTO_API_KEY="THE_KEY_THEY_GAVE_YOU"
DEVTO_HOST="https://dev.to"
CONF
```

4. Then continue with the upload. Do NOT stop or ask the user to run commands themselves.

### 3. Upload

Do the entire upload in a single bash call. Replace TRANSCRIPT, TITLE, HOST, and API_KEY with actual values:

```bash
set -e
TRANSCRIPT="/path/to/session.jsonl"
TITLE="the session title"
HOST="https://dev.to"
API_KEY="the-key"

TMPJSON=$(mktemp)
trap "rm -f '$TMPJSON'" EXIT

jq -n \
  --arg title "$TITLE" \
  --arg tool_name "auto" \
  --rawfile body "$TRANSCRIPT" \
  '{title: $title, tool_name: $tool_name, body: $body}' &amp;gt; "$TMPJSON"

RESPONSE=$(curl -s -w "\n%{http_code}" \
  -X POST "$HOST/api/agent_sessions" \
  -H "Content-Type: application/json" \
  -H "Accept: application/vnd.forem.api-v1+json" \
  -H "api-key: $API_KEY"
... (truncated)&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Defining the Upload Process&lt;/strong&gt; / &lt;strong&gt;Analyzing the Configuration Steps&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll locate your most recent session log and check for a DEV.to API key to begin the upload.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"description":"Locating the most recent session log and checking for a DEV.t...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;{"description":"Locating the most recent session log and checking for a DEV.to API key.","command":"# Find the most recent session log\nTRANSCRIPT=$(ls -t ~/.gemini/sessions/*.jsonl 2\u003e/dev/nul...&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: TRANSCRIPT=
API_KEY=SET
HOST=https://dev.to
Process Group PGID: 73065&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Searching the File System&lt;/strong&gt; / &lt;strong&gt;Refining the Search Strategy&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll look for the session log again, including both &lt;code&gt;.json&lt;/code&gt; and &lt;code&gt;.jsonl&lt;/code&gt; files across all session subdirectories.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"# Find the most recent session log\nTRANSCRIPT=$(ls -t ~/.gemini/...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;{"command":"# Find the most recent session log\nTRANSCRIPT=$(ls -t ~/.gemini/sessions/**/*.json ~/.gemini/sessions/**/*.jsonl 2\u003e/dev/null | head -1)\necho \"TRANSCRIPT=$TRANSCRIPT\"","descript...&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: TRANSCRIPT=
Process Group PGID: 73508&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Exploring the Directory&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll list the contents of &lt;code&gt;~/.gemini/sessions/&lt;/code&gt; to find the exact session log files.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -R ~/.gemini/sessions/ | head -n 20","description":"Listing th...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -R ~/.gemini/sessions/ | head -n 20"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Listing the contents of the Gemini CLI sessions directory."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: ls: /Users/jonmarkgo/.gemini/sessions/: No such file or directory
Process Group PGID: 73515&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Examining Session Locations&lt;/strong&gt; / &lt;strong&gt;Inspecting Gemini Directory Contents&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll list the contents of the &lt;code&gt;~/.gemini/&lt;/code&gt; directory to locate the session logs.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -F ~/.gemini/","description":"Listing the contents of the ~/.g...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -F ~/.gemini/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Listing the contents of the ~/.gemini directory."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: antigravity/                    google_accounts.json            mcp-oauth-tokens-v2.json        settings.json                   tmp/
commands/                       history/                        oauth_creds.json                settings.json.orig              trustedFolders.json
GEMINI.md                       installation_id                 projects.json                   state.json                      user_id
Process Group PGID: 73530&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Checking the History&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll list the contents of &lt;code&gt;~/.gemini/history/&lt;/code&gt; to find the session log.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -F ~/.gemini/history/ | head -n 20","description":"Listing the...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -F ~/.gemini/history/ | head -n 20"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Listing the contents of the ~/.gemini/history directory."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: cookieparser/
gemini-dog-app/
gemini-guinea-pig/
mlh-core/
Process Group PGID: 73565&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Examining Project Location&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll list the contents of &lt;code&gt;~/.gemini/history/gemini-guinea-pig/&lt;/code&gt; to find the current session's log.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -t ~/.gemini/history/gemini-guinea-pig/*.jsonl 2\u003e/dev/nul...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -t ~/.gemini/history/gemini-guinea-pig/*.jsonl 2&amp;gt;/dev/null | head -1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Searching for the most recent session log in the history directory."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: (empty)
Process Group PGID: 74637&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Beginning File Enumeration&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll list all files in &lt;code&gt;~/.gemini/history/gemini-guinea-pig/&lt;/code&gt; to find the session log.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -R ~/.gemini/history/gemini-guinea-pig/ | head -n 100","descri...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -R ~/.gemini/history/gemini-guinea-pig/ | head -n 100"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Listing all files in the history folder to locate the log file."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: (empty)
Process Group PGID: 75100&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Pinpointing the Missing Path&lt;/strong&gt; / &lt;strong&gt;Re-evaluating the Scope&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll list the contents of &lt;code&gt;~/.gemini/tmp/gemini-guinea-pig/&lt;/code&gt; to find the session log.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -F ~/.gemini/tmp/gemini-guinea-pig/ | head -n 20","description...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -F ~/.gemini/tmp/gemini-guinea-pig/ | head -n 20"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Listing the contents of the ~/.gemini/tmp/gemini-guinea-pig directory."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: chats/
logs.json
Process Group PGID: 75368&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Investigating Log Location&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll read the first 10 lines of &lt;code&gt;logs.json&lt;/code&gt; to see if it's the session log.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"head -n 10 ~/.gemini/tmp/gemini-guinea-pig/logs.json","descriptio...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"head -n 10 ~/.gemini/tmp/gemini-guinea-pig/logs.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Reading the beginning of logs.json to confirm its format."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: [
  {
    "sessionId": "295d2fe2-6276-49c4-9229-db8a61d33f2a",
    "messageId": 0,
    "type": "user",
    "message": "build me a simple web app to let my guinea pig tell me what food it wants",
    "timestamp": "2026-03-04T01:15:24.210Z"
  },
  {
    "sessionId": "295d2fe2-6276-49c4-9229-db8a61d33f2a",
Process Group PGID: 75447&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Investigating the Discrepancy&lt;/strong&gt; / &lt;strong&gt;Unraveling File Paths&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll look for any other directories starting with 's' in &lt;code&gt;~/.gemini/&lt;/code&gt; to find the sessions folder.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -d ~/.gemini/s*","description":"Listing directories in ~/.gemi...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -d ~/.gemini/s*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Listing directories in ~/.gemini that start with 's'."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: /Users/jonmarkgo/.gemini/settings.json          /Users/jonmarkgo/.gemini/settings.json.orig     /Users/jonmarkgo/.gemini/state.json
Process Group PGID: 75492&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Examining Possible Locations&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll list all directories starting with &lt;code&gt;.gemini&lt;/code&gt; in my home directory to find the session logs.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"command":"ls -d ~/.gemini*","description":"Listing all directories and file...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ls -d ~/.gemini*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Listing all directories and files that start with .gemini in the home folder."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: /Users/jonmarkgo/.gemini
Process Group PGID: 75500&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Searching for Session Logs&lt;/strong&gt; / &lt;strong&gt;Identifying Alternative Locations&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll search for all &lt;code&gt;.json&lt;/code&gt; and &lt;code&gt;.jsonl&lt;/code&gt; files in &lt;code&gt;~/.gemini/&lt;/code&gt; to find the correct session log.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
              &lt;div class="agent-session-tool-call"&gt;
                
                  &lt;span class="agent-session-chevron"&gt;▸&lt;/span&gt;
                  &lt;span class="tool-name tool-name-shell"&gt;Shell&lt;/span&gt;
                    &lt;span class="tool-input-preview"&gt;{"description":"Searching recursively for .json and .jsonl files in the ~/.ge...&lt;/span&gt;
                
                &lt;div class="agent-session-tool-detail"&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Input&lt;/div&gt;
                      &lt;pre class="agent-session-pre highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Searching recursively for .json and .jsonl files in the ~/.gemini directory."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"find ~/.gemini/ -name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;*.json&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; -o -name &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;*.jsonl&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; | head -n 20"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                    &lt;div class="tool-section"&gt;
                      &lt;div class="tool-section-label"&gt;Output&lt;/div&gt;
                      &lt;pre class="agent-session-pre"&gt;&lt;code&gt;Output: /Users/jonmarkgo/.gemini/google_accounts.json
/Users/jonmarkgo/.gemini/state.json
/Users/jonmarkgo/.gemini/oauth_creds.json
/Users/jonmarkgo/.gemini/settings.json
/Users/jonmarkgo/.gemini/projects.json
/Users/jonmarkgo/.gemini/trustedFolders.json
/Users/jonmarkgo/.gemini/antigravity/mcp_config.json
/Users/jonmarkgo/.gemini/mcp-oauth-tokens-v2.json
/Users/jonmarkgo/.gemini/tmp/08d27515e40a8c790d53798895cf6650d5843987a3978f7ef5be01987a09b3e1/logs.json
/Users/jonmarkgo/.gemini/tmp/a9c39dae5288a24cdef1cf1d8c6bc99a5cf8b751707de794545fc5f5986be7b2/logs.json
/Users/jonmarkgo/.gemini/tmp/dd9dc36095d552fc5d0c79d94e889e2c50c1b76a76ea3f41ac6b22dd6076ce19/logs.json
/Users/jonmarkgo/.gemini/tmp/dd9dc36095d552fc5d0c79d94e889e2c50c1b76a76ea3f41ac6b22dd6076ce19/chats/session-2025-12-04T21-23-e153598e.json
/Users/jonmarkgo/.gemini/tmp/gemini-guinea-pig/logs.json
/Users/jonmarkgo/.gemini/tmp/gemini-guinea-pig/chats/session-2026-03-04T01-15-295d2fe2.json
/Users/jonmarkgo/.gemini/tmp/gemini-guinea-pig/chats/session-2026-03-04T12-42-295d2fe2.json
/Users/jonmarkgo/.gemini/tmp/79261791c475d806f2ff6cdf73b50843055032e35b2854d7e91e3a92762f2e96/logs.json
/Users/jonmarkgo/.gemini/tmp/79261791c475d806f2ff6cdf73b50843055032e35b2854d7e91e3a92762f2e96/chats/session-2025-12-06T18-02-b9fe7181.json
/Users/jonmarkgo/.gemini/tmp/79261791c475d806f2ff6cdf73b50843055032e35b2854d7e91e3a92762f2e96/chats/session-2025-11-18T16-06-1f38a3eb.json
/Users/jonmarkgo/.gemini/tmp/79261791c475d806f2ff6cdf73b50843055032e35b2854d7e91e3a92762f2e96/chats/session-2025-11-18T18-32-22205976.json
/Users/jonmarkgo/.gemini/tmp/79261791c475d806f2ff6cdf73b50843055032e35b2854d7e91e3a92762f2e96/chats/session-2025-11-18T16-52-0863224c.json
Process Group PGID: 76229&lt;/code&gt;&lt;/pre&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="agent-session-message agent-session-assistant"&gt;
        &lt;div class="agent-session-role-badge agent-session-role-assistant"&gt;
          Agent
        &lt;/div&gt;
        &lt;div class="agent-session-content"&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;&lt;strong&gt;Analyzing File Locations&lt;/strong&gt; / &lt;strong&gt;Pinpointing Key Files&lt;/strong&gt;&lt;/p&gt;

                &lt;/div&gt;
                &lt;div class="agent-session-text"&gt;
                  &lt;p&gt;I'll select the latest session log from &lt;code&gt;~/.gemini/tmp/gemini-guinea-pig/chats/&lt;/code&gt; and upload it to DEV.to using the discovered session file and your API key.&lt;/p&gt;

                &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="agent-session-footer"&gt;
    &lt;span class="agent-session-meta"&gt;
        35 of 35 messages
    &lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Let's check out how the upload, curation, and embedding workflow works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upload a Session
&lt;/h2&gt;

&lt;p&gt;First, you need to &lt;strong&gt;upload&lt;/strong&gt; a session. You can drag and drop your session transcripts via your browser on the &lt;a href="https://dev.to/agent_sessions/new"&gt;Agent Sessions page&lt;/a&gt;. We will soon be launching a CLI and Agent skill to give you a slash command for uploads as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Curate a Session
&lt;/h2&gt;

&lt;p&gt;Once you upload the session, you can &lt;strong&gt;curate&lt;/strong&gt; it. You can select which pieces of a session transcript are included in your whole-session embed. You can mass enable/disable different pieces of your transcript, as shown here.&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%2Fa24jc9zicq3q73bqyylo.gif%3Fbfg" 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%2Fa24jc9zicq3q73bqyylo.gif%3Fbfg" alt="Curate an Agent Session on DEV" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Slice Up a Session
&lt;/h2&gt;

&lt;p&gt;If you don't want to embed your whole session (even in curated form) you can instead use the &lt;strong&gt;Slice&lt;/strong&gt; tool to create a sub-transcript that can include any and all parts of a session. You can have multiple Slices per session, if you want to break up your prompt and embed it in different places in your post.&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%2Futrbuxve27sbk29nw6pl.gif%3Fbfg" 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%2Futrbuxve27sbk29nw6pl.gif%3Fbfg" alt="Create Agent Session Slices on DEV" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Share a Session
&lt;/h2&gt;

&lt;p&gt;Lastly, to make this utility more generally useful beyond DEV, you can also share curated Agent Sessions publicly by using the &lt;strong&gt;Make Public&lt;/strong&gt; button. See my session &lt;a href="https://dev.to/agent_sessions/wheeky-menu-piggie-food-picker-popwfq"&gt;here&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%2Fhw9rtce4kbec9i042h81.gif%3Fbfg" 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%2Fhw9rtce4kbec9i042h81.gif%3Fbfg" alt="Make Agent Sessions Public on DEV" width="570" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; Please be very cognizant of what potentially sensitive data/keys might be in your transcripts. We have a redaction layer built in to the parser, but it is not going to catch every edge case. Do not upload sessions or data that you do not own, or that may open you up to security vulnerabilities.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We look forward to seeing what you build and share with this new feature. Happy hacking!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>forem</category>
      <category>devto</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Upgraded embed experience and new embed types in DEV posts</title>
      <dc:creator>Jon Gottfried</dc:creator>
      <pubDate>Fri, 27 Feb 2026 14:29:22 +0000</pubDate>
      <link>https://dev.to/devteam/upgraded-embed-experience-and-new-embed-types-in-dev-posts-1kho</link>
      <guid>https://dev.to/devteam/upgraded-embed-experience-and-new-embed-types-in-dev-posts-1kho</guid>
      <description>&lt;p&gt;When you paste a URL into your DEV post, if it is embeddable, you now get a handy little tooltip to generate your liquid tag for you using a new universal embed tag:&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%2F6eli5pkt820rsampm1as.gif" 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%2F6eli5pkt820rsampm1as.gif" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also - You can now embed new types of projects directly in your DEV posts. We now support Lovable, Bolt.new, Warp blocks, HuggingFace Spaces, and the HuggingFace Dataset Viewer. These are in addition to our widely used &lt;a href="https://dev.to/devteam/you-can-now-embed-cloud-run-deployments-directly-in-your-dev-posts-1jk8"&gt;Cloud Run embed feature&lt;/a&gt; that launched recently!&lt;/p&gt;

&lt;p&gt;Here's a few example projects to show you how it works:&lt;br&gt;
&lt;strong&gt;Lovable:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;{% embed https://iconstack.lovable.app/ %}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__lovable"&gt;
  &lt;iframe src="https://iconstack.lovable.app" title="Lovable App" width="100%" height="600"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;HuggingFace Spaces:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;{% embed https://huggingface.co/spaces/KittenML/KittenTTS-Demo %}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__huggingface"&gt;
  &lt;iframe src="https://KittenML-KittenTTS-Demo.hf.space" title="Hugging Face Space" width="100%" height="600"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;HuggingFace Datasets:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;{% embed https://huggingface.co/datasets/openfoodfacts/product-database %}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__huggingface"&gt;
  &lt;iframe src="https://huggingface.co/datasets/openfoodfacts/product-database/embed/viewer" title="Hugging Face Space" width="100%" height="600"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Warp Block Sharing:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;{% embed https://app.warp.dev/block/JjdoVfeKebVSw8wiykuDag %}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__warp"&gt;
  &lt;iframe src="https://app.warp.dev/block/embed/JjdoVfeKebVSw8wiykuDag" title="Warp Terminal Block" width="100%" height="400"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Bolt.new:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;{% embed https://ai-dashboard-with-da-z516.bolt.host/ %}&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__bolt"&gt;
  &lt;iframe src="https://ai-dashboard-with-da-z516.bolt.host" title="Bolt App" width="100%" height="600"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;We hope you enjoy - and if you have any ideas or feature requests for more embeds feel free to post them in the comments.&lt;/p&gt;

</description>
      <category>news</category>
      <category>devto</category>
      <category>forem</category>
    </item>
    <item>
      <title>The Future of Software Has a Lot More Builders. They’re Going to Need a Home.</title>
      <dc:creator>Jon Gottfried</dc:creator>
      <pubDate>Wed, 18 Feb 2026 14:00:30 +0000</pubDate>
      <link>https://dev.to/mlh/the-future-of-software-has-a-lot-more-builders-theyre-going-to-need-a-home-1k65</link>
      <guid>https://dev.to/mlh/the-future-of-software-has-a-lot-more-builders-theyre-going-to-need-a-home-1k65</guid>
      <description>&lt;p&gt;I have some big news to share today: &lt;strong&gt;Major League Hacking has acquired DEV (dev.to)&lt;/strong&gt;, the developer community platform where millions of developers share technical knowledge, learn from each other, and grow together.&lt;/p&gt;

&lt;p&gt;This is one of the biggest moves in MLH's 12-year history, and it's been a long time coming.&lt;/p&gt;

&lt;p&gt;When &lt;a class="mentioned-user" href="https://dev.to/ben"&gt;@ben&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/jess"&gt;@jess&lt;/a&gt;, and &lt;a class="mentioned-user" href="https://dev.to/peter"&gt;@peter&lt;/a&gt; started DEV almost a decade ago, they wanted to build something the internet didn't have enough of: a developer community built on generosity instead of gatekeeping. A place where people didn’t just ask questions, but actually helped each other. Over the years, DEV grew into a community of more than 3 million developers learning in public, sharing expert advice, and supporting one another in their journeys. It's become one of the most trusted spaces in tech, and anyone who's spent time on the platform knows why. The culture Ben, Jess, and Peter built is special.&lt;/p&gt;

&lt;p&gt;At MLH, we've been building something complementary. Our developer programs (like the Hackathon League, the MLH Fellowship, and much more) are where developers learn by doing: picking up a tool, creating something real with it, breaking it, trying again. Between our in-person events and programs, MLH has served more than 1.5 million developers across nearly 100 countries.&lt;/p&gt;

&lt;p&gt;If DEV is the library, MLH is the lab. One is where knowledge gets shared, organized, and preserved. The other is where you get your hands dirty and prove you can actually build. Together, MLH and DEV will reach approximately 5 million developers worldwide. These two community-first platforms have been orbiting each other for years, and we're thrilled to finally bring them together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Now Is The Right Time To Combine MLH &amp;amp; DEV’s Powers
&lt;/h2&gt;

&lt;p&gt;If you've spent years honing your craft as a developer, the value of your skills has grown exponentially over the last year. The judgment, taste, and architectural thinking you've built over a career are exactly the skills that matter most when AI can handle the boilerplate. The ceiling on what you can build has never been higher.&lt;/p&gt;

&lt;p&gt;At the same time, the floor is rising. People who never would have written a line of code (or called themself a developer) are building real software with AI. More software creators, building more things, tackling more problems. The craft of software development isn't shrinking. It's expanding. The number of people who can build software is about to grow by an order of magnitude.&lt;/p&gt;

&lt;p&gt;But when everyone can build, the skills that matter change. AI generates the bricks, but you still have to build the house. Taste, judgment, knowing what to build, which tools to trust, how to evaluate whether the output is actually good. Those skills don't come from a tutorial. They develop by building real things alongside other people.&lt;/p&gt;

&lt;p&gt;And traditional institutions can't keep up. By the time a curriculum gets approved, the technology is already six months out of date. The old developer infrastructure was built for a world where people needed answers to technical questions. AI commoditized that. But the need for a developer community didn't disappear. It shifted. People don't need a database of answers anymore. They need somewhere to develop judgment and learn and build alongside others in a trusted space.&lt;/p&gt;

&lt;p&gt;Together, MLH and DEV are building the core community infrastructure of the next era of technology.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Changing (And What's Not) For Both Communities
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;DEV will continue to be the community its members know and trust.&lt;/strong&gt; &lt;br&gt;
The culture that Ben, Jess, and Peter built is exactly why we wanted to do this, and we're committed to protecting it. We're here to invest in DEV and help it grow, not to change what makes it special.&lt;/p&gt;

&lt;p&gt;Forem, the open source software that powers DEV, will also continue to evolve. This acquisition actually helps clarify the relationship between the organization and the software. We're working toward a structure that supports Forem's independence so it can serve the broader open source community on its own terms. More on that soon.&lt;/p&gt;

&lt;p&gt;What IS changing is that MLH and DEV can now do things together that neither could do alone. The lab and the library, connected. You experiment with a new platform or tool at an MLH hackathon. You write about what you learned on DEV. That knowledge becomes searchable, permanent, useful to the next person.&lt;/p&gt;

&lt;p&gt;Whether you're shipping your first project or you're a senior engineer picking up AI skills for the first time, you're welcome here. In the AI era, everyone is a beginner again at some point. MLH and DEV, together, are the place where that's not just okay, but encouraged.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Forward To A Future of Software Creators
&lt;/h2&gt;

&lt;p&gt;The world is about to have a lot more builders. They're going to need a place to learn, to experiment, to develop taste and judgment, and to find their aspirational figures and their collaborators. That's what MLH and DEV are building together.&lt;/p&gt;

&lt;p&gt;Thank you and congratulations to Ben, Jess, Peter, and everyone who built DEV into the community it is today. And thank you to our MLH community for continuing to show up, build things, and support each other. You're the reason we get to do this work.&lt;/p&gt;

&lt;p&gt;Happy Hacking,&lt;br&gt;
Jon, Swift, and the entire MLH+DEV team&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. If you want to learn more about the acquisition or the future of MLH and DEV, my co-founder and our CEO Swift will be hosting an Ask Me Anything (AMA) with me (Jon) and the DEV founders (Peter, Ben, and Jess) on MLH’s Twitch channel on February 19 at 11:30am ET. We'll be answering questions from the community live. We hope to see you there!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>news</category>
      <category>ai</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
