Skip to content

Manifest Reference

manifest.json is the creator-facing description of a Vifu game. It should read like a game manifest, not an internal permission graph.

Minimal Game

json
{
  "name": "door-quest"
}

Only name is required. Vifu fills deployable defaults for manifestVersion, type, version, main.url, main.type, main.engine, main.sdk, and build.output. Add those fields only when the detected/default value is wrong for the project.

id is not required for deploy. Vifu resolves the deploy target from the signed-in owner and name, then updates the same game on repeated deploys from the same project.

AI-native Game

json
{
  "name": "AIventure",
  "title": "AIventure",
  "engine": "phaser",
  "description": "A Phaser adventure game with AI-driven NPC dialogue.",
  "tags": ["ai-native", "adventure", "phaser"],
  "category": "story"
}

Fields

FieldRequiredDescription
nameYesStable ASCII deploy name, such as door-quest.
manifestVersionNoDefaults to 1.
typeNoDefaults to game.
titleNoPlayer-facing display title. Defaults from name.
versionNoDefaults to 1.0.0.
engineNoCompact runtime engine hint such as phaser, three, or vanilla. Compiles to main.engine; explicit main.engine still wins.
descriptionNoShort player-facing description.
tagsNoSearch, taxonomy, and discovery tags.
mainNoBrowser entry and engine metadata. Defaults to index.html, static-web, vanilla, and sdk: auto.
buildNoLocal build command and output directory.
aiNoVifu AI is available through the SDK by default. Omit this field unless you intentionally need to disable AI or use a platform-specific override.
companionNoEnables/configures the companion bridge. Companion features are on by default; set a feature to false only to turn it off.
saveNoGame state persistence scope.
dictionaryNoDictionary language pairs and fields.
voiceNoSpeech input/output settings.
cameraNoCamera mode requested by the game.
reviewNoReview or grading subject and mode.
dataNoNamed runtime data files readable through vifu.resources.
mediaNoNamed runtime media files.
bundleNoAdditional files included in the shipped game bundle.
linksNoExternal links the runtime may open.
categoryNoPublic product family: language, knowledge, story, music, creative, wellbeing, or arcade. More specific words such as adventure belong in tags.
remixNoRemix access policy.

main

json
{
  "main": {
    "url": "index.html",
    "type": "static-web",
    "engine": "vanilla",
    "sdk": "auto"
  }
}
FieldDescription
urlEntry HTML file inside build.output.
typeUsually static-web.
engineInformational engine label such as vanilla, phaser, pixi, or three.
sdkUse auto when the runtime should inject/connect the Vifu SDK.

build

json
{
  "build": {
    "command": "npm run build",
    "output": "dist"
  }
}

vifu deploy runs build.command unless --no-build is passed, then uploads build.output after validation.

What Not To Put In V1 Game Manifests

These are internal or obsolete public concepts:

  • id
  • entry
  • play
  • runtime
  • services
  • devices
  • resources
  • permissions
  • capabilities
  • browser
  • security
  • schema

Use product nouns such as ai, data, media, bundle, links, save, dictionary, voice, camera, and review. The host compiles those into runtime policy internally.

Validate And Explain

bash
vifu manifest check
vifu manifest explain
vifu manifest explain --debug

Use --debug only when you need to inspect the compiled internal runtime policy.