<?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: Theo Slater</title>
    <description>The latest articles on DEV Community by Theo Slater (@theoslater).</description>
    <link>https://dev.to/theoslater</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%2F3873857%2Fab0e0846-ac43-45ff-969e-bf672db0db09.jpeg</url>
      <title>DEV Community: Theo Slater</title>
      <link>https://dev.to/theoslater</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/theoslater"/>
    <language>en</language>
    <item>
      <title>Building Openbench, a local-first LLM workspace</title>
      <dc:creator>Theo Slater</dc:creator>
      <pubDate>Sat, 11 Apr 2026 17:37:38 +0000</pubDate>
      <link>https://dev.to/theoslater/uilding-openbench-a-local-first-llm-workspace-24fm</link>
      <guid>https://dev.to/theoslater/uilding-openbench-a-local-first-llm-workspace-24fm</guid>
      <description>&lt;p&gt;I've been using local LLMs for a while now, but the tools still feel rough. Ollama makes running models easy. However, when you want to do more than just a basic prompt, like comparing two models, refining a system prompt, or checking what was actually sent, you end up piecing things together.&lt;/p&gt;

&lt;p&gt;So, I started building Openbench.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;This is a desktop app for experimenting with local models. It’s not just another chat wrapper; it’s more of a workspace. The goal is to focus on prompt iteration, model comparison, and being able to see what’s happening under the hood.&lt;/p&gt;

&lt;p&gt;Here are the main features I’m working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Side-by-side model comparison&lt;/li&gt;
&lt;li&gt;A prompt playground with system prompt editing, temperature controls, and raw request/response inspection&lt;/li&gt;
&lt;li&gt;Temporary "incognito" sessions that don’t get saved&lt;/li&gt;
&lt;li&gt;Markdown, code highlighting, and LaTeX rendering in outputs&lt;/li&gt;
&lt;li&gt;Everything stored locally in SQLite, ensuring that nothing leaves your machine unless you choose to share it&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;The frontend uses React 19, TypeScript, and Vite, with Zustand for state management and Tailwind plus MUI for user interface. The backend is built with Rust through Tauri 2, SQLx, and ollama-rs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it's at
&lt;/h2&gt;

&lt;p&gt;It’s still early. The core architecture is starting to take shape, including model switching, chat persistence, and basic Ollama integration. A lot of the UI structure is set up, but there’s still much to create.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I’m posting this
&lt;/h2&gt;

&lt;p&gt;Mainly for accountability. I often tend to overbuild, and writing this down forces me to focus on what really matters. If you’re working with local LLMs and have thoughts on what the tools are missing, I would genuinely like to hear them.&lt;/p&gt;

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

</description>
      <category>ai</category>
      <category>programming</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Theo Slater</dc:creator>
      <pubDate>Sat, 11 Apr 2026 17:26:05 +0000</pubDate>
      <link>https://dev.to/theoslater/-3d73</link>
      <guid>https://dev.to/theoslater/-3d73</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/peixotomdb/i-got-tired-of-using-10-different-dev-tools-so-i-built-my-own-2gl4" class="crayons-story__hidden-navigation-link"&gt;I got tired of using 10 different dev tools, so I built my own&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/peixotomdb" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F1019001%2Fac7ddfda-b0b5-4608-9f04-9a4155383488.jpeg" alt="peixotomdb profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/peixotomdb" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Peixoto
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Peixoto
                
              
              &lt;div id="story-author-preview-content-3487106" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/peixotomdb" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F1019001%2Fac7ddfda-b0b5-4608-9f04-9a4155383488.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Peixoto&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/peixotomdb/i-got-tired-of-using-10-different-dev-tools-so-i-built-my-own-2gl4" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 11&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/peixotomdb/i-got-tired-of-using-10-different-dev-tools-so-i-built-my-own-2gl4" id="article-link-3487106"&gt;
          I got tired of using 10 different dev tools, so I built my own
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/peixotomdb/i-got-tired-of-using-10-different-dev-tools-so-i-built-my-own-2gl4" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/peixotomdb/i-got-tired-of-using-10-different-dev-tools-so-i-built-my-own-2gl4#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              1&lt;span class="hidden s:inline"&gt; comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

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

&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
