<?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: Julien Vallini</title>
    <description>The latest articles on DEV Community by Julien Vallini (@julienvallini).</description>
    <link>https://dev.to/julienvallini</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F115763%2Fdfeb0700-66f1-48bf-ae58-339d24acd0f5.jpeg</url>
      <title>DEV Community: Julien Vallini</title>
      <link>https://dev.to/julienvallini</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/julienvallini"/>
    <language>en</language>
    <item>
      <title>Skybridge V1.0: THE framework for building MCP apps</title>
      <dc:creator>Julien Vallini</dc:creator>
      <pubDate>Tue, 19 May 2026 15:05:32 +0000</pubDate>
      <link>https://dev.to/alpic/skybridge-v10-the-framework-for-building-mcp-apps-81f</link>
      <guid>https://dev.to/alpic/skybridge-v10-the-framework-for-building-mcp-apps-81f</guid>
      <description>&lt;p&gt;Building an MCP App is a genuinely new problem. You're not building a website or a standard API; you're building something that runs inside an AI assistant, interacts with a non-deterministic model, and renders UI within a chat. A year ago, none of that existed. Today, MCP Apps run reliably in Claude and ChatGPT, the official SDK has matured, and +1,000 apps are present in the public app stores.&lt;/p&gt;

&lt;p&gt;Earlier this year, we open-sourced Skybridge, a full-stack TypeScript framework for building MCP Apps. It handles the plumbing: the MCP server, view rendering, CSP configuration, dev tools, client compatibility, and the connection between your server logic and your UI components. The goal is to let you focus on what your app does, rather than how to wire it all together.&lt;/p&gt;

&lt;p&gt;The response was bigger than we expected. Skybridge now has 100k monthly downloads and powers over 10% of apps on the Claude and ChatGPT stores, with teams ranging from Fortune 500 companies to early-stage startups. That adoption is what's driving this release.&lt;/p&gt;

&lt;p&gt;Today we're thrilled to introduce &lt;strong&gt;Skybridge 1.0&lt;/strong&gt;, a first-class framework with a stable API, a complete developer toolchain, and a clear commitment to the MCP Apps ecosystem. If you're building an MCP App, this is the foundation to build on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Simpler, type-safe API
&lt;/h2&gt;

&lt;p&gt;The goal of Skybridge has always been to abstract away underlying implementation details. In v1, that means one entry point: &lt;code&gt;server.registerTool(config, handler)&lt;/code&gt;. It replaces the old split between plain tools and tools with a view: include a &lt;code&gt;view&lt;/code&gt; in the config if you need one, and Skybridge wires it up. The Vite plugin handles component discovery and bundling automatically. Less boilerplate, fewer wiring mistakes, and a cleaner mental model overall.&lt;/p&gt;

&lt;p&gt;Think of Skybridge as the React Native of MCP App development: one codebase, compatible with every environment.&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.amazonaws.com%2Fuploads%2Farticles%2F6a76jpq1lkxg9muwm6la.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.amazonaws.com%2Fuploads%2Farticles%2F6a76jpq1lkxg9muwm6la.png" alt="New skybridge API" width="800" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notably, we're the first framework to include strongly typed tool-to-component binding, which is particularly useful when building with agents, where small mistakes are difficult to track down. We've also standardized on the term "views" across the framework and docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  A (really) complete dev loop
&lt;/h2&gt;

&lt;p&gt;One of the hardest things about building MCP Apps has always been the feedback loop. You make a change, tunnel your local server, switch to ChatGPT or Claude, test, and repeat. For every small UI tweak or logic fix, that cycle compounds fast.&lt;/p&gt;

&lt;p&gt;In V1, the dev tools have been redesigned from the ground up. They launch automatically when you run &lt;code&gt;skybridge dev&lt;/code&gt;, with a layout reflecting how you actually work: views are now first-class in the interface, with a dedicated panel that makes it easy to see what your view looks like and how it responds to tool calls. There's a mobile preview mode for easy small-screen viewing.&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.amazonaws.com%2Fuploads%2Farticles%2F5itvhmpvt41vr9i9a2cy.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.amazonaws.com%2Fuploads%2Farticles%2F5itvhmpvt41vr9i9a2cy.png" alt="The new and improved Skybridge dev tools, including a familiar helper we snuck into the template you get when you install Skybridge. He's been waiting 25 years for a comeback, and this time, he won't interrupt you." width="799" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most importantly, the dev tools are now a unified control panel for your entire development workflow. From the dev tools header, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open a tunnel&lt;/strong&gt; to test against a live AI client: Alpic Tunnel exposes your local server via a stable, authenticated URL that works with any MCP-compatible client.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test your app in the Alpic playground&lt;/strong&gt;, a production-like environment that avoids having to add your app to ChatGPT or Claude. It's the fastest way to iterate on tool behavior and UI together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Audit your app with Beacon&lt;/strong&gt;, a full compliance scan of your app against the Claude Connector Directory &amp;amp; ChatGPT App Store. Beacon catches the things that are easy to miss in local testing: CSP misconfigurations, missing tool descriptions, client-specific quirks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deploy directly to Alpic&lt;/strong&gt; or wherever your stack lives once you're ready to ship.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We believe these devtools really combine &lt;em&gt;everything&lt;/em&gt; a developer needs to build a production-grade MCP app with no platform or iteration friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy everywhere
&lt;/h2&gt;

&lt;p&gt;Lastly, we've long believed that a framework's value shouldn't come from locking you in.&lt;/p&gt;

&lt;p&gt;1.0 makes good on that. Your app ships with a Dockerfile in the template, and the framework is now compatible with Cloudflare Workers. Alpic Cloud remains the fastest path to production if you want zero infrastructure work, but it's a choice, not a requirement.&lt;/p&gt;

&lt;p&gt;In a similar vein, we've exposed the Express server giving you full control over the application and the ability to extend it with custom routes or middleware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;If you're migrating an existing project, check out (or hand your coding agent) our release notes at:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/alpic-ai/skybridge/releases/tag/v1.0.0" rel="noopener noreferrer"&gt;https://github.com/alpic-ai/skybridge/releases/tag/v1.0.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For new projects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create skybridge
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;V1 is a foundation, not a finish line, and it's a project we're investing more time into with every release. On the roadmap:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dev tools&lt;/strong&gt;: continued improvements, especially around CSP and auth debugging&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployment&lt;/strong&gt;: broader platform coverage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol&lt;/strong&gt;: simplified auth configuration &amp;amp; expanded client support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent-friendliness&lt;/strong&gt;: programmatic devtool APIs, better plugins, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Is there something you'd like to see? Open an issue or find us on &lt;a href="https://discord.com/invite/awV4gu74wK" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Check out our latest &lt;a href="https://www.youtube.com/watch?v=jiGDXyfEkP0" rel="noopener noreferrer"&gt;Code with Fred&lt;/a&gt; to see the dev tools live in action.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>typescript</category>
      <category>devtools</category>
      <category>ai</category>
    </item>
    <item>
      <title>Designing a CLI for Both Humans and Agents</title>
      <dc:creator>Julien Vallini</dc:creator>
      <pubDate>Wed, 15 Apr 2026 10:03:17 +0000</pubDate>
      <link>https://dev.to/alpic/designing-a-cli-for-both-humans-and-agents-4069</link>
      <guid>https://dev.to/alpic/designing-a-cli-for-both-humans-and-agents-4069</guid>
      <description>&lt;p&gt;We recently released the Alpic MCP and CLI, giving users two new interfaces with which they can interact. Designing the Alpic CLI for both humans and agents surfaced a set of challenges and tradeoffs worth writing down!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why does building for agents matter?
&lt;/h2&gt;

&lt;p&gt;Interfaces and layouts were designed for humans, i.e. to be easy to understand, and actions easy to perform. At Alpic we believe that agents are becoming the new interface: instead of directly interacting with a system, humans interact with an agent that interacts with the system. The human-agent interaction has been solved by LLMs — naturally, as agents have been trained mainly on human content, they are very good at understanding humans.&lt;/p&gt;

&lt;p&gt;With the Alpic engineering team we're committed to solve the remaining challenge: the agent-system interface. In other words, how to give agents the capabilities to perform the same actions as humans do. Besides MCP, which has been designed exactly for this purpose, CLIs happen to be a surprisingly good connector. They were designed in the first place for humans to interact with machines in a textual way, so they naturally work well for agents too, which are heavily text-driven. On top of that, CLIs are composable and well-represented in training corpora, with lots of examples of how they should be used.&lt;/p&gt;

&lt;p&gt;But designing a system (here a CLI) for both humans and agents comes with different requirements. This blog post explores these.&lt;/p&gt;

&lt;h2&gt;
  
  
  How are agents and humans different?
&lt;/h2&gt;

&lt;p&gt;When it comes to CLIs, humans and agents behave surprisingly similarly: both will try calling a command with the &lt;code&gt;--help&lt;/code&gt; flag to be guided toward the right usage.&lt;/p&gt;

&lt;p&gt;The first difference is the &lt;strong&gt;context window&lt;/strong&gt;: as an agent executes subsequent commands, it fills its context window, meaning that every additional call adds to token costs. This means verbose output is expensive — a command that dumps 200 lines of logs costs real money in an agentic loop.&lt;/p&gt;

&lt;p&gt;Agents are also quite &lt;strong&gt;bad at polling&lt;/strong&gt;. A human starting a deployment with a CLI will intuitively wait a minute or two before checking the status, expecting a final state (either deployed or failed). Agents won't wait around doing nothing; unless the command they executed blocks until completion, they'll immediately poll again​​ and again.&lt;/p&gt;

&lt;p&gt;Another difference is the &lt;strong&gt;inability for agents to handle interactive CLIs&lt;/strong&gt;. This may improve in the future, but at the moment, agents are far more efficient sending non-interactive one-shot commands and getting the result as parsable JSON.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Alpic CLI secret sauce
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;--non-interactive&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;All our commands implement a &lt;code&gt;--non-interactive&lt;/code&gt; flag, which allows users to automatically accept confirmation prompts such as "Are you sure you want to…". The goal is to reduce context usage and prevent agents from being blocked by interactive prompts.&lt;/p&gt;

&lt;p&gt;We also chose not to provide a JSON output format for now. Our tests show that agents are fully capable of understanding output intended for human users, and since JSON is a relatively verbose format, it adds unnecessary overhead to context usage. Additionally, dynamic console artifacts (such as loading spinners) tend to fill the agent's context with noise and should be avoided.&lt;/p&gt;

&lt;p&gt;That said, this space is evolving quickly, and our perspective is still forming. We'd love to hear how others are approaching these tradeoffs. Feel free to share your experiences on our Discord!&lt;/p&gt;

&lt;h3&gt;
  
  
  Use only named parameters
&lt;/h3&gt;

&lt;p&gt;We noticed that agents (and actually humans as well!) struggle with positional parameters in commands. By enforcing all parameters to be named, we reduce the risk of confusion by a lot. We also avoid a round trip to the documentation or to the &lt;code&gt;--help&lt;/code&gt; flag.&lt;/p&gt;

&lt;h3&gt;
  
  
  No &lt;code&gt;--cwd&lt;/code&gt; flag to avoid working directory confusion
&lt;/h3&gt;

&lt;p&gt;We decided not to provide a way to choose the working directory of a command. For example, when creating a project with a relative &lt;code&gt;root-dir&lt;/code&gt;: is it relative to the current working directory or to something else? Agents are good at navigating between folders, but bad at checking in which folder they execute a command, so removing &lt;code&gt;--cwd&lt;/code&gt; reduces ambiguity.&lt;/p&gt;

&lt;p&gt;We also added checks on deployment, for example to fail early if the directory the deploy command has been executed from is obviously a wrong one (e.g. an empty directory).&lt;/p&gt;

&lt;h3&gt;
  
  
  Commands better wait than returning early
&lt;/h3&gt;

&lt;p&gt;Humans are fine with retrying a command every few seconds. Agents are not — they'll either poll aggressively (wasting tokens) or miss the final state entirely. Making commands block until completion is a much better fit for agentic workflows. Of course, when possible, it's even better for commands to return quickly, as this gives control back to the agent to decide what to do next.&lt;/p&gt;

&lt;p&gt;In practice, this means our &lt;code&gt;alpic deploy&lt;/code&gt; command doesn't return until the deployment has either succeeded or failed. Of course if something snags, our CLI gives up and returns an explicit error rather than leaving the agent waiting forever.&lt;/p&gt;

&lt;h3&gt;
  
  
  Explicit command names, not abbreviated
&lt;/h3&gt;

&lt;p&gt;Unlike humans, agents don't mind typing a few more keystrokes. To reduce ambiguity, all of our commands and parameters use full words. We chose for example to name our command &lt;code&gt;alpic environment-variable&lt;/code&gt; instead of &lt;code&gt;alpic env&lt;/code&gt; which could be mislead as a command to manage environments and not environment variables. We understand that this added verbosity slightly increases token usage, but our tests show it's a worthwhile tradeoff, favoring clarity over minimal token usage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Being stateless (not relying on implicit server state)
&lt;/h3&gt;

&lt;p&gt;Humans know their own context: they may know, for example, whether they've already deployed their project successfully. An agent doesn't carry that context between sessions. Calling a command such as &lt;code&gt;alpic deployments inspect&lt;/code&gt; without any parameter — expecting it to return the latest deployment — requires an implicit knowledge about what's on the server that agents can't reliably track.&lt;/p&gt;

&lt;p&gt;For example, inspecting a deployment requires explicitly passing either a &lt;code&gt;--deployment-id&lt;/code&gt; or an &lt;code&gt;--environment-id&lt;/code&gt;, and these are mutually exclusive. Even retrieving the "latest deployment" must be scoped to a specific environment via &lt;code&gt;--environment-id&lt;/code&gt;, rather than relying on hidden defaults.&lt;/p&gt;

&lt;p&gt;We thus chose to always enforce explicit variables, ensuring that every command is deterministic and does not depend on implicit or session-specific context.&lt;/p&gt;

&lt;p&gt;We also state explicitly in the console when a flag has been deduced from a linked project. This helps agents understand what happened, and it's actually better for humans too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Most of the optimisations we made were actually aiming to reduce ambiguity and ensure that CLI output and parameters make the fewest assumptions possible. The result is that humans may need to type a few more keystrokes, but that's a fair price compared to the self-documenting side-effect of providing clear, full-word, named parameters and commands.&lt;/p&gt;

&lt;p&gt;Our goal — which is also how we measure our CLI's agent-readiness — is to make sure we can develop, deploy, and monitor apps while only interacting with an agent. If the agent is the only interface our users need to interact with Alpic and the experience is smooth, we consider our CLI successful.&lt;/p&gt;

&lt;p&gt;While our understanding of agent usage is still evolving and our experiments may shift our perspective over time, we're committed to building our CLI as a reference system where both agents and humans are treated as first-class citizens. Models are improving, and new agentic frameworks and systems are appearing every day — we look forward to keeping our CLI at the forefront and in step with these emerging use cases.&lt;/p&gt;

&lt;p&gt;Head to our documentation to give the Alpic CLI a try.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>ai</category>
      <category>devtools</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
