Skip to content

PackageInfo.xml ​

Every package ships a manifest describing itself to the Server/Console:

xml
<?xml version="1.0" encoding="utf-8"?>
<Package Name="DayInfo" Version="0.0.0" Author="Your Name"
         URL="https://example.com"
         Description="What this package does"
         Icon="icon.jpg"
         ExecutableFilename="OrbitMesh.DayInfo.dll"
         Runtime="DotNet">
  <Settings>
    <Setting name="TimeZone" isRequired="true" type="Int32" description="UTC offset" />
    <Setting name="ApiKey" isRequired="true" type="Password" description="Third-party API key" />
    <Setting name="Configuration" isRequired="true" type="JsonObject" description="Structured config">
      <defaultContent>{ "RefreshIntervalSeconds": 900 }</defaultContent>
    </Setting>
  </Settings>
  <Dependencies>
    <Dependency name="OrbitMesh.Common" version="1.0.1" />
  </Dependencies>
  <Compatibility dotNetTargetPlatform="net10.0" />
</Package>

Version is a placeholder. It's stamped from the project's own .csproj <Version> at build time - see Building release artifacts. You maintain the version number in one place.

Runtime (DotNet or Python) declares which Edge runtime ExecutableFilename needs. Defaults to DotNet if omitted. An Edge refuses to start a package declaring the other runtime, rather than trying and failing to launch it - see the Python SDK/Edge for building a Python package.

Setting types ​

typeMeaning
Boolean, String, Double, Int32, Int64, DateTime, TimeSpanPlain scalar, parsed with GetSettingValue<T>
PasswordSame storage as String - only changes how the Console renders/masks the field
JsonObjectFree-form JSON, read with GetSettingAsJson<T>()
XmlDocumentFree-form XML, read with GetSettingAsXmlDocument()
ConfigurationSectionAn arbitrary nested config block

Use defaultValue="..." for a scalar default, or a <defaultContent> element for a multi-line JSON/XML default (as shown above).