<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Muna Blog]]></title><description><![CDATA[The latest in code generation for AI inference.]]></description><link>https://blog.muna.ai</link><image><url>https://substackcdn.com/image/fetch/$s_!H6G9!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84dd1c2-19cc-4443-a19a-7e34e42257f3_512x512.png</url><title>Muna Blog</title><link>https://blog.muna.ai</link></image><generator>Substack</generator><lastBuildDate>Fri, 03 Apr 2026 20:08:57 GMT</lastBuildDate><atom:link href="https://blog.muna.ai/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[NatML Inc.]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[functionai@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[functionai@substack.com]]></itunes:email><itunes:name><![CDATA[Yusuf Olokoba]]></itunes:name></itunes:owner><itunes:author><![CDATA[Yusuf Olokoba]]></itunes:author><googleplay:owner><![CDATA[functionai@substack.com]]></googleplay:owner><googleplay:email><![CDATA[functionai@substack.com]]></googleplay:email><googleplay:author><![CDATA[Yusuf Olokoba]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Run Embedding Gemma Anywhere with Muna's OpenAI Client]]></title><description><![CDATA[From OpenAI to open-source embedding models in two lines of code.]]></description><link>https://blog.muna.ai/p/run-embedding-gemma-anywhere-with</link><guid isPermaLink="false">https://blog.muna.ai/p/run-embedding-gemma-anywhere-with</guid><dc:creator><![CDATA[Yusuf Olokoba]]></dc:creator><pubDate>Wed, 05 Nov 2025 00:32:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PXrh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PXrh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PXrh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 424w, https://substackcdn.com/image/fetch/$s_!PXrh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 848w, https://substackcdn.com/image/fetch/$s_!PXrh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 1272w, https://substackcdn.com/image/fetch/$s_!PXrh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PXrh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:null,&quot;width&quot;:null,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1816860,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/176158283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PXrh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 424w, https://substackcdn.com/image/fetch/$s_!PXrh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 848w, https://substackcdn.com/image/fetch/$s_!PXrh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 1272w, https://substackcdn.com/image/fetch/$s_!PXrh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F82ce92a8-d742-4c6d-85b5-a2e052c3ce2a_1720x1080.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a></figure></div><p>Today, Muna supports running Google&#8217;s <a href="https://www.muna.ai/@google/embedding-gemma">Embedding Gemma</a> text embedding model locally and in the cloud&#8212;<strong>by changing only one line of code</strong>.</p><p>Embedding Gemma has shown very strong performance across a range of tasks, including question answering, clustering, and summarization. Along with it, we are launching our OpenAI client in our Python and JavaScript libraries.</p><h2>From OpenAI to Open Source</h2><p>While designing an interface for developers to use Embedding Gemma, we were faced with a stark reality: the overwhelming majority of developers use text embedding models via OpenAI&#8217;s client libraries.</p><p>To make the transition as smooth and painless as possible, we are shipping an OpenAI client in our SDKs that will allow engineering teams run open-source text embedding models <strong>with</strong> <strong>almost the exact same code</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t2e6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t2e6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 424w, https://substackcdn.com/image/fetch/$s_!t2e6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 848w, https://substackcdn.com/image/fetch/$s_!t2e6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 1272w, https://substackcdn.com/image/fetch/$s_!t2e6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t2e6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png" width="1456" height="721" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:721,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:276462,&quot;alt&quot;:&quot;JavaScript code showing how creating embeddings with Muna's mock OpenAI client looks very similar to the official OpenAI client.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/176158283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="JavaScript code showing how creating embeddings with Muna's mock OpenAI client looks very similar to the official OpenAI client." title="JavaScript code showing how creating embeddings with Muna's mock OpenAI client looks very similar to the official OpenAI client." srcset="https://substackcdn.com/image/fetch/$s_!t2e6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 424w, https://substackcdn.com/image/fetch/$s_!t2e6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 848w, https://substackcdn.com/image/fetch/$s_!t2e6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 1272w, https://substackcdn.com/image/fetch/$s_!t2e6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7d5959a-b5a6-46b2-a888-8b4cb74931df_2520x1248.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Create a Muna <code>openai</code> client then specify the embedding <code>model</code>.</figcaption></figure></div><p>Thanks to Muna&#8217;s compiler technology, the embedding models will be downloaded and run locally by default. That said, developers can run the models on cloud GPUs with only one additional line of code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oYM6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oYM6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 424w, https://substackcdn.com/image/fetch/$s_!oYM6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 848w, https://substackcdn.com/image/fetch/$s_!oYM6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 1272w, https://substackcdn.com/image/fetch/$s_!oYM6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oYM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png" width="1456" height="435" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:435,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:180594,&quot;alt&quot;:&quot;JavaScript code showing how to create embeddings on a remote GPU instance with only one additional line of code.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/176158283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="JavaScript code showing how to create embeddings on a remote GPU instance with only one additional line of code." title="JavaScript code showing how to create embeddings on a remote GPU instance with only one additional line of code." srcset="https://substackcdn.com/image/fetch/$s_!oYM6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 424w, https://substackcdn.com/image/fetch/$s_!oYM6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 848w, https://substackcdn.com/image/fetch/$s_!oYM6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 1272w, https://substackcdn.com/image/fetch/$s_!oYM6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F22b41d21-69a4-4ba7-9fca-8445d1731122_2664x796.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Create embeddings on a remote GPU instance with only one line of code.</figcaption></figure></div><p>If you already have compute resources (VPC, bare metal), <a href="https://muna.ai/slack">reach out to us</a> for how to run your compiled embedding models on your own infrastructure.</p><h2>Bring Your Own Embedding Model</h2><p>You can compile any arbitrary Python function to be compatible with our OpenAI client&#8217;s embedding interface, <a href="https://docs.muna.ai/predictors/openai#creating-embedding-predictors">with just some type hints</a>:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Tbs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Tbs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 424w, https://substackcdn.com/image/fetch/$s_!9Tbs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 848w, https://substackcdn.com/image/fetch/$s_!9Tbs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!9Tbs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Tbs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png" width="1456" height="729" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:729,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:221051,&quot;alt&quot;:&quot;With Muna, you can compile any arbitrary Python function to be compatible with the OpenAI embedding client.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/176158283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="With Muna, you can compile any arbitrary Python function to be compatible with the OpenAI embedding client." title="With Muna, you can compile any arbitrary Python function to be compatible with the OpenAI embedding client." srcset="https://substackcdn.com/image/fetch/$s_!9Tbs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 424w, https://substackcdn.com/image/fetch/$s_!9Tbs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 848w, https://substackcdn.com/image/fetch/$s_!9Tbs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!9Tbs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7d445aca-9ad0-42d9-8355-62d04156da52_2852x1428.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">With Muna, you can compile any arbitrary Python function to be compatible with the OpenAI embedding client.</figcaption></figure></div><p>With this, engineering teams can compile their own custom or fine-tuned models with Muna, and run them anywhere. The Embedding Gemma model itself was compiled with under <a href="https://github.com/muna-ai/muna-predictors/blob/main/text-embeddings/embedding_gemma.py">100 lines of Python code</a>.</p><div><hr></div><p>If you build something fun with this, tag us&#8212;we&#8217;ll feature it in subsequent blog posts. And if you have any questions,</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://muna.ai/slack&quot;,&quot;text&quot;:&quot;Join us on Slack&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://muna.ai/slack"><span>Join us on Slack</span></a></p>]]></content:encoded></item><item><title><![CDATA[Model: Detect Objects in Python, Mobile, and Web with RT-DETR]]></title><description><![CDATA[Compiling RT-DETR to run anywhere in only 150 lines of code.]]></description><link>https://blog.muna.ai/p/model-detect-objects-in-python-mobile</link><guid isPermaLink="false">https://blog.muna.ai/p/model-detect-objects-in-python-mobile</guid><dc:creator><![CDATA[Yusuf Olokoba]]></dc:creator><pubDate>Wed, 08 Oct 2025 19:00:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1tAw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1tAw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1tAw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!1tAw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!1tAw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!1tAw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1tAw!,w_2400,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png" width="1200" height="779.6703296703297" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;large&quot;,&quot;height&quot;:946,&quot;width&quot;:1456,&quot;resizeWidth&quot;:1200,&quot;bytes&quot;:3396076,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/175643546?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-large" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1tAw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 424w, https://substackcdn.com/image/fetch/$s_!1tAw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 848w, https://substackcdn.com/image/fetch/$s_!1tAw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 1272w, https://substackcdn.com/image/fetch/$s_!1tAw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F500efef7-78f2-49b6-85de-06ce11bac9c8_3024x1964.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Detecting images in the browser with RT-DETR.</figcaption></figure></div><p><a href="https://github.com/lyuwenyu/RT-DETR">Realtime Detection Transformer</a> is a leading object detection model, beating YOLO on object detection tasks thanks to its transformer architecture. Normally to deploy this model, developers must first export the model weights from PyTorch to a chosen inference format (e.g. ONNX, TensorRT), then write C++ code to run the model in their target environment.</p><h2>Compiling the Model with Muna</h2><p>Muna completely automates the process of writing deployment-ready C++ code for model inference. First, we wrote a Python function that takes an image, runs the model, and returns a set of <code>Detection</code> objects. All of this fit neatly into just <a href="https://github.com/muna-ai/compiler/blob/main/predictors/ai/object-detection/rt_detr.py">150 lines of Python code</a>. From there, we compiled the function<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> with Muna:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RxeV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RxeV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 424w, https://substackcdn.com/image/fetch/$s_!RxeV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 848w, https://substackcdn.com/image/fetch/$s_!RxeV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 1272w, https://substackcdn.com/image/fetch/$s_!RxeV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RxeV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png" width="1456" height="229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0879056-5ca9-427a-ae52-7607227dc313_2776x436.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:229,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:56710,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/175643546?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RxeV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 424w, https://substackcdn.com/image/fetch/$s_!RxeV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 848w, https://substackcdn.com/image/fetch/$s_!RxeV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 1272w, https://substackcdn.com/image/fetch/$s_!RxeV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0879056-5ca9-427a-ae52-7607227dc313_2776x436.png 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption">Compiling the RT-DETR detection function using the <a href="https://github.com/muna-ai/muna-py">Muna CLI</a>.</figcaption></figure></div><p>Once compiled, anyone can run the model from Python, JavaScript (browser and Node.js), Swift (iOS), Kotlin (Android), and so on. Here&#8217;s an example showing how to run the model in JavaScript (generate an access key for free <a href="https://www.muna.ai/settings/developer">here</a>):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UUP7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UUP7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 424w, https://substackcdn.com/image/fetch/$s_!UUP7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 848w, https://substackcdn.com/image/fetch/$s_!UUP7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!UUP7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UUP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png" width="1456" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/faa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:254904,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/175643546?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UUP7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 424w, https://substackcdn.com/image/fetch/$s_!UUP7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 848w, https://substackcdn.com/image/fetch/$s_!UUP7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!UUP7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffaa5eeac-1648-4ef0-b80d-c29f9ef04bed_2848x1428.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Running RT-DETR in a JavaScript app.</figcaption></figure></div><p>At runtime, the compiled model will get downloaded from Muna, loaded into your application, and then invoked with your input image. Don&#8217;t take our word for it, try the online demo yourself!</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.muna.ai/@baidu/rt-detr&quot;,&quot;text&quot;:&quot;Try RT-DETR on Muna&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.muna.ai/@baidu/rt-detr"><span>Try RT-DETR on Muna</span></a></p><div><hr></div><p>If you have any questions, come bother us on <a href="https://muna.ai/slack">our community Slack</a>. Happy coding!</p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>We compiled the model to use ONNXRuntime, but you can use CoreML, TensorRT, TensorFlow Lite, OpenVINO, QNN, ExecuTorch, and more. See more <a href="https://docs.muna.ai/predictors/ai#inference-backends">on our docs</a>.</p></div></div>]]></content:encoded></item><item><title><![CDATA[Feature: Run Google's Gemma 3 LLM Anywhere with Muna and Llama.cpp]]></title><description><![CDATA[We're launching experimental support for text generation with LLMs.]]></description><link>https://blog.muna.ai/p/gemma3</link><guid isPermaLink="false">https://blog.muna.ai/p/gemma3</guid><dc:creator><![CDATA[Yusuf Olokoba]]></dc:creator><pubDate>Tue, 02 Sep 2025 18:47:58 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!x2Lm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x2Lm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x2Lm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 424w, https://substackcdn.com/image/fetch/$s_!x2Lm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 848w, https://substackcdn.com/image/fetch/$s_!x2Lm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 1272w, https://substackcdn.com/image/fetch/$s_!x2Lm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x2Lm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif" width="728" height="453.42560553633217" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:false,&quot;imageSize&quot;:&quot;normal&quot;,&quot;height&quot;:720,&quot;width&quot;:1156,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:1020636,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/170692465?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x2Lm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 424w, https://substackcdn.com/image/fetch/$s_!x2Lm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 848w, https://substackcdn.com/image/fetch/$s_!x2Lm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 1272w, https://substackcdn.com/image/fetch/$s_!x2Lm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9b63827-abe8-4193-bd51-704e69cda11d_1156x720.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Writing a poem about on-device AI&#8230;entirely on-device in the browser.</figcaption></figure></div><p>Over the past few weeks, we&#8217;ve been working to add support for LLM inference to Muna. <a href="https://muna.ai">Muna</a> allows you to write Python functions, and compile them to run anywhere in as little as two lines of code:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TlA6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TlA6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 424w, https://substackcdn.com/image/fetch/$s_!TlA6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 848w, https://substackcdn.com/image/fetch/$s_!TlA6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 1272w, https://substackcdn.com/image/fetch/$s_!TlA6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TlA6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png" width="1456" height="1440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1440,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:616008,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/170692465?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TlA6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 424w, https://substackcdn.com/image/fetch/$s_!TlA6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 848w, https://substackcdn.com/image/fetch/$s_!TlA6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 1272w, https://substackcdn.com/image/fetch/$s_!TlA6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F356f9aca-ea1e-4504-aff7-bbb3cc3979a2_2624x2596.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And since everyone is used to calling <code>openai.chat.completions.create(&#8230;)</code> in their code, we decided to implement a similar, experimental API in our client libraries:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xg00!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xg00!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 424w, https://substackcdn.com/image/fetch/$s_!xg00!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 848w, https://substackcdn.com/image/fetch/$s_!xg00!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!xg00!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xg00!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png" width="1456" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:304163,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.muna.ai/i/170692465?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xg00!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 424w, https://substackcdn.com/image/fetch/$s_!xg00!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 848w, https://substackcdn.com/image/fetch/$s_!xg00!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 1272w, https://substackcdn.com/image/fetch/$s_!xg00!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe18c369c-e4a9-4fec-97a9-f65662b6686f_2624x1696.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We&#8217;ve got this implemented in our Python, JavaScript (browser + Node.js), and Android client libraries, with the same API coming in our Swift, React Native, and Unity Engine client libraries. Come talk to us about it in <a href="https://muna.ai/slack">our Slack community</a>.</p><div><hr></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.muna.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Muna Blog! Subscribe for free to receive new posts from us.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div><hr></div><p>Try out <a href="https://github.com/olokobayusuf/web-chat-demo">this demo project</a>, which runs Google&#8217;s <a href="https://developers.googleblog.com/en/introducing-gemma-3-270m/">Gemma 3 270M</a> using the <code>llama-cpp-python</code> library in Python; along with a Next.js web app that runs the compiled LLM locally in the browser.</p><p>Happy AI-ing.</p>]]></content:encoded></item><item><title><![CDATA[Coming soon]]></title><description><![CDATA[This is Muna Blog.]]></description><link>https://blog.muna.ai/p/coming-soon</link><guid isPermaLink="false">https://blog.muna.ai/p/coming-soon</guid><dc:creator><![CDATA[Yusuf Olokoba]]></dc:creator><pubDate>Tue, 17 Jun 2025 18:58:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!H6G9!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd84dd1c2-19cc-4443-a19a-7e34e42257f3_512x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This is Muna Blog.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.muna.ai/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.muna.ai/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>