Skip to main content

Manifest overview

Your manifest file defines how your code integrates with the Root platform. Your manifest includes your metadata, deployment instructions, community-configurable settings, and permissions. Root reads the manifest, validates it, and uses it to determine how to package and run your code.

Example​

{
"id": "xxxxxxxxxxxxxxxxxxxxxx",
"version": "1.0.0",
"package": {
"client": {
"deploy": "client/dist"
},
"server": {
"launch": "server/dist/main.js",
"deploy": [
"server/dist",
"networking/gen/server"
],
"nodeModules": [
"server/node_modules"
]
}
},
"settings": {
"groups": [
{
"key": "general",
"title": "General",
"items": [
{
"key": "moderators",
"title": "Moderators",
"description": "Select the roles and members who can moderate this app.",
"required": true,
"confirmation": "Save",
"roleOrMember": {
"selectBehavior": "roleMultiAndUserMulti",
"userIds": [],
"communityRoleIds": []
}
}
]
}
]
},
"permissions": {
"community": {
"manageRoles": true
},
"channel": {
"createMessage": true
}
}
}

Name and location​

Your manifest must be named root-manifest.json. The file must be located directly in your project folder so the Root SDK tooling can find it.

What it captures​

  • Identity and version A unique ID and a semantic version so Root can track, publish, and update your code safely.

  • How to run your code Where the compiled code lives and how to launch the server. Root uses this to package, deploy, and start your code.

  • Community settings surface Settings that community members with the Manage Apps permission can see and change. This lets Root generate a settings UI without you writing forms.

  • Required permissions The access your code needs in order to run correctly. Root uses this to ask admins for consent during installation and to enforce access at runtime.

File format​

Your manifest is a JSON file. At the top level, the manifest includes:

FieldStatus
idRequired
versionRequired
packageRequired
settingsOptional
permissionsOptional

How Root uses it​

  • During publishing Validates structure, checks versioning, and prepares the bundle based on the paths you declare.

  • During installation Shows permissions and settings derived from the manifest so admins know what they are allowing.

  • At runtime Determines how to launch your code and gates Root API calls based on the permissions you requested.