{"slug": "passenger-the-free-ide-for-c-and-net", "title": "Passenger – The free IDE for C# and .NET", "summary": "Passenger launched as a free, open-source IDE for C# and .NET under the MIT license, adding Godot 4 game support that runs, debugs, profiles and Hot Reloads games written in C# and GDScript. The IDE checks GetNode<T> paths, res:// paths, [Export] values and signals against the scenes that run the script, and debugs both languages in one session, alongside Blazor WebAssembly browser debugging, XAML Hot Reload for Avalonia and WPF, and a profiler built on the runtime's EventPipe. Passenger ships with no account, license key or telemetry, and its debugger runs over ICorDebug and .NET's browser debug proxy on local machines, in containers and in the browser.", "body_md": "Now for Godot 4 games. The free IDE for C# and .NET.\n\nRun, debug, profile and Hot Reload Godot games in C# and GDScript, their scenes and scripts\nchecked as Godot reads them and the running game beside your code. Blazor WebAssembly now debugs in the\nbrowser, Avalonia and WPF take XAML Hot Reload, and your coding agent can drive it all.\n\nFree and open source under MIT: no account, no licence key, no telemetry.\n\nIncluded\n\nEverything included, nothing to pay\n\nTools like these are usually found in paid IDEs or add-ons. In Passenger they are part of the\nIDE, free and open source under MIT, for work and personal projects alike.\n\nGodot 4: your scenes and the running game, in your code\n\nFor games in C#, in GDScript or in both. Passenger checks your code against your scenes, debugs\nboth languages at once, and works beside Godot's editor or as its script editor.\n\nC# that knows its scenes\n\nGetNode<T> paths and types, res:// paths, [Export]\nvalues, signals and every string Godot takes (input actions, groups, animations, autoloads) complete\nand are checked against the scenes that run the script. A rename reaches the scenes, and a scene is\nmarked where Godot would not load it, with fixes.\n\nPassenger's port of Godot's parser and analyzer gives Godot's own warnings and errors with their\nfixes, completion, the hover, Find Usages and Rename, mostly without starting Godot. Shaders are\nchecked as Godot's compiler checks them, every error and warning at once.\n\nBoth languages, one debugger\n\nA breakpoint in C# or GDScript stops the game, a script you save reloads in it, and Godot's types\nread as you think of them in Variables.\n\nThe running game, tuned\n\nIts nodes and values in the Live Visual Tree, changed while it plays and kept into the scene, a node\npicked by clicking in the game.\n\nOne profile, both languages\n\nGDScript's functions and Godot's frame times beside the C# in one call tree, a slow frame opened on\nwhat it spent.\n\nIts tests\n\nGdUnit4 (its engine tests on Godot 4.7), GUT and GoDotTest tests found, run and debugged in the Unit Tests window.\n\nBeside Godot's editor\n\nPassenger becomes Godot's script editor in one step, and its addon has a game Godot's Play starts\ndebugged in Passenger.\n\nThe game in a pane\n\nOn Windows, macOS and Linux under X11, the game can draw beside its code, taking the keys when you\nclick it.\n\nDebugger\n\nFix bugs while the program runs\n\nPassenger's own debugger, over ICorDebug and .NET's browser debug proxy, works the same on your\nmachine, inside a container and in the browser.\n\nA debugger of its own\n\nBreakpoints with conditions, hit counts and log messages, Smart Step Into, the values methods\nreturned (an async method's too), Run to Cursor and Set Next Statement, and the values each line\nused drawn after it. Several programs debug at once, a tab each, and a library without symbols shows\nits code, decompiled.\n\nAttach to a .NET program already running, in a container too, and on a Mac with nothing to set\nup.\n\nHot Reload while debugging\n\nEdit the code, paused or running, and Hot Reload puts it in the program. An edit it can't apply is\nlisted with why, and by default the program restarts to take it.\n\nBlazor, in the browser too\n\nDebug a Blazor Web App and its server stops in one tab while its WebAssembly components stop in the\nbrowser in the tab beside it: breakpoints, stepping, Variables, watches and the hover card, under\nAspire and in containers too.\n\nWith Hot Reload a component's edit shows at once and a saved stylesheet applies in place, the page\nkept up. The page opens in Chrome, Edge, Chromium or Brave, on a profile of Passenger's own.\n\nProfiler\n\nSee where the time and memory go\n\nA profiler of Passenger's own, over the runtime's EventPipe, for a program you run, one already\nrunning, or a service in its container.\n\nWhere the time goes\n\nSampling from a program's first instruction or attached to one already running: its call tree, hot\nspots, flame graph, allocations and garbage collections, narrowed to any stretch of the\ntimeline.\n\nWhat holds the memory\n\nA memory snapshot counts the heap by type, with each object's retained size, and shows the shortest\npaths that keep it alive. Two snapshots compared say which objects are new, which died and which\nsurvived.\n\nXAML\n\nSee your XAML as you write it, and as it runs\n\nPassenger is built with Avalonia, and it gives XAML the help C# gets, from the project's own\nassemblies and the framework's own compiler and previewer, for Avalonia and WPF alike.\n\nXAML as you type\n\nCompletion of controls, properties, values, resources, selectors and binding paths, checked against\nx:DataType or WPF's design-time data context, the XAML compiler's errors on their lines,\nand a missing property, command or converter made from where it is used. A rename reaches across C#\nand XAML, either way.\n\nXAML Preview draws the file beside it as you type (WPF's on Windows), and the XAML workspace sets the\nfile, its preview and the running app's tree side by side, one selection across the three.\n\nThe running app, from its XAML\n\nDebug an Avalonia app, or a WPF app on Windows, and the Live Visual Tree shows its controls as they are,\neach property with where its value came from and each style with why it applies or not. In Avalonia\nthe XAML shows each binding's value after its line, and a breakpoint goes on an element.\n\nSave a XAML file and XAML Hot Reload puts it in the running Avalonia or WPF app. A binding that fails\nis a row in Problems with a fix, and can stop the debugger like an exception.\n\nAgents\n\nA coding agent that uses the IDE and tries the app\n\nPassenger is an MCP server. Through it an agent works in the IDE, not only in your files: it asks\nthe language server instead of guessing from the text, and checks what it changed by building, testing and\nrunning it. It works with Claude Code, Codex, OpenCode and any MCP agent.\n\nIt tries what it builds\n\nWhen the program is an Avalonia app, a Godot game, or a WPF app on Windows, the agent sees it as a\nperson testing it would: a picture of each window or frame, the tree of its controls or nodes, and\nclicks, typing and keys, which never take your focus or move your pointer.\n\nIt works as you do\n\nIt finds where things are declared and used, renames, fixes and formats as the IDE does, builds, runs\nand tests, debugs and profiles, starts a compose service or an Aspire resource, and changes scenes in\nyour Godot editor, each change one step of Godot's Undo. On your own window it asks you first.\n\nPassenger runs an app made of several services as one. Your compose files, Dockerfiles and\nAspire AppHosts are run configurations as the solution opens, and every .NET service in them runs under\nPassenger's debugger, Hot Reload and profiler, wherever it runs.\n\nEvery service under the debugger\n\nDebug holds each .NET service at its start, attaches inside its container and lets it go, so a\nbreakpoint in Main stops. Each service gets a Debug tab with its log as its console, and\nHot Reload reaches them all. A code change needs no image rebuild, and Rerun restarts only the\nservices whose build changed.\n\nAspire's IDE\n\nRun or debug an AppHost and Aspire asks Passenger to start each project. The Aspire window shows its\nresources, their consoles, logs and traces, charts each one's metrics and draws the AppHost as a\ngraph, and its code help checks every connection string against the AppHost.\n\nFrom a service's row, or the run icon beside it in the compose file: debug it, attach to it, restart\nor profile it in its container while the others run on.\n\nThe Containers window\n\nCompose projects and their services, containers, images, volumes and networks: logs, stats, files,\ndetails and a shell.\n\nCompose files, understood\n\nEach ${VAR} shown as it comes out, names completed, renamed and checked, and a connection\nstring a service never gets warned of, with its fix.\n\nImages published and checked\n\nPublish ships the SDK's container image, several tags and platforms, to your registry. An image's\nknown vulnerabilities show through your own Docker Scout, when you ask.\n\nYour engine, as it is\n\nDocker Desktop, Colima, OrbStack, Rancher Desktop, Podman or a remote engine, through your own\ndocker command.\n\nNothing left behind\n\nStop, closing the folder or a crash takes down what a run started. Your own containers are never\ntouched without asking.\n\nWeb apps and their data\n\nSee every request your app serves, with its SQL\n\nFor ASP.NET Core and EF Core: what your app serves and what it asks of the database, as it runs,\nwith no change to the app.\n\nLive requests and their queries\n\nThe Requests window lists each request a running app serves, and the database commands it ran, with\ntheir times and rows. A command run again for every row (an N+1) or a slow one is marked; a request\nopens at its handler, or at the exception that ended it. It works for Run, Debug and Profile, and for\nthe services of a compose run or an AppHost.\n\nEF Core migrations that run\n\nThe Migrations window lists each context's migrations and whether the database has them: add, remove,\nupdate, script and bundle. Before dotnet ef runs it finds what would stop it (the\ntool missing or of another version, the Design package, a provider behind) and offers the fix. During\na compose run or an AppHost, it works on the database that run uses.\n\nEndpoints from your code\n\nMinimal APIs, controllers, Razor Pages, Blazor, SignalR and gRPC routes read from the code with no\nbuild, each sent to the running app from its icon. An app's OpenAPI document becomes requests, each\nresponse checked against it.\n\nLogs, traces and settings\n\nTurn on Collect logs and traces and a project's run shows its OpenTelemetry logs and traces beside its\nconsole. appsettings.json and user secrets complete the keys your code reads, and a\nstopped EF Core query shows its SQL in the debugger.\n\nThe rest\n\nEverything else a full .NET IDE has\n\nPassenger is .NET from the window to the debugger, over the libraries a C# IDE\nneeds: Roslyn, MSBuild, ICorDebug, EventPipe, VSTest and Microsoft.Testing.Platform.\n\nComing from Visual Studio? Visual Studio's keys are the default, chords included.\nComing from VS Code or IntelliJ IDEA, choose its keymap in Settings.\n\nA full .NET IDE on the Mac. Visual Studio for Mac was retired in August 2024. Passenger\nruns natively on Apple Silicon, and its debugger attaches with nothing to set up.\n\nThe editor and C#\n\nA text control of its own over an immutable rope: multiple carets, folding, soft wrap, live, postfix\nand surround templates, inlay hints, and splits and tabs in windows of their own. A key costs what it\nchanged, not the file's size.\n\nC# comes from Roslyn: diagnostics, completion, signature help, quick fixes and refactorings such as\nChange Signature, Extract Interface, Move and Safe Delete, Go to Declaration, Implementation and Base\nSymbols, Find Usages, hierarchies and decompiled library sources. Problems lists the whole solution's\nwithout a build, and Razor and Blazor files get C# and HTML help together.\n\nGit\n\nThe Commit window with its changes, the log with its branch graph and branches, side-by-side diffs with\nthe changed words marked, blame, change bars in the gutter that roll a change back, the history of a\nfile, a folder or a selection, stashes, push, pull and fetch, conflicts resolved in a three-way\nmerge, and commits signed with SSH, GPG or X.509.\n\nFind anything\n\nSearch Everywhere, Go to File, Go to Symbol and Find Action. Find and Replace in Files across the\nsolution, a project, a folder or a scope, with a file mask and a preview. Find Usages in a window of its\nown, Recent Files and Recent Locations, bookmarks and File Structure.\n\nShow Usages\n\nEvery use of the symbol at the caret in a popup over the code, its own file's first, each with its\nline, a C# member's uses in XAML among them. Choose one to go there, or keep them all in the Find\nwindow. A click with a modifier, or a mouse button of its own, runs any action you bind to it.\n\nProject files\n\nIn a .csproj, .props or .targets: completion of elements,\nproperties, items and their values, and of package ids and versions from your feeds, the version going to\nDirectory.Packages.props under central package management. A property's hover shows its\nevaluated value and where it was set.\n\nThe web languages\n\nJavaScript, TypeScript, HTML, CSS, SCSS, Less, JSON, Dockerfiles and YAML through their language\nservers: completion, checks, navigation and formatting, TypeScript on the project's own version and\nJSON against its schema. ESLint's problems show as you type with its fixes, the project's own\nPrettier formats on Reformat Code and on save, and a class attribute completes from every stylesheet\nthe page uses.\n\nYour page, as you write it\n\nAn HTML file previews beside its markup in your system's own web view, following each edit and\nkeeping your place as you type. Markdown and SVG files preview beside their text the same way, an\nSVG with the images it names.\n\nResources and translations\n\nA .resx opens as a table of its keys, values and comments, each cell written in place,\nand an XLIFF file as its units' sources, targets and states. A localizer's keys complete in your C#,\nand a key a language lacks is warned of where the code reads it, its fix asking for the\ntranslation.\n\nBuild, run and publish\n\nA Solution view as MSBuild evaluates it, builds with their errors in Problems, run configurations from\nyour launch profiles, consoles whose stack frames link to their lines, and Publish to a folder, a\ncontainer image or an AppHost's own deploy steps.\n\nUnit tests\n\nxUnit, NUnit, MSTest and TUnit, through VSTest or Microsoft.Testing.Platform: found from the code before\nany build, run marks in the gutter, any test debugged, and results kept across restarts. A failed\nAvalonia headless test (xUnit v3) carries a picture of each window as it was.\n\nLocal History\n\nEvery version of your files Passenger has seen, for five days of work, whatever Git knows: compared,\nlabelled and put back.\n\nNuGet\n\nThe feeds your nuget.config names, packages installed, updated and removed per project,\ncentral package management, and vulnerable versions marked with the lowest that fixes them.\n\nTerminal\n\nA terminal emulator of its own with a shell per tab, where vim, less and htop run full-screen. A console\nprogram can run and be debugged in it.\n\nPreviews and tables\n\nImages zoom, SVG and HTML files preview, fonts open as previews, and CSV, TSV and Excel workbooks\nopen as tables that sort and that Find searches.\n\nWindows and layout\n\nTool windows docked or floating, editor tabs split or in windows of their own, and a window for each\nsolution.\n\nNew projects\n\nNew Solution and New Project offer every template dotnet new has, with their\noptions, and a Godot 4 game of Passenger's own.\n\nUpdates\n\nEach new release downloads in the background and installs as Passenger closes, then shows what's\nnew, on Windows, macOS and Linux.\n\nMake it yours\n\nTwelve looks, each dark and light\n\nPassenger's own in the app icon's blue, Harbour's teal on linen, and Sorbet, Nocturne, Saffron,\nBonbon, Ledger, Slate, Orbit, Nightjar, Moss and Phosphor, each checked for contrast and following your\nsystem or your choice. Every file has an icon of its own, in each look's colours, and the editor's and\nthe terminal's fonts are yours to choose.\n\nFor teams\n\nReady for your company's code\n\nPassenger works with what your team already has in the repository, and asks nothing of your\ncompany.\n\nPrivate feeds\n\nThe feeds your nuget.config names, with their credentials or a credential provider such\nas Azure Artifacts', and package source mapping, as restore reads them.\n\nVulnerable packages\n\nVersions with a known advisory marked from your feeds' audit data, with the lowest version that\nfixes them.\n\nShared run configurations\n\nRun configurations come from the launch profiles, compose files and AppHosts in the repository, and\nWrite to Launch Profile puts a change back there for everyone.\n\nYour .editorconfig\n\nIndentation, line endings, charset and Reformat Code follow it, file by file, and the status bar\nsays where a file's indent came from.\n\nSigned commits\n\nCommits signed with SSH, GPG or X.509 as your Git configuration asks, the passphrase asked in\nPassenger, and each commit's signature shown in the log.\n\nAgents for the whole team\n\nA .mcp.json committed to the repository gives every Claude Code user there Passenger's\ntools.\n\nNothing to sign up for\n\nNo account, no licence server and no telemetry: nothing to approve but the licences its notices\nlist, and nothing sent about your code.\n\nQuestions\n\nIs it really free? What's the catch?\n\nIt is free and open source under the MIT licence, for work and personal projects alike, with no paid\nedition, no trial and no account. There is no catch to find in the code: it is all\non GitHub, and the notices list every package and\nasset it carries, each with its licence: two Microsoft assemblies inside Roslyn's server aren't\nopen source.\n\nIs it ready for daily work?\n\nPassenger is young (0.3.0), and its own development runs through it every day: the coding agents\nthat write much of it work through its MCP server. Its tests drive the whole IDE, a window with real\nkeys and clicks, on macOS, Windows and Linux, and each release is tried on a standing set of real\nGodot projects. Each release's notes say what it does and its known limits, so you can judge for\nyour own projects.\n\nWhich systems and projects does it run on?\n\nWindows (x64 and Arm64), macOS on Apple Silicon, and Linux (x64 and Arm64), with a .NET SDK from 8 for your projects.\nIt works with modern .NET (CoreCLR): console, ASP.NET Core, Blazor, Avalonia and WPF projects, Godot 4\ngames in C# and GDScript, and the services of a compose file or an Aspire AppHost. .NET Framework, Mono and Unity aren't\nPassenger's.\n\nWhich Godot does it need?\n\nAny Godot 4 for GDScript, and Godot's .NET build for C#, found from GODOT, the PATH or\nyour applications, or named in Settings. The Game window takes Godot 4.4 or newer (4.5 or newer on\nmacOS). The Godot page says the rest.\n\nDoes it need an account or send data?\n\nNo account, no sign-in and no telemetry. Passenger reaches the network only for what you use (your\npackage feeds, a JSON file's schema, a Dockerfile's base image) and once a day to ask GitHub whether\na newer release is out, sending nothing but its version, which Settings can turn off.\n\nHow are bugs reported and fixed?\n\nIn GitHub's issues: say what you did, what\nyou expected and what happened, with the log (Help, Show Log). Fixes land on main and ship\nin the next release's notes.\n\nCan my coding agent use it?\n\nYes: Passenger is an MCP server for Claude Code, Codex, OpenCode and any agent that can add one.\nSet it up in a minute.\n\nA .NET SDK for the projects you open,\n.NET 8 or later. It builds and runs them with it; without one, it says what is missing and\ninstalls one in a step once you agree. Its own language server, project host and debugger run on\nthe .NET it carries, whatever the machine has.\n\nNode.js, for JavaScript, TypeScript, HTML, CSS,\nJSON, Dockerfiles and YAML: 22.22.2 or later for TypeScript. C#, XAML, GDScript and shaders do\nwithout it.\n\nGodot 4, for Godot games (its .NET build for C#), found from GODOT,\nthe PATH or your applications, or named in Settings.\n\nChrome, Edge or another Chromium browser, for debugging Blazor's WebAssembly.\n\nA container engine running Linux containers (Docker Desktop, Colima, OrbStack,\nRancher Desktop, Podman or a remote engine), only for compose files, Dockerfiles and an AppHost's\ncontainers.\n\nEvery release, with its notes and its SHA256SUMS, is on\nGitHub.", "url": "https://wpnews.pro/news/passenger-the-free-ide-for-c-and-net", "canonical_source": "https://passenger-ide.net/", "published_at": "2026-11-09 13:07:09+00:00", "updated_at": "2026-11-09 13:22:26.722472+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents"], "entities": ["Passenger", "Godot 4", "C#", ".NET", "GDScript", "Blazor WebAssembly", "Avalonia", "WPF"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/passenger-the-free-ide-for-c-and-net", "markdown": "https://wpnews.pro/news/passenger-the-free-ide-for-c-and-net.md", "text": "https://wpnews.pro/news/passenger-the-free-ide-for-c-and-net.txt", "jsonld": "https://wpnews.pro/news/passenger-the-free-ide-for-c-and-net.jsonld"}}