<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Zotto &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/zotto/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Wed, 04 Mar 2026 17:50:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Building an AI Pair Programmer for Xojo Developers</title>
		<link>https://blog.xojo.com/2026/03/09/building-an-ai-pair-programmer-for-xojo-developers/</link>
		
		<dc:creator><![CDATA[Garry Pettet]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 15:00:00 +0000</pubDate>
				<category><![CDATA[Guest Post]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[AI Code Generation]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Zotto]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=15902</guid>

					<description><![CDATA[If you&#8217;ve tried using ChatGPT, Claude, or Gemini for help with Xojo code, you&#8217;ve probably experienced the same frustration most of us have: the AI&#8230;]]></description>
										<content:encoded><![CDATA[
<p>If you&#8217;ve tried using ChatGPT, Claude, or Gemini for help with Xojo code, you&#8217;ve probably experienced the same frustration most of us have: the AI doesn&#8217;t <em>know</em> your project. You end up copying and pasting classes, explaining your architecture, and then watching it hallucinate method or framework names that don&#8217;t exist. It works, sort of, but it&#8217;s clunky.</p>



<p>I wanted something better. Not a generic chatbot that happens to know some Xojo, but a tool that could actually <em>see</em> what I was working on. That&#8217;s why I built Zotto (with Xojo!).</p>



<h2 class="wp-block-heading">What Is Zotto?</h2>



<p>Zotto is a cross-platform macOS and Windows app that acts as an AI pair programmer specifically for Xojo developers. It connects directly to the Xojo IDE, reads the project you&#8217;re working on, and gives the AI real context about your code such as classes, method signatures, properties. Essentially the whole project&#8217;s structure.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="853" src="https://blog.xojo.com/wp-content/uploads/2026/03/appearance-1024x853.png" alt="" class="wp-image-15906" srcset="https://blog.xojo.com/wp-content/uploads/2026/03/appearance-1024x853.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/03/appearance-300x250.png 300w, https://blog.xojo.com/wp-content/uploads/2026/03/appearance-768x640.png 768w, https://blog.xojo.com/wp-content/uploads/2026/03/appearance.png 1154w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">The Problem It Solves</h2>



<p>The core issue with using general-purpose AI tools for Xojo development is context. When you ask Claude or ChatGPT a question about your project, the AI has no idea what your codebase looks like. You become the middleman, manually feeding it snippets and hoping it has enough information to give useful advice.</p>



<p>Zotto removes some of that friction. When connected to the IDE, the AI can explore your project on its own using built-in tools:</p>



<ul class="wp-block-list">
<li><strong>ProjectOverview</strong> gives it the high-level folder structure</li>



<li><strong>ListItems</strong> lets it drill into specific folders</li>



<li><strong>GetSignatures</strong> shows method and property signatures without dumping all the code</li>



<li><strong>ReadCode</strong> pulls up full method implementations when needed</li>



<li><strong>SearchCode</strong> does grep-like pattern searches across the codebase</li>



<li><strong>SearchDocs</strong> lets it search and retrieve Xojo documentation directly</li>
</ul>



<p>These tools are designed to be token-efficient. Instead of dumping your entire project into the context window, the AI requests only what it needs, when it needs it. A <code>ProjectOverview</code> call might use 300-500 tokens. A <code>GetSignatures</code> call on a class gives the AI the API surface without the implementation details. This layered approach means even large projects work well within context limits.</p>



<h2 class="wp-block-heading">Read-Only by Design</h2>



<p>One decision I made early on was that Zotto would be read-only. It can read your code, analyse it, suggest changes, and generate snippets — but it cannot modify your project files, create new items, or execute IDE scripts.</p>



<p>This is intentional. I think AI-generated code should be reviewed by a developer before it goes into a project. Zotto gives you copy-pasteable suggestions and lets you decide what to implement. You stay in control.</p>



<h2 class="wp-block-heading">Bring Your Own Model</h2>



<p>Zotto isn&#8217;t locked to a single AI provider. It supports Claude, OpenAI, Gemini, Ollama, LM Studio, and any OpenAI-compatible API (which covers services like Grok and OpenRouter). If you&#8217;re privacy-conscious or working on sensitive code, you can run it entirely offline with a local model through Ollama or LM Studio. Your code never has to leave your machine.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="988" height="961" src="https://blog.xojo.com/wp-content/uploads/2026/03/provider-settings.png" alt="" class="wp-image-15909" srcset="https://blog.xojo.com/wp-content/uploads/2026/03/provider-settings.png 988w, https://blog.xojo.com/wp-content/uploads/2026/03/provider-settings-300x292.png 300w, https://blog.xojo.com/wp-content/uploads/2026/03/provider-settings-768x747.png 768w" sizes="(max-width: 988px) 100vw, 988px" /></figure>



<p>This also means you&#8217;re not paying for Zotto&#8217;s AI usage — you use your own API keys or local models, so you&#8217;re in full control of costs.</p>



<h2 class="wp-block-heading">How It Works in Practice</h2>



<p>A typical workflow looks like this:</p>



<ol class="wp-block-list">
<li>Open your project in the Xojo IDE</li>



<li>Launch Zotto — it detects the IDE automatically</li>



<li>Select which open project to work with</li>



<li>Start chatting</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="757" src="https://blog.xojo.com/wp-content/uploads/2026/03/chat-window-1024x757.png" alt="" class="wp-image-15908" srcset="https://blog.xojo.com/wp-content/uploads/2026/03/chat-window-1024x757.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/03/chat-window-300x222.png 300w, https://blog.xojo.com/wp-content/uploads/2026/03/chat-window-768x568.png 768w, https://blog.xojo.com/wp-content/uploads/2026/03/chat-window.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>From there, you might ask the AI to review a class, suggest how to refactor a method, help you understand unfamiliar code in a project you&#8217;ve inherited, or brainstorm an approach to a new feature. Because the AI can explore the project itself, the conversation feels much more natural than the copy-paste dance with a generic chatbot.</p>



<p>For example, you could ask: &#8220;What does the <code>ProcessOrder</code> method in <code>OrderManager</code> do?&#8221; Instead of you having to find and paste the code, Zotto&#8217;s AI will call <code>ReadCode</code> to look at the method itself, then maybe <code>GetSignatures</code> on the parent class to understand the broader context, and give you a thorough explanation.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="853" src="https://blog.xojo.com/wp-content/uploads/2026/03/coding-settings-1024x853.png" alt="" class="wp-image-15910" srcset="https://blog.xojo.com/wp-content/uploads/2026/03/coding-settings-1024x853.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/03/coding-settings-300x250.png 300w, https://blog.xojo.com/wp-content/uploads/2026/03/coding-settings-768x640.png 768w, https://blog.xojo.com/wp-content/uploads/2026/03/coding-settings.png 1154w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Extending with MCP</h2>



<p>For developers who want to go further, Zotto supports the Model Context Protocol (MCP). This lets you add custom tool servers — for file system access, Git operations, database queries, or anything else you might want the AI to have access to during a conversation. It&#8217;s the same protocol that Claude Desktop and other AI tools support, so existing MCP servers work out of the box.</p>



<h2 class="wp-block-heading">Built for the Community</h2>



<p>Zotto exists because I needed it for my own Xojo development. I was spending too much time being the translator between AI tools and my codebase. Once I had something working, it seemed like other Xojo developers would find it useful too.</p>



<p>There&#8217;s a free version you can try that includes full IDE integration and all the built-in tools with a single conversation. A full license is a one-time purchase of £69 — no subscription. You can learn more and download it at <a href="https://zotto.app" target="_blank" rel="noreferrer noopener">zotto.app</a>.</p>



<p>If you have questions or feedback, I&#8217;d love to hear from you on the <a href="https://forum.xojo.com/" target="_blank" rel="noreferrer noopener">forum</a>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><em>Garry Pettet is a Consultant Radiologist, Xojo developer and the creator of Zotto. You can find him on the Xojo <a href="https://forum.xojo.com/">forum</a> or at <a href="https://zotto.app" target="_blank" rel="noreferrer noopener">zotto.app</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
