|
| 1 | +--- |
| 2 | +title: "Dev Proxy v2.3 with improved detached mode and multi-instance support" |
| 3 | +description: "We're excited to announce the release of Dev Proxy v2.3. This release brings significant improvements to detached mode, including proper JSON output, multi-instance support, and proxy URL visibility." |
| 4 | +date: 2026-03-26 |
| 5 | +author: "Waldek Mastykarz, Garry Trinder" |
| 6 | +tags: ["release"] |
| 7 | +image: "/blog/images/v2-3-0.png" |
| 8 | +--- |
| 9 | + |
| 10 | +We're excited to announce the release of **Dev Proxy v2.3.0!** This release is all about making Dev Proxy work better with AI agents, automation, and CI/CD pipelines. Whether you're using agents to test your APIs and improve your app's quality, running parallel test suites, or integrating Dev Proxy into your build scripts, v2.3.0 has you covered. We've improved detached mode with proper JSON output that agents and scripts can parse, added support for running multiple instances side by side, and made it easier to discover the proxy URL when starting Dev Proxy in the background. |
| 11 | + |
| 12 | +### **In this version:** |
| 13 | + |
| 14 | +- **Proper JSON output** in detached mode with `--output json` |
| 15 | +- **Multi-instance support** when running without system proxy |
| 16 | +- **Proxy URL visibility** when starting Dev Proxy in detached mode |
| 17 | + |
| 18 | +### **Proper JSON output in detached mode** |
| 19 | + |
| 20 | +If you're building an AI agent or automation around Dev Proxy, you've likely used `--output json` to get machine-readable output. But when running in detached mode (`--detach`), Dev Proxy would still return plain text - even with `--output json` specified. Not great when your agent or script expects JSON. |
| 21 | + |
| 22 | +This happened because the detached startup code wrote directly to the console before the logging infrastructure was initialized, completely bypassing the JSON formatter. |
| 23 | + |
| 24 | +**What changed:** |
| 25 | + |
| 26 | +Dev Proxy now properly detects `--output json` during detached startup and emits consistent JSONL output: |
| 27 | + |
| 28 | +```json |
| 29 | +{"type":"result","data":{"pid":6456,"apiUrl":"http://127.0.0.1:8897","logFile":"/path/to/logs/devproxy-6456-2026-03-05.log"},"timestamp":"2026-03-05T14:22:42.0000000Z"} |
| 30 | +``` |
| 31 | + |
| 32 | +Error messages also use structured JSONL on stderr: |
| 33 | + |
| 34 | +```json |
| 35 | +{"type":"log","level":"error","message":"Dev Proxy is already running (PID: 6456). Use 'devproxy stop' to stop it first.","timestamp":"2026-03-05T14:22:42.0000000Z"} |
| 36 | +``` |
| 37 | + |
| 38 | +**Why this matters:** AI agents need structured data to make decisions. If your agent starts Dev Proxy, it can now reliably parse the startup output to extract the PID and API URL. Same goes for CI/CD pipelines and build scripts - no more special-casing the startup phase in your automation. |
| 39 | + |
| 40 | +### **Multi-instance support** |
| 41 | + |
| 42 | +Previously, Dev Proxy blocked starting a second instance - even when neither instance was registered as the system proxy. This made it impossible to have an AI agent spin up dedicated proxy instances per task, or run parallel test suites, each with their own Dev Proxy instance pointing at different API configurations. |
| 43 | + |
| 44 | +**What changed:** |
| 45 | + |
| 46 | +When `asSystemProxy` is `false`, Dev Proxy now allows multiple instances to run simultaneously. Each instance gets its own state file, so they don't interfere with each other. |
| 47 | + |
| 48 | +To help you manage multiple instances, we've also added a `--pid` option to the `logs`, `status`, and `stop` commands: |
| 49 | + |
| 50 | +```bash |
| 51 | +# Start two instances on different ports |
| 52 | +devproxy --detach --as-system-proxy false --port 8080 |
| 53 | +devproxy --detach --as-system-proxy false --port 9090 |
| 54 | + |
| 55 | +# Check status of all running instances |
| 56 | +devproxy status |
| 57 | + |
| 58 | +# Stop a specific instance |
| 59 | +devproxy stop --pid 1234 |
| 60 | + |
| 61 | +# Stop all instances |
| 62 | +devproxy stop |
| 63 | +``` |
| 64 | + |
| 65 | +**Why this matters:** Building an agent that tests multiple API scenarios simultaneously? Running parallel test suites? Need different API configurations for different microservices? You can now spin up as many Dev Proxy instances as you need, each with its own configuration, and manage them independently. |
| 66 | + |
| 67 | +### **Proxy URL in detached mode output** |
| 68 | + |
| 69 | +When starting Dev Proxy in detached mode, especially with `--port 0` for OS-assigned ports, there was no way to know which port the proxy was actually listening on without checking the state file. |
| 70 | + |
| 71 | +**What changed:** |
| 72 | + |
| 73 | +The detached mode startup output now includes the proxy URL with the actual resolved port: |
| 74 | + |
| 75 | +``` |
| 76 | +Dev Proxy started in background. |
| 77 | +
|
| 78 | + PID: 4588 |
| 79 | + Proxy URL: http://127.0.0.1:63860 |
| 80 | + API URL: http://127.0.0.1:64123 |
| 81 | + Log file: /path/to/logs/devproxy-4588-2026-03-11.log |
| 82 | +``` |
| 83 | + |
| 84 | +This also works with `--output json`, where the proxy URL is included in the JSONL result. |
| 85 | + |
| 86 | +**Why this matters:** When an agent or script starts Dev Proxy with dynamic port assignment, it can now immediately discover the proxy address from the startup output - no need to poll the state file or guess the port. |
| 87 | + |
| 88 | +## Dev Proxy Aspire extensions |
| 89 | + |
| 90 | +If you're using Dev Proxy with .NET Aspire, we've got good news. Community contributor [Meir Blachman](https://github.com/Meir017) upgraded the [Dev Proxy Aspire extensions](https://github.com/dev-proxy-tools/aspire) to Aspire 13.2.0 and added .NET 10 support. The previous version relied on Aspire 9, which is now out of support. |
| 91 | + |
| 92 | +The updated extensions are available as v0.3.0 on NuGet. If you're using Dev Proxy in your Aspire projects, update your packages to get on the supported version of Aspire. |
| 93 | + |
| 94 | +Thanks, Meir! 🙏 |
| 95 | + |
| 96 | +## Dev Proxy Toolkit |
| 97 | + |
| 98 | +[Dev Proxy Toolkit](https://marketplace.visualstudio.com/items?itemName=garrytrinder.dev-proxy-toolkit) is an extension that makes it easier to work with Dev Proxy from within Visual Studio Code. Alongside the new release of Dev Proxy, we've also released a new version of the toolkit, v1.16.0. |
| 99 | + |
| 100 | +In this version, we've: |
| 101 | + |
| 102 | +- Updated the extension icon to the new purple design |
| 103 | +- Updated all JSON snippets to use v2.3.0 schemas |
| 104 | + |
| 105 | +Checkout out the [changelog](https://marketplace.visualstudio.com/items/garrytrinder.dev-proxy-toolkit/changelog) for more information on changes and bug fixes. |
| 106 | + |
| 107 | +### **Why upgrade to v2.3.0?** |
| 108 | + |
| 109 | +✅ **Agent-ready** - Structured JSONL output that AI agents can parse and act on |
| 110 | +✅ **Parallel instances** - Agents and scripts can spin up multiple Dev Proxy instances side by side |
| 111 | +✅ **Better discoverability** - See the actual proxy URL immediately on startup |
| 112 | +✅ **Streamlined CI/CD** - Reliable automation from agents to build pipelines |
| 113 | + |
| 114 | +### **Try it now** |
| 115 | + |
| 116 | +Download **Dev Proxy v2.3.0** today and build better API-connected applications with confidence! |
| 117 | + |
| 118 | +Got feedback or ideas? [Join us](https://github.com/dotnet/dev-proxy/discussions) and be part of the conversation. |
0 commit comments