Reference

Resource Manifest

The app metadata, runtime, resource, and release file contract.

For agents: Create manifest.userland.json with app, runtime, and optional resources. The CLI adds release files when publishing a directory.

Minimal Manifest

{
  "app": { "name": "Recipe Box", "visibility": "public" },
  "runtime": {
    "static_root": "public",
    "server_entry": "server/index.js",
    "fallback": "server"
  },
  "resources": {}
}

Do not expose raw platform resource configuration in this manifest.

Top-level fields

When publishing with the CLI, manifest.userland.json does not include release files. The CLI reads the directory, builds the files array, infers content types, and sends a publish request to the API.

App

{
  "name": "Recipe Box",
  "summary": "A recipe CMS with a public site and admin editor.",
  "visibility": "public",
  "tags": ["recipes", "cms"]
}

Runtime

{
  "static_root": "public",
  "server_entry": "server/index.js",
  "fallback": "server"
}

Resources

{
  "auth": { "mode": "app_users", "roles": ["admin", "editor"] },
  "data": {
    "collections": {
      "posts": {
        "fields": {
          "title": "string",
          "slug": "string",
          "status": { "type": "enum", "values": ["draft", "published"] }
        },
        "indexes": [{ "name": "by_slug", "fields": ["slug"], "unique": true }],
        "access": { "read": "public", "write": "role:editor" }
      }
    }
  },
  "secrets": { "required": ["OPENAI_API_KEY"] },
  "jobs": { "send-digest": { "trigger": "manual", "max_attempts": 3 } },
  "webhooks": {
    "github": {
      "provider": "github",
      "secret": "GITHUB_WEBHOOK_SECRET",
      "deliver_to": "server"
    }
  }
}

Use /schemas/resource-manifest-v0.schema.json as the machine-readable schema for manifest.userland.json.