Developer Guide: Deploy a dotnet App - EyevinnOSC/community GitHub Wiki
Deploy any ASP.NET Core application to Eyevinn Open Source Cloud using the My Apps .NET runtime. No Dockerfile needed — push your repository and OSC handles building and running your application.
The .NET runtime in My Apps supports ASP.NET Core applications. Push your repository to any HTTPS git host and OSC handles the rest: it builds your project and exposes a public HTTPS URL.
This is part of the My Apps feature — private deployment for code you own, without open sourcing it.
- An Eyevinn Open Source Cloud account
- An ASP.NET Core application in a git repository (public or private) on any HTTPS git host
Your application must:
- Listen on the port specified by the
PORTenvironment variable - Be an ASP.NET Core application
Example:
var builder = WebApplication.CreateBuilder(args);
var port = Environment.GetEnvironmentVariable("PORT") ?? "8080";
builder.WebHost.UseUrls($"http://0.0.0.0:{port}");
var app = builder.Build();
app.MapGet("/health", () => "OK");
app.Run();- Go to My Apps in the OSC dashboard
- Click Add application
- Choose I have a git repository and enter your HTTPS git URL, or choose I need a git repository to have OSC provision one for you
- Select .NET as the runtime
- Enter a unique application name (alphanumeric only, e.g.
mydotnetapp) - For private repositories, provide a git access token
- Click Deploy
OSC builds your application and assigns it a public HTTPS URL:
https://<appname>.auto.prod.osaas.io
If your .NET application lives in a subdirectory (e.g. src/Api), enter the subdirectory path in the Sub Path field. The build runs from that directory instead of the repository root.
If you have the OSC MCP server configured in your AI tool (Claude Desktop, Claude Code, Cursor, etc.), you can deploy with a natural language prompt:
"Deploy my .NET app from https://github.com/myorg/myapp as a .NET app named mydotnetapp"
For monorepo layouts:
"Deploy the .NET app at path src/Api from https://github.com/myorg/monorepo as a .NET app named myapi"
The recommended way to supply environment variables to your app is via a Parameter Store (config service). Values are injected at startup — no secrets committed to your repository.
- Create a parameter store in the OSC dashboard
- Add key-value pairs (e.g.
ConnectionStrings__DefaultConnection,MyApiKey) - Bind the parameter store to your app via the Config button on the My Apps dashboard, or ask your AI agent: "Bind the parameter store called myconfig to my app called mydotnetapp"
Check that your application listens on $PORT. OSC routes traffic to the port defined by this variable. A hardcoded port will cause the health check to fail and the app to appear unavailable.
Check the build logs via the AI agent ("Show me the logs for my app called mydotnetapp") or the get-my-app-logs MCP tool.
Ensure your app does not depend on local files or development-only configuration. All runtime configuration should come from environment variables, ideally via the parameter store.
- Deploy or Publish Your Application — Overview of all deployment paths
- Managing Custom Apps — Restart, rebuild, HA, and custom domains
- Parameter Store — Managing environment variables
- AI-Assisted App Management — Deploying and managing apps with natural language