{"id":219,"date":"2025-12-17T07:40:47","date_gmt":"2025-12-17T15:40:47","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/aspire\/?p=219"},"modified":"2026-03-10T10:16:41","modified_gmt":"2026-03-10T17:16:41","slug":"aspire-13-1-holiday-gift","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/aspire\/aspire-13-1-holiday-gift\/","title":{"rendered":"Aspire 13.1 &#8211; Our holiday gift to you"},"content":{"rendered":"<h1>Aspire 13.1 &#8211; Our holiday gift to you \ud83c\udf81<\/h1>\n<p>Before we head off for the holidays, we wanted to leave you with one more release. Aspire 13.1 is packed with improvements to make your AI coding assistants first-class citizens in your development workflow, along with CLI enhancements, dashboard refinements, and streamlined Azure deployments.<\/p>\n<p>Check out the full <a href=\"https:\/\/aspire.dev\/whats-new\/aspire-13-1\/#-upgrade-to-aspire-131\">What&#8217;s New<\/a> for all the details!<\/p>\n<p>Without further ado, let&#8217;s dive into the highlights.<\/p>\n<h2>\ud83d\udee0\ufe0f CLI quality-of-life improvements<\/h2>\n<p>Several enhancements make the CLI experience smoother:<\/p>\n<p><strong>Channel persistence<\/strong>: When you run <code>aspire update --self<\/code> and select a channel, your selection is saved globally. Future <code>aspire new<\/code> and <code>aspire init<\/code> commands use this channel by default.<\/p>\n<p><strong>Automatic instance detection<\/strong>: Running <code>aspire run<\/code> when an instance is already running? Aspire 13.1 detects it and offers to terminate:<\/p>\n<p>No more hunting for orphaned processes!<\/p>\n<h2>\ud83d\udcca Dashboard improvements<\/h2>\n<p>The dashboard gets a dedicated <strong>Parameters<\/strong> tab on the Resources page, making it easier to view and manage configuration parameters without navigating away from resource details.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/aspire\/wp-content\/uploads\/sites\/90\/2025\/12\/resources-parameters-view.png\" alt=\"Resources parameters view\" \/><\/p>\n<p>The GenAI visualizer also received several improvements:<\/p>\n<ul>\n<li>Tool definitions and evaluations are now displayed<\/li>\n<li>Video and audio content can be previewed<\/li>\n<li>Log entries include direct links to the GenAI visualizer<\/li>\n<li>Better handling of various AI model response formats<\/li>\n<\/ul>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/aspire\/wp-content\/uploads\/sites\/90\/2025\/12\/genai-visualizer-tooldefinitions.png\" alt=\"GenAI visualizer tool definitions\" \/><\/p>\n<h2>\ud83e\udd16 AI agents meet Aspire<\/h2>\n<p>In Aspire 13, we introduced the Dashboard <a href=\"https:\/\/aspire.dev\/dashboard\/mcp-server\/\">MCP<\/a> &#8211; an HTTP-based server that lets AI assistants query your running application&#8217;s resources, logs, and traces. It was powerful, but required manual configuration with API keys and URLs.<\/p>\n<p>Aspire 13.1 takes this further with a new <strong>stdio-based MCP<\/strong> via the CLI. The new <code>aspire mcp init<\/code> command detects your development environment and configures everything automatically:<\/p>\n<pre><code class=\"language-bash\">aspire mcp init<\/code><\/pre>\n<pre><code class=\"language-text\">Which agent environments do you want to configure?\n[ ] Configure VS Code to use the Aspire MCP server\n[ ] Configure GitHub Copilot CLI to use Aspire MCP server\n[ ] Configure Claude Code to use Aspire MCP server\n[ ] Configure Open Code to use Aspire MCP server\n\nWhich additional options do you want to enable?\n[ ] Create an agent instructions file (AGENTS.md)\n[ ] Configure Playwright MCP server<\/code><\/pre>\n<p>The CLI MCP wraps the dashboard functionality and adds new tools for agentic development:<\/p>\n<ul>\n<li><strong>Integration discovery<\/strong> &#8211; AI agents can list available Aspire integrations and retrieve documentation for any package<\/li>\n<li><strong>AppHost management<\/strong> &#8211; List and switch between AppHost projects in your workspace<\/li>\n<li><strong>Dashboard tools<\/strong> &#8211; Query resource state, view logs, and inspect traces from your running application<\/li>\n<\/ul>\n<p>Imagine asking your AI assistant &#8220;Why is my API failing?&#8221; and having it actually check your logs and traces to give you real insights. Or asking it to add Redis to your project and having it know exactly which package to use and how to configure it.<\/p>\n<h2>\ud83c\udf10 JavaScript frontend starter template<\/h2>\n<p>A new <strong>Starter App (ASP.NET Core\/React)<\/strong> template provides a ready-to-use full-stack setup with an ASP.NET Core minimal API backend and a Vite-backed React frontend:<\/p>\n<pre><code class=\"language-text\">aspire new\n\nSelect a template:\n&gt; Starter App (ASP.NET Core\/Blazor)\n  Starter App (ASP.NET Core\/React)\n  Starter App (FastAPI\/React)\n  Empty AppHost<\/code><\/pre>\n<p>The template includes everything wired up and ready to go &#8211; just run <code>aspire run<\/code> and start building.<\/p>\n<h2>\u2601\ufe0f Azure improvements<\/h2>\n<p><strong>Azure Functions stabilization<\/strong>: The <a href=\"https:\/\/aspire.dev\/integrations\/cloud\/azure\/azure-functions\/?environment=vscode\">Azure Functions<\/a> integration is now stable!<\/p>\n<p><strong>Azure App Service deployment slots<\/strong>: Deployment slots let you deploy new versions of your app to a staging environment, validate them, and then swap into production with zero downtime. The new <code>WithDeploymentSlot<\/code> API makes this easy:<\/p>\n<pre><code class=\"language-csharp\">var builder = DistributedApplication.CreateBuilder(args);\n\nbuilder.AddAzureAppServiceEnvironment(\"env\")\n    .WithDeploymentSlot(\"staging\");<\/code><\/pre>\n<p><strong>Azure Managed Redis<\/strong>: Azure Cache for Redis has announced its retirement timeline for all SKUs, and we recommend moving your existing instances to Azure Managed Redis as soon as possible. In Aspire, we&#8217;ve deprecated <code>AddAzureRedis<\/code> and renamed <code>AddAzureRedisEnterprise<\/code> to <code>AddAzureManagedRedis<\/code>. URIs now use <code>rediss:\/\/<\/code> as the default scheme, ensuring proper TLS connections for polyglot applications. For more details, see <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/azure-cache-for-redis\/cache-best-practices-enterprise-tiers\">Best practices for the Azure Managed Redis enterprise tiers<\/a>.<\/p>\n<h2>\ud83d\udd12 TLS termination support<\/h2>\n<p>In Aspire 13, we introduced automatic certificate trust for outbound requests &#8211; Python, Node.js, and containers could seamlessly make HTTPS calls to other services in your app. Aspire 13.1 completes the picture with <strong>TLS termination<\/strong> support for inbound traffic.<\/p>\n<p>Containers like <a href=\"https:\/\/aspire.dev\/integrations\/reverse-proxies\/yarp\/\">YARP<\/a>, <a href=\"https:\/\/aspire.dev\/integrations\/caching\/redis\/\">Redis<\/a>, <a href=\"https:\/\/aspire.dev\/integrations\/security\/keycloak\/\">Keycloak<\/a>, and <a href=\"https:\/\/aspire.dev\/integrations\/frameworks\/python\/#add-uvicorn-app\">Uvicorn<\/a> can now serve HTTPS directly, with the ASP.NET Core developer certificate automatically configured. This means end-to-end HTTPS during local development without manual certificate setup.<\/p>\n<h2>\ud83d\udce6 More goodies<\/h2>\n<ul>\n<li><strong>DevTunnels stabilization<\/strong>: <code>Aspire.Hosting.DevTunnels<\/code> is now a stable package &#8211; use dev tunnels to expose your local Aspire applications to the internet for testing webhooks and external integrations<\/li>\n<li><strong>Keycloak OTLP export<\/strong>: Export telemetry from Keycloak containers with <code>.WithOtlpExporter()<\/code><\/li>\n<li><strong>Deployment improvements<\/strong>: Various fixes to make deployment faster and more reliable<\/li>\n<\/ul>\n<h2>\ud83d\udcab Get started today<\/h2>\n<p>Aspire 13.1 continues to build on the polyglot foundation of Aspire 13, with a particular focus on making AI coding agents productive members of your development team.<\/p>\n<p>Ready to upgrade? It&#8217;s easy:<\/p>\n<pre><code class=\"language-bash\"># Update the Aspire CLI\naspire update --self\n\n# Then, update your project\naspire update<\/code><\/pre>\n<p><strong>New to Aspire?<\/strong> Check out <a href=\"https:\/\/aspire.dev\">aspire.dev<\/a> for getting started guides, or dive right in:<\/p>\n<pre><code class=\"language-bash\">aspire new  # Interactive template picker<\/code><\/pre>\n<p><strong>Want more details?<\/strong> The <a href=\"https:\/\/aspire.dev\/whats-new\/aspire-13-1\/#-upgrade-to-aspire-131\">complete release notes<\/a> cover everything, including migration guides and experimental features.<\/p>\n<p>We&#8217;d love to hear what you think! Share feedback on <a href=\"https:\/\/github.com\/dotnet\/aspire\">GitHub<\/a>, join the conversation on <a href=\"https:\/\/aka.ms\/aspire-discord\">Discord<\/a>, or connect with us on <a href=\"https:\/\/bsky.app\/profile\/aspire.dev\">BlueSky<\/a>.<\/p>\n<p>Happy holidays, and happy Aspirifying! \ud83c\udf84\ud83d\ude80<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aspire 13.1 is here with CLI-based MCP for AI agents, dashboard improvements, Azure updates, and TLS termination support.<\/p>\n","protected":false},"author":1489,"featured_media":225,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[20,51,7],"tags":[8,9,10,28],"class_list":["post-219","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-announcement","category-aspire-update","tag-ai","tag-aspire","tag-cli","tag-mcp"],"acf":[],"blog_post_summary":"<p>Aspire 13.1 is here with CLI-based MCP for AI agents, dashboard improvements, Azure updates, and TLS termination support.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/posts\/219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/users\/1489"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/comments?post=219"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/posts\/219\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/media\/225"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/media?parent=219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/categories?post=219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/aspire\/wp-json\/wp\/v2\/tags?post=219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}