<?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: Ming</title>
    <description>The latest articles on DEV Community by Ming (@dooku820721).</description>
    <link>https://dev.to/dooku820721</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%2F3879694%2F23cb2d25-157c-4ec9-a880-dad78719adb1.png</url>
      <title>DEV Community: Ming</title>
      <link>https://dev.to/dooku820721</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dooku820721"/>
    <language>en</language>
    <item>
      <title>Best engineers are artists, so I built an git-like art tool for the terminal</title>
      <dc:creator>Ming</dc:creator>
      <pubDate>Wed, 15 Apr 2026 05:06:46 +0000</pubDate>
      <link>https://dev.to/dooku820721/best-engineers-are-artists-so-i-built-an-git-like-art-tool-for-the-terminal-12bo</link>
      <guid>https://dev.to/dooku820721/best-engineers-are-artists-so-i-built-an-git-like-art-tool-for-the-terminal-12bo</guid>
      <description>&lt;h2&gt;
  
  
  The spark
&lt;/h2&gt;

&lt;p&gt;I was driving one day listening to Naval Ravikant, and he said something that stuck with me: his best engineers are all artists. But not everyone of us actually create art!&lt;/p&gt;

&lt;p&gt;That hit home. We spend all day building creative things in code, but most of us never touch visual art. Not because we lack interest — because the tools aren't built for how we work. AI image generation is powerful, and most of us already have the API keys. But the interfaces are all web apps and notebooks. Nothing that fits the way engineers actually think and iterate.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;muse&lt;/strong&gt; — a CLI that brings AI art creation into the terminal, where we already live.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow
&lt;/h2&gt;

&lt;p&gt;The design mirrors how we already work: iterate fast, roll back when something breaks, get feedback, try again.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Start with a prompt&lt;/span&gt;
muse new &lt;span class="s2"&gt;"a cozy cabin in a snowy forest, watercolor style"&lt;/span&gt;

&lt;span class="c"&gt;# Iterate with natural language&lt;/span&gt;
muse tweak &lt;span class="s2"&gt;"add warm golden light glowing from the windows"&lt;/span&gt;

&lt;span class="c"&gt;# Get AI critique&lt;/span&gt;
muse review

&lt;span class="c"&gt;# Don't like it? Roll back&lt;/span&gt;
muse back
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every step is saved. History is immutable — &lt;code&gt;muse back&lt;/code&gt; moves a pointer, never deletes. You can branch from any point with &lt;code&gt;muse tweak --from 3&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%2Fvhs.charm.sh%2Fvhs-5ka5BUhFHfWFSmGZPoMifD.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%2Fvhs.charm.sh%2Fvhs-5ka5BUhFHfWFSmGZPoMifD.gif" alt="Made with VHS" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The roast persona
&lt;/h2&gt;

&lt;p&gt;Muse ships with four review personas. The fun one is &lt;code&gt;roast&lt;/code&gt; — a sarcastic critic that evaluates your art like a code review:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;muse review &lt;span class="nt"&gt;--persona&lt;/span&gt; roast
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;"This composition has more spaghetti than your microservices. The lighting says 'I set opacity to 0.3 and called it a day.' Rating: Request Changes. Try &lt;code&gt;muse tweak 'actually learn what contrast means'&lt;/code&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There's also &lt;code&gt;collaborative&lt;/code&gt; (default, friendly), &lt;code&gt;critic&lt;/code&gt; (formal art analysis), and &lt;code&gt;technical&lt;/code&gt; (factual, for debugging prompt-vs-output gaps). Drop any markdown file in &lt;code&gt;~/.muse/personas/&lt;/code&gt; to make your own.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gallery
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;muse gallery&lt;/code&gt; starts a local server with a dark-themed web UI. Grid view shows all your sessions as cards. Click one to see the full iteration timeline with prompts, metadata, and reviews.&lt;/p&gt;

&lt;p&gt;No framework — just vanilla JS, served by Python's &lt;code&gt;http.server&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Providers
&lt;/h2&gt;

&lt;p&gt;Bring your own API keys:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI&lt;/strong&gt; — DALL-E 3 for generation, GPT-4o for vision/critique&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini&lt;/strong&gt; — Gemini 2.0 Flash for both&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Muse auto-detects from environment variables. Run &lt;code&gt;muse providers&lt;/code&gt; to see what's available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/charismaticchiu/muse.git
&lt;span class="nb"&gt;cd &lt;/span&gt;muse
uv &lt;span class="nb"&gt;sync
export &lt;/span&gt;&lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-..."&lt;/span&gt;
uv run muse new &lt;span class="s2"&gt;"your wildest idea here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub: &lt;a href="https://github.com/charismaticchiu/muse" rel="noopener noreferrer"&gt;charismaticchiu/muse&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Would love to hear what personas or providers you'd want to see next.&lt;/p&gt;

</description>
      <category>python</category>
      <category>cli</category>
      <category>ai</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
