<?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: marwane</title>
    <description>The latest articles on DEV Community by marwane (@marwane_manifi_c4dacfeb34).</description>
    <link>https://dev.to/marwane_manifi_c4dacfeb34</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3823593%2F51298817-c07a-4441-b618-7413823b14bb.png</url>
      <title>DEV Community: marwane</title>
      <link>https://dev.to/marwane_manifi_c4dacfeb34</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marwane_manifi_c4dacfeb34"/>
    <language>en</language>
    <item>
      <title>Upscale an Image Without Losing Quality: What Works, What Doesn't</title>
      <dc:creator>marwane</dc:creator>
      <pubDate>Tue, 03 Nov 2026 01:55:40 +0000</pubDate>
      <link>https://dev.to/marwane_manifi_c4dacfeb34/upscale-an-image-without-losing-quality-what-works-what-doesnt-2p57</link>
      <guid>https://dev.to/marwane_manifi_c4dacfeb34/upscale-an-image-without-losing-quality-what-works-what-doesnt-2p57</guid>
      <description>&lt;p&gt;Everyone has one photo like this. The only picture of the dog as a puppy, the shot a friend took on the beach, the product photo a supplier sent at the size of a postage stamp. It looks fine on a phone. Then you try to print it, put it in a listing or set it as a wallpaper, and it falls apart into soft edges and little squares.&lt;/p&gt;

&lt;p&gt;The honest answer to whether you can upscale an image without losing quality is yes, when the photo is small but sharp. When it is blurry to begin with, upscaling mostly gives you a bigger blurry photo. Most of what follows is about telling the two apart before you spend the time, and about how big you need to go for a print, a wallpaper or a product page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a resized photo looks worse
&lt;/h2&gt;

&lt;p&gt;Most people never type the word upscale. They ask how to increase picture resolution, how to make an image higher resolution, or how to make a photo better quality. They usually ask because someone else set the bar: the print shop, a marketplace upload form, a client, the school website that bounced the headshot.&lt;/p&gt;

&lt;p&gt;A normal resize, the kind every editor has done for thirty years, makes a photo bigger by spreading the pixels it already has over more space. Nothing new is added, so edges go soft and small areas of detail turn to mush. The resolution went up on paper and the picture got worse.&lt;/p&gt;

&lt;p&gt;An upscaler guesses. It reads the pattern of pixels and predicts what the finer detail probably was: the edge of a petal, the strands in a curl, the grain of leather. When the guess is good, the result looks like the same photo taken with a better camera. When the guess is bad, you get hair that looks painted, skin like plastic, or a face that is almost, but not quite, the person. Increasing resolution and upscaling are the same job, then. The only question that matters is how good the guess will be, and that depends almost entirely on the photo you start with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which photos upscale well, and which don't
&lt;/h2&gt;

&lt;p&gt;A small but sharp photo is the best case. A clean 800-pixel crop from a phone has real information in it, and a good upscaler builds on it. Most phone photos from the last few years are this: the camera did its job, and you either cropped too far in or sent it through an app that shrank it. This is where the "without losing quality" promise holds.&lt;/p&gt;

&lt;p&gt;A blurry, shaken or out-of-focus photo is the worst case, and it is the one most people arrive with. An upscaler cannot tell blur from soft detail, so it hands you a larger blurry photo and sometimes invents texture on top. Fix the blur first, with an enhancer or a restoration tool, and upscale after.&lt;/p&gt;

&lt;p&gt;Heavily compressed images, the ones that came through a chat app and turned into blocky squares, sit in between. They are usable, but look closely at faces and text afterwards, because blocks can be read as detail and rebuilt as something that was never there.&lt;/p&gt;

&lt;p&gt;Scans of old prints are their own case. The paper grain, the dust and the fade get enlarged along with the picture, so a straight upscale often looks worse than the print did. Restore first and upscale second, and scan at the highest setting the scanner offers so the tool has something to work with.&lt;/p&gt;

&lt;p&gt;Text, logos and small faces in a crowd are the riskiest. Letters get redrawn, and a face that takes up fifty pixels can come back as a different person. If you are upscaling a group photo or a screenshot, that is where to look first. Plenty of people go looking for an upscaler that won't change the face, or for one that does not use AI at all, and the worry is fair: the better the tool, the more it invents. Whatever you use, compare the result against the original at full size.&lt;/p&gt;

&lt;p&gt;AI-generated images are the easy case. They are clean, they carry no camera noise, and they upscale beautifully, which is why so many people enlarge their own renders for print.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Upscaler or enhancer?&lt;/strong&gt; If the photo looks fine and is only too small, you want an upscaler. If it looks bad at its current size, blurry, grainy or faded, you want an enhancer first, and an upscaler after that only if you also need it bigger. Running them in the wrong order is the most common way to end up with a big, sharp version of the wrong thing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Five photos, before and after
&lt;/h2&gt;

&lt;p&gt;These are the sample pairs from our own upscaler page, cropped to the part where the difference shows and enlarged so it is visible on a phone. They are demo images rather than someone's uploads, so read them as what the tool does on a clean source.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F43bqyo8hrt6yov8p7by4.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F43bqyo8hrt6yov8p7by4.webp" alt="Crop of a street portrait at a flower stall, before and after upscaling: the curls become separate strands and the eyes come back" width="799" height="222"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A street portrait. The curls go from a smear of blocks to separate strands and the eyes come back, and she is still the same person.&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/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1xs7jfe7dx5cl74u0334.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1xs7jfe7dx5cl74u0334.webp" alt="Crop of a golden retriever running on grass, before and after upscaling: fur and whiskers become distinct" width="799" height="222"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A dog mid-run, usually too small because it was cropped out of a wider shot. Fur, whiskers and the wet nose come back, and the pose is untouched.&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/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcv96bwef9ww6m9orc727.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcv96bwef9ww6m9orc727.webp" alt="Crop of a burgundy leather handbag with a gold clasp, before and after upscaling: the leather grain and clasp edges become crisp" width="799" height="222"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;A product photo at supplier size. The leather grain and the clasp edges are what a shopper zooms in on, and the first thing a small file loses.&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/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0586hqg42owy9iy71swf.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0586hqg42owy9iy71swf.webp" alt="Crop of two people hugging on a beach at sunset, before and after upscaling: stubble, hair and fabric weave appear while the faces stay the same" width="799" height="222"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Two faces close together, the test for the "don't change the face" worry. Stubble, hair and the weave of the jacket come back, and both people still look like themselves.&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/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl64wi6hn8vor03wq91he.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl64wi6hn8vor03wq91he.webp" alt="Crop of a mountain peak under clouds, before and after upscaling: the pixel blocks are replaced by a clean ridgeline, snow and clouds" width="799" height="222"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The worst starting point of the five, a file so small the sky had turned into squares. The ridgeline, the snow and the clouds come back cleanly, which is about the limit of what to expect from a source like this.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How big do you really need to go?
&lt;/h2&gt;

&lt;p&gt;A lot of the frustration with upscaling comes from chasing a number without knowing where it came from. 4K is a screen size, 3,840 pixels across, so a photo around 1,000 pixels wide gets there with a 4x upscale. A print shop talks in dots per inch instead, usually 300. That is why an A4 or letter print wants about 3,500 pixels on the long side, and a 24 by 36 inch poster wants 5,000 or more unless it hangs where nobody gets close. A wallpaper only needs to match the screen it is going on, and taking a 1080p image to 1440p is a modest step that almost any sharp source can take. A product page is similar: most marketplaces zoom to about twice the displayed size, so a listing wants two to three thousand pixels and gains nothing beyond that.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftsv4qabjq2ygwi56zlpn.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftsv4qabjq2ygwi56zlpn.png" alt="How many pixels each use needs" width="800" height="280"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Rough targets for the long side of the image. A print shop will give you its own numbers, and a poster seen from across a room can get away with less.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Expect the file to grow, whatever the target: a 4x upscale has sixteen times the pixels, so a 300 KB photo can turn into several megabytes. The dimensions changing is the point; the aspect ratio should not change at all. 8K exists, and a few tools offer it, but few screens can show it, and a source that was small to begin with has no business going that far. Stop at the size the use needs. If you have a whole catalogue of product photos to do, run one first, check it at full size, and only then put the rest through at the same setting.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get a better upscale
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Start from the best original you have
&lt;/h3&gt;

&lt;p&gt;Go back to the source: the photo in the camera roll, the file the designer sent, the scan at the highest setting the scanner offers. Never upscale a copy that came through a chat app or was already enlarged once. Every step in between threw away pixels the upscaler could have used.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Fix blur and noise before you enlarge
&lt;/h3&gt;

&lt;p&gt;If the photo is soft, grainy or faded at its current size, run an enhancer or a restoration tool first. Upscaling cannot tell blur from detail, and a blurry photo made four times bigger is a bigger blurry photo. For a photo that is blurry or old rather than small, the &lt;a href="https://aigentools.io/image-enhancer" rel="noopener noreferrer"&gt;Image Enhancer&lt;/a&gt; is the right first stop; come back to the upscaler afterwards.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Crop first, then upscale
&lt;/h3&gt;

&lt;p&gt;Decide what the final picture shows and crop to it before you enlarge. Most tools cap the output size, and you want that budget spent on the face or the product, not on sky you were going to trim anyway.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Pick the size the use needs, not the biggest on offer
&lt;/h3&gt;

&lt;p&gt;Match the target from the chart above: 2x is usually enough for a phone wallpaper or a listing, 4x for a print or a 4K screen. Going past what the use needs adds file size and, from a small source, invented detail.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Run it once, from the original
&lt;/h3&gt;

&lt;p&gt;The five pairs above came from the AIGenTools &lt;a href="https://aigentools.io/image-upscaler" rel="noopener noreferrer"&gt;Image Upscaler&lt;/a&gt;: drop in a JPG, PNG or WebP, pick 2x or 4x, and download the larger version in the browser, with nothing to install. Whichever tool you use, run it once. Running 2x on top of 2x stacks one guess on another, and a single 4x from the original comes out cleaner. If the first result is wrong, go back to the original and change the setting rather than upscaling the result again.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Check it at full size before you use it
&lt;/h3&gt;

&lt;p&gt;Open the file you downloaded and confirm its pixel size, because some tools hand back the same dimensions with a sharpening filter on top. Then look at the places where upscalers go wrong: the edge of hair against the background, the skin on a cheek, any straight line or lettering, and fine repeating patterns like a knit or a brick wall, which can turn into ripples. If those hold up, the rest of the photo will too.&lt;/p&gt;

&lt;p&gt;Try it here: &lt;a href="https://aigentools.io/image-upscaler" rel="noopener noreferrer"&gt;Image Upscaler&lt;/a&gt;. Upload a small photo, pick 2x or 4x, and download the larger version.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>photography</category>
      <category>tutorial</category>
      <category>design</category>
    </item>
    <item>
      <title>“Follow human intent” sounds obvious—until that intent conflicts with safety, honesty, or someone else’s autonomy.

A model spec isn’t really tested by its list of values. It’s tested by what the model does when those values collide.</title>
      <dc:creator>marwane</dc:creator>
      <pubDate>Sat, 31 Oct 2026 12:12:02 +0000</pubDate>
      <link>https://dev.to/marwane_manifi_c4dacfeb34/follow-human-intent-sounds-obvious-until-that-intent-conflicts-with-safety-honesty-or-someone-2li6</link>
      <guid>https://dev.to/marwane_manifi_c4dacfeb34/follow-human-intent-sounds-obvious-until-that-intent-conflicts-with-safety-honesty-or-someone-2li6</guid>
      <description></description>
    </item>
    <item>
      <title>Google just launched Gemini 3.5 Flash Cyber. The bigger signal isn’t another model release—it’s specialization. AI is moving beyond general chatbots toward systems built for high-value, high-risk work.</title>
      <dc:creator>marwane</dc:creator>
      <pubDate>Thu, 23 Jul 2026 01:18:49 +0000</pubDate>
      <link>https://dev.to/marwane_manifi_c4dacfeb34/google-just-launched-gemini-35-flash-cyber-the-bigger-signal-isnt-another-model-release-its-46lk</link>
      <guid>https://dev.to/marwane_manifi_c4dacfeb34/google-just-launched-gemini-35-flash-cyber-the-bigger-signal-isnt-another-model-release-its-46lk</guid>
      <description></description>
    </item>
    <item>
      <title>A simple random-number test can expose whether an AI API is secretly swapping models. Each model develops its own numerical “fingerprint”—turning randomness into a surprisingly effective lie detector for AI providers.</title>
      <dc:creator>marwane</dc:creator>
      <pubDate>Tue, 21 Jul 2026 01:51:16 +0000</pubDate>
      <link>https://dev.to/marwane_manifi_c4dacfeb34/a-simple-random-number-test-can-expose-whether-an-ai-api-is-secretly-swapping-models-each-model-368l</link>
      <guid>https://dev.to/marwane_manifi_c4dacfeb34/a-simple-random-number-test-can-expose-whether-an-ai-api-is-secretly-swapping-models-each-model-368l</guid>
      <description></description>
      <category>ai</category>
      <category>api</category>
      <category>security</category>
      <category>testing</category>
    </item>
    <item>
      <title>I've been waiting for a model that understands sound. Seed Audio is the first time TTS felt over</title>
      <dc:creator>marwane</dc:creator>
      <pubDate>Wed, 01 Jul 2026 04:47:50 +0000</pubDate>
      <link>https://dev.to/marwane_manifi_c4dacfeb34/ive-been-waiting-for-a-model-that-understands-sound-seed-audio-is-the-first-time-tts-felt-over-3i98</link>
      <guid>https://dev.to/marwane_manifi_c4dacfeb34/ive-been-waiting-for-a-model-that-understands-sound-seed-audio-is-the-first-time-tts-felt-over-3i98</guid>
      <description>&lt;p&gt;I make AI videos, and for the longest time the sound was the part I quietly dreaded.&lt;/p&gt;

&lt;p&gt;Not because a clip has no audio. Because every voice tool I tried just didn't &lt;em&gt;understand&lt;/em&gt; the scene. They could read a script fine, but the second a character needed to actually feel something, the voice went flat and robotic. The ambience never matched the shot. I'd still end up hunting for effects and mixing the whole thing by hand to make thirty seconds feel like one real moment. The visuals kept&lt;br&gt;
getting better every month. The audio stayed stuck at "good enough."&lt;/p&gt;

&lt;p&gt;Then last week I tried Seed Audio, and it kind of stopped me. It's the first one that feels like it actually understands what it's making.&lt;/p&gt;

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

&lt;p&gt;Seed Audio is ByteDance's new audio model. You tell it what you want to hear, a line, a whole scene, a mood, and it generates the entire thing together. Voices with real emotion, several characters talking to each other, the room they're in, the sound effects around them, all in sync. Not a bare voice track you have to score and patch afterward. The actual moment.&lt;/p&gt;

&lt;p&gt;If you remember the point where image models suddenly &lt;em&gt;understood&lt;/em&gt; pictures instead of guessing at them, this is that same jump, for sound.&lt;/p&gt;

&lt;h2&gt;
  
  
  It does far more than one thing
&lt;/h2&gt;

&lt;p&gt;That's the part that's hard to get across in text. The same model will do a calm narration, a two-person argument, a meditation that keeps getting slower and softer, a stand-up bit where it adds its own room laughter, a tense ghost story, cinematic scenes, weather, crowds, whole environments. Different feel every time,&lt;br&gt;
and each one sounds like it belongs to the scene instead of being pasted on top of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  voice reference
&lt;/h2&gt;

&lt;p&gt;You can hand it a short clip of a voice and it locks onto that voice, the tone, the pacing, the little habits in how someone talks. Then you reuse that exact voice anywhere.&lt;/p&gt;

&lt;p&gt;For video this is the thing I've wanted forever: one consistent character voice across a whole series, from a single reference, without re-recording anything. I cloned a voice once and dropped it into completely different scenes, calm, panicked, tired, amused, and it held up in all of them. Every cloning tool I'd tried before nailed exactly one read. This one carried.&lt;/p&gt;

&lt;h2&gt;
  
  
  voice a character from a picture
&lt;/h2&gt;

&lt;p&gt;Here's the one that really got me as a video person: you can hand it an image of a character and it works out a voice that fits the face. My characters usually start as a still, so pulling a voice straight from that image, no casting, no guessing, feels almost unfair.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you can actually make with it
&lt;/h2&gt;

&lt;p&gt;you can use &lt;a href="https://aigentools.io/models/seed-audio" rel="noopener noreferrer"&gt;seed audio&lt;/a&gt; to handle all kinds of scenarios.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Film &amp;amp; video voiceover&lt;/strong&gt; — narration and character voices that match the mood of a shot instead of sitting flatly on top of it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sound effects &amp;amp; ambience&lt;/strong&gt; — rain, wind, crowds, room tone, whole
environments, without digging through a stock library.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Podcasts&lt;/strong&gt; — multi-host conversations that actually sound like two people talking, not one voice split in two.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio drama &amp;amp; multi-character scenes&lt;/strong&gt; — short dramas and dialogue-heavy scenes cast and performed in a single pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audiobooks &amp;amp; narration&lt;/strong&gt; — long reads that hold one character's voice consistently from the first chapter to the last.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ads &amp;amp; brand spots&lt;/strong&gt; — a finished voiceover-and-effects spot straight from a single description.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's a 1.0, so it's not flawless. Sometimes a read comes back a little flat and I regenerate, and it's strongest in English and Chinese right now. Small stuff. Didn't change how I feel about it. &lt;a href="https://aigentools.io" rel="noopener noreferrer"&gt;AIGenTools&lt;/a&gt; helped me complete a full day's work in just one hour, giving me more time to do other things.&lt;/p&gt;

&lt;p&gt;If audio has always been the weak link in your AI videos, also you can &lt;a href="https://aigentools.io/models/seed-audio" rel="noopener noreferrer"&gt;try seed audio&lt;/a&gt;，You will also discover some aspects that truly amaze you.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seedaudio</category>
      <category>aiaudiogenerator</category>
      <category>podcast</category>
    </item>
    <item>
      <title>Hermes Agent: The Self-Improving AI Agent That Runs 24/7 on Your Own Server — A Deep Dive</title>
      <dc:creator>marwane</dc:creator>
      <pubDate>Tue, 14 Apr 2026 13:34:30 +0000</pubDate>
      <link>https://dev.to/marwane_manifi_c4dacfeb34/hermes-agent-the-self-improving-ai-agent-that-runs-247-on-your-own-server-a-deep-dive-554p</link>
      <guid>https://dev.to/marwane_manifi_c4dacfeb34/hermes-agent-the-self-improving-ai-agent-that-runs-247-on-your-own-server-a-deep-dive-554p</guid>
      <description>&lt;h1&gt;
  
  
  What Is Hermes Agent?
&lt;/h1&gt;

&lt;p&gt;Hermes Agent is an open-source AI agent framework built by Nous Research (the team behind the Hermes model family). It runs on your own machine or server, connects to any LLM you choose, and can be reached through Telegram, Discord, Slack, WhatsApp, Signal, and more — 14 platforms total.&lt;/p&gt;

&lt;p&gt;But what makes it genuinely different from the dozens of other agent tools out there is this: &lt;strong&gt;Hermes builds its own harness and improves itself over time.&lt;/strong&gt; Every time you use it, it gets a little better at working with you specifically.&lt;/p&gt;

&lt;p&gt;It's not a chatbot. It's not a code completion tool. It's an autonomous agent that can run shell commands, read files, browse the web, schedule tasks, delegate to sub-agents, and remember everything about how you work — across sessions, across platforms, across months of use.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Five Core Mechanisms
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. The Learning Loop — It Gets Better Without You Teaching It
&lt;/h2&gt;

&lt;p&gt;This is the heart of Hermes. After every task, it runs an automatic retrospective:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What should I remember?&lt;/strong&gt; → writes to memory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is this a recurring pattern?&lt;/strong&gt; → creates a Skill&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Did the user correct me?&lt;/strong&gt; → updates the Skill&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't trigger this. It just happens. The first time you ask it to write a Python script, the output might be generic. By the tenth time, it knows you prefer httpx over requests, you like error logs written to files instead of printed to terminal, and you hate long functions. Nobody taught it any of that — it observed and extracted the patterns itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Three-Layer Memory — From Goldfish to Old Friend
&lt;/h2&gt;

&lt;p&gt;Most AI tools forget you the moment you close the tab. Hermes has three memory layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Session memory (SQLite + FTS5):&lt;/strong&gt; Raw conversation history, full-text indexed. Hermes doesn't dump all of this into context — it searches by topic and pulls only what's relevant. Three months of use feels as fast as three days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent memory:&lt;/strong&gt; A small, curated profile — your preferences, habits, tool choices. This loads into every conversation automatically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skill memory:&lt;/strong&gt; Markdown files that capture "how to do things" — your validated workflows, stored in &lt;code&gt;~/.hermes/skills/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key design choice: &lt;strong&gt;on-demand retrieval, not full-context loading.&lt;/strong&gt; FTS5 full-text search means Hermes finds the right memory at the right time without bloating token usage.&lt;/p&gt;

&lt;p&gt;Optional add-on: &lt;strong&gt;Honcho user modeling&lt;/strong&gt; (by Plastic Labs) — a 12-layer dialectical identity system that infers things about you that you never explicitly said. Like noticing you always pick the cheapest option and inferring you're cost-sensitive, so next time it surfaces pricing info first.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Self-Evolving Skills
&lt;/h2&gt;

&lt;p&gt;A Skill in Hermes is a standalone markdown file in &lt;code&gt;~/.hermes/skills/&lt;/code&gt; — instructions for how to do something well. Skills come from three sources:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;How it works&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bundled&lt;/td&gt;
&lt;td&gt;40+ pre-built Skills ship with installation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent-created&lt;/td&gt;
&lt;td&gt;Hermes auto-creates Skills from recurring tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community Hub&lt;/td&gt;
&lt;td&gt;Install with one command&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The killer feature: &lt;strong&gt;Skills self-improve through use.&lt;/strong&gt; Every time you give feedback ("next time check if the table exists first"), Hermes goes back and edits the Skill file. Next run, the improvement is baked in.&lt;/p&gt;

&lt;p&gt;Skills follow the &lt;strong&gt;agentskills.io standard&lt;/strong&gt; — they're portable across Claude Code, Cursor, Codex CLI, Gemini CLI, and more. A Skill you wrote for one tool works in another.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. 40+ Built-in Tools + MCP
&lt;/h2&gt;

&lt;p&gt;Five categories of native tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;th&gt;What they do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Execution&lt;/td&gt;
&lt;td&gt;terminal, code_execution, file&lt;/td&gt;
&lt;td&gt;Run commands (sandboxed), read/write files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Information&lt;/td&gt;
&lt;td&gt;web, browser, session_search&lt;/td&gt;
&lt;td&gt;Search, scrape, search conversation history&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Media&lt;/td&gt;
&lt;td&gt;vision, image_gen, tts&lt;/td&gt;
&lt;td&gt;Understand images, generate images, text-to-speech&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;memory, skills, todo, cronjob&lt;/td&gt;
&lt;td&gt;Manage memory, Skills, scheduled tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coordination&lt;/td&gt;
&lt;td&gt;delegation, moa, clarify&lt;/td&gt;
&lt;td&gt;Sub-agents, multi-model answering, ask user&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Beyond the built-in tools, Hermes supports &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; — connecting to 6,000+ external apps. GitHub, Slack, Jira, databases, Google Drive — add a config block to &lt;code&gt;config.yaml&lt;/code&gt; and it just works. You can also filter which tools each MCP server exposes for security.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Multi-Platform Gateway
&lt;/h2&gt;

&lt;p&gt;One unified process connects to all your messaging platforms simultaneously. Start a conversation on Telegram during your commute, continue it in the terminal at your desk — Hermes doesn't distinguish where a message came from. Same brain, same memory, same Skills.&lt;/p&gt;

&lt;p&gt;Supports: Telegram, Discord, Slack, WhatsApp, Signal, Email, SMS (Twilio), Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, and Open WebUI.&lt;/p&gt;




&lt;h1&gt;
  
  
  How It Compares: Hermes vs Claude Code vs OpenClaw
&lt;/h1&gt;

&lt;p&gt;These three tools aren't competing — they solve different problems.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Claude Code&lt;/th&gt;
&lt;th&gt;OpenClaw&lt;/th&gt;
&lt;th&gt;Hermes Agent&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Core philosophy&lt;/td&gt;
&lt;td&gt;Interactive coding&lt;/td&gt;
&lt;td&gt;Configuration-as-behavior&lt;/td&gt;
&lt;td&gt;Autonomous background + self-improvement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Your role&lt;/td&gt;
&lt;td&gt;Sitting at the terminal directing&lt;/td&gt;
&lt;td&gt;Writing config files&lt;/td&gt;
&lt;td&gt;Deploy and check in occasionally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;CLAUDE.md + auto-memory&lt;/td&gt;
&lt;td&gt;SOUL.md + Daily Logs + semantic search&lt;/td&gt;
&lt;td&gt;Three-layer self-improving memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skill source&lt;/td&gt;
&lt;td&gt;Manually installed&lt;/td&gt;
&lt;td&gt;ClawHub 5,700+ community&lt;/td&gt;
&lt;td&gt;Agent-created + community Hub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Run mode&lt;/td&gt;
&lt;td&gt;On-demand&lt;/td&gt;
&lt;td&gt;On-demand&lt;/td&gt;
&lt;td&gt;24/7 background&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Local CLI (subscription)&lt;/td&gt;
&lt;td&gt;Local CLI (free + API costs)&lt;/td&gt;
&lt;td&gt;Self-hosted (VPS / Docker / Serverless)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The practical way to think about it:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Need real-time pair programming? → &lt;strong&gt;Claude Code&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Need transparent, auditable agent behavior for a team? → &lt;strong&gt;OpenClaw&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Need 24/7 automated code review, scheduled tasks, persistent memory? → &lt;strong&gt;Hermes&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Long-term content project? → &lt;strong&gt;Hermes for research + Claude Code for writing&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They're complementary. The agentskills.io standard means Skills are portable between all three.&lt;/p&gt;




&lt;h1&gt;
  
  
  Getting Started: From Zero to Running in 15 Minutes
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Step 1: Install
&lt;/h2&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://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
hermes version  &lt;span class="c"&gt;# verify&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Works on macOS, Linux, WSL2, and even Termux on Android. The script handles Python, Node.js, and all dependencies.&lt;/p&gt;

&lt;p&gt;Docker alternative:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker pull nousresearch/hermes-agent:latest
docker run &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.hermes:/opt/data nousresearch/hermes-agent:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Configure a model
&lt;/h2&gt;

&lt;p&gt;All configuration lives in one file: &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;provider&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openrouter&lt;/span&gt;       &lt;span class="c1"&gt;# or nousportal, openai, anthropic, ollama, etc.&lt;/span&gt;
  &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sk-or-xxxxx&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;anthropic/claude-sonnet-4&lt;/span&gt;
&lt;span class="na"&gt;terminal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;local&lt;/span&gt;              &lt;span class="c1"&gt;# or docker, ssh, daytona, modal&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Supported providers include OpenRouter (200+ models with one key), Nous Portal (officially recommended), OpenAI, Anthropic, z.ai/Zhipu, and Ollama for fully offline local models.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Start talking
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hermes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Ask it to search the web, read files, run shell commands. It will ask for permission before executing anything potentially dangerous.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Connect Telegram (optional but game-changing)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Create a bot with &lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt; in Telegram → get a token&lt;/li&gt;
&lt;li&gt;Add to &lt;code&gt;~/.hermes/config.yaml&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;gateway&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;telegram&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;YOUR_BOT_TOKEN&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Run &lt;code&gt;hermes&lt;/code&gt; — it connects to the Telegram Gateway automatically&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You now have a personal AI assistant reachable from your phone, anywhere in the world.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Deploy to a VPS for 24/7 uptime
&lt;/h2&gt;

&lt;p&gt;Any cheap VPS will do (Hetzner, DigitalOcean, Vultr — whatever you already use). Hermes is lightweight without a local LLM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; hermes &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--restart&lt;/span&gt; unless-stopped &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; ~/.hermes:/opt/data &lt;span class="se"&gt;\&lt;/span&gt;
  nousresearch/hermes-agent:latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's a 24/7 AI assistant with persistent memory, reachable from your phone.&lt;/p&gt;




&lt;h1&gt;
  
  
  What Makes It Actually Special
&lt;/h1&gt;

&lt;p&gt;After spending a week with this, here's what I think the real differentiators are:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The harness builds itself.&lt;/strong&gt; Other tools need you to write the rules (CLAUDE.md, SOUL.md). Hermes observes, learns, and writes its own rules. You can override anything, but the default is zero-config improvement.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Memory that actually works long-term.&lt;/strong&gt; FTS5 on-demand retrieval means it doesn't slow down after months. Your data stays local in SQLite — no cloud vector database needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Everything stays on your machine.&lt;/strong&gt; MIT license, self-hosted, any LLM you want. No vendor lock-in, no data leaving your server. A basic VPS runs it comfortably — memory usage is under 500MB without a local model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Skills are portable.&lt;/strong&gt; The agentskills.io standard means your investment in Skills isn't locked to one platform. Switch tools, keep your workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It works when you're not there.&lt;/strong&gt; Cron scheduling + Telegram gateway = an agent that reviews PRs at 2am, monitors your servers, drafts daily reports, and sends you the results over breakfast.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  Limitations to Be Aware Of
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No automatic memory expiration.&lt;/strong&gt; The memory database only grows. You need to manually audit &lt;code&gt;~/.hermes/&lt;/code&gt; occasionally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skill self-improvement depends on feedback quality.&lt;/strong&gt; Vague feedback ("this doesn't feel right") won't improve anything. Specific feedback works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-generated rules can drift.&lt;/strong&gt; The convenience of automatic improvement comes with the trade-off that you're giving up some control. Check your Skill files periodically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community ecosystem is still young.&lt;/strong&gt; OpenClaw's ClawHub has 5,700+ Skills from the lobster craze's network effects. Hermes's community is growing but isn't there yet.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Links
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/NousResearch/hermes-agent" rel="noopener noreferrer"&gt;github.com/NousResearch/hermes-agent&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://hermes-agent.nousresearch.com/docs" rel="noopener noreferrer"&gt;hermes-agent.nousresearch.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning guide:&lt;/strong&gt; &lt;a href="https://hermesagent101.dev" rel="noopener noreferrer"&gt;hermesagent101.dev&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy to answer questions if anyone's tried it or is thinking about setting it up.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>automation</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
