OpenModulePlatform (OMP) is a modular platform for defining, running, observing, and administering OMP instances, modules, app definitions, app instances, artifacts, hosts, and topology.
The public repository contains neutral platform code, first-party OMP modules, and neutral example modules. It does not contain customer-specific integrations, credentials, or domain-specific business components from previous internal projects.
The repository is now aligned on .NET 10 for active development, package versioning, and publish profiles.
For Windows/IIS hosting prerequisites and official Microsoft links, see Hosting OMP on Windows and IIS.
The repository is being prepared for the first public beta release: 0.1.0.
Version 0.1.0 should be treated as a stable public baseline for evaluation,
documentation, and iterative hardening, not as a feature-complete production platform.
OpenModulePlatform.Portal- Portal for navigation and manual administrationOpenModulePlatform.Auth- shared OMP authentication app for AD and local password sign-inOpenModulePlatform.Web.Shared- shared web infrastructure for the Portal and web modulesOpenModulePlatform.Web.ContentWebAppModule- first-party content module for simple OMP-managed information pagesOpenModulePlatform.Web.iFrameWebAppModule- first-party iframe module for exposing external or separately hosted web apps inside OMPexamples/WebAppModule- simple web module; app code lives inWebApp, SQL lives insqlexamples/WebAppBlazorModule- Blazor-based web module; app code lives inWebApp, SQL lives insqlexamples/ServiceAppModule/WebApp- web interface for the service-backed example moduleexamples/ServiceAppModule/ServiceApp- worker/service reference exampleOpenModulePlatform.WorkerManager.WindowsService- generic Windows worker manager for manager-driven worker appsOpenModulePlatform.WorkerProcessHost- generic child worker process host for plugin-based workersOpenModulePlatform.Worker.Abstractions- shared contracts for worker pluginsexamples/WorkerAppModule/WebApp- web interface for the manager-driven worker example moduleexamples/WorkerAppModule/WorkerApp- plugin-based worker reference examplesql/1-setup-openmoduleplatform.sqlandsql/2-initialize-openmoduleplatform.sql- neutral core schema, RBAC, default instance, host, and bootstrap dataOpenModulePlatform.Portal/sql/1-setup-omp-portal.sqlandOpenModulePlatform.Portal/sql/2-initialize-omp-portal.sql- Portal-owned schema and Portal registration dataOpenModulePlatform.Web.ContentWebAppModule/Sql/1-setup-content-webapp.sqlandOpenModulePlatform.Web.ContentWebAppModule/Sql/2-initialize-content-webapp.sql- content module schema and registration dataOpenModulePlatform.Web.iFrameWebAppModule/Sql/1-setup-iframe-webapp.sqlandOpenModulePlatform.Web.iFrameWebAppModule/Sql/2-initialize-iframe-webapp.sql- iframe module schema and registration dataexamples/**/sql/1-setup-*.sqlandexamples/**/sql/2-initialize-*.sql- optional example-module setup and initialization scriptsdocs/- architecture, terminology, release notes, and practical guidesdocs/CODEX_DEVELOPMENT.md- compact development guide for Codex/VS Code workflows
The current model explicitly separates:
- definitions -
Modules,Apps,Artifacts - concrete instances -
ModuleInstances,AppInstances - manual operations -
Instances,Hosts, artifacts, app instances, and RBAC - future automation/topology -
InstanceTemplates,HostTemplates, template topology tables, and deployment tables
omp.AppInstances is the central runtime table in the current model. It currently stores:
- host placement
- artifact selection
- configuration reference
- route, path, or public URL data
- desired state
- observed state, heartbeat data, and verification data
- The Portal can be used for manual administration of the core model
- RBAC can be administered from the Portal
- The Portal builds the app catalog from
AppInstances, not fromApps - The first-party content and iframe modules are usable OMP modules, not templates
- The example modules demonstrate pure web, classic service-backed, and manager-driven worker scenarios
- The service example reads runtime state from
AppInstancesand updates heartbeat and observed identity - The SQL scripts use a two-step setup/initialization layout per module
- The additive Windows worker runtime is implemented with manager, child host, OMP discovery, and observed runtime reporting
- The public examples now cover web-only, classic service-backed, and manager-driven worker patterns
- template materialization is not yet fully implemented
- HostAgent and worker runtime hardening is still ongoing
- the deployment tables are more preparatory than fully operationalized
- the configuration model is still module-owned and not yet fully formalized at the core level
- artifact distribution and installation are still outside the current worker manager scope
Create the OpenModulePlatform database in SQL Server.
Run the root OMP core scripts in order:
sql/1-setup-openmoduleplatform.sql
sql/2-initialize-openmoduleplatform.sqlSet @BootstrapPortalAdminPrincipal in 2-initialize-openmoduleplatform.sql to the local Windows user or group that should receive the initial Portal administrator role. The local installer patches this safely and can also seed multiple administrator principals by passing multiple values to -BootstrapPortalAdminPrincipal, for example both a Windows account name and its display-name form.
Run the Portal-owned setup and initialization scripts in order:
OpenModulePlatform.Portal/sql/1-setup-omp-portal.sql
OpenModulePlatform.Portal/sql/2-initialize-omp-portal.sqlSet the same @BootstrapPortalAdminPrincipal value in 2-initialize-omp-portal.sql, or use scripts/manage-local-install.ps1 so the local installer handles it.
First-party modules in the repository root are usable OMP functionality. Install the modules you want by running their module-owned SQL scripts in order:
OpenModulePlatform.Web.ContentWebAppModule/Sql/1-setup-content-webapp.sql
OpenModulePlatform.Web.ContentWebAppModule/Sql/2-initialize-content-webapp.sql
OpenModulePlatform.Web.iFrameWebAppModule/Sql/1-setup-iframe-webapp.sql
OpenModulePlatform.Web.iFrameWebAppModule/Sql/2-initialize-iframe-webapp.sql
Each example module owns its own SQL folder and follows the same two-file pattern:
examples/<module>/sql/1-setup-*.sql
examples/<module>/sql/2-initialize-*.sql
Run only the example modules you explicitly want in the local environment.
Set ConnectionStrings:OmpDb for the Portal and start OpenModulePlatform.Portal.
The Portal is the primary path for manual administration. Normal operation should not require direct SQL editing after the initial bootstrap.
In its current state, the Portal is divided into two tracks:
- Core and manual administration - Instances, Hosts, Modules, ModuleInstances, Apps, Artifacts, AppInstances, and RBAC
- Advanced automation - templates, deployment assignments, and deployments
A normal manual installation should be possible without requiring the future HostAgent or template materialization model.
- Architecture
- Authentication and RBAC
- Terminology
- Manual administration
- Project status
- Worker runtime
- Logging
- Hosting OMP on Windows and IIS
- Release notes
- Contributing
- Security policy
The repository includes:
- a GitHub Actions build workflow
- Dependabot configuration for NuGet packages and GitHub Actions
- repository hygiene checks for common local IDE files and generated artifacts
- central version metadata for the
0.1.0release line
The project is published under the MIT License.
This package includes a first HostAgent implementation:
OpenModulePlatform.HostAgent.WindowsServiceOpenModulePlatform.HostAgent.Runtime
HostAgent v1 provisions immutable artifact versions from a central artifact root to a local host cache and writes status to omp.HostArtifactStates. See docs/HOST_AGENT.md.