The Steamship Manifest file

Steamship Manifest Files

Every Steamship package and plugin has a steamship.json file at its root that describes the project to Steamship.

At a minimum, when you create a new project, you should fill out the following fields:

  • handle
  • description
  • version
  • public

Plugin and package handles are globally unique across Steamship. They are how other code will refer to your project when using it.

The full list of fields is:

  • type - Either package or plugin. Tells Steamship how to interpret this project. A package is a user library that others import and use. It can define custom endpoints and do anything from process audio files to implement a calculator. A plugin is an extension to the Steamship Engine. Plugins follow a strict interface contract governed by their plugin type.
  • handle - A globally unique identifier for the package, consisting of lowercase letters, numbers, and dashes. This is the name by which you will refer to your package elsewhere in Steamship code.
  • version - The version of your project, in SemVer style (X.Y.Z or X.Y.Z-abc123). By default, the last version you deploy is the default used when new instances are created, but users can always specify an older version.
  • public - Whether users other than you can see and use this project.
  • author - Your name and contact information.
  • description - A short, one sentence description of the project’s purpose.
  • plugin - Plugin-specific configuration. See description here.
  • configTemplate - A schema for the configuration your project requires . See the configuration documentation for details.

Plugin Configuration

If your project is a Plugin, its steamship.json file contains a plugin variable that defines further parameterization that is specific to Plugins.

That configuration looks like this:

{
  "plugin": {
    "type": "tagger",
    "isTrainable": false
  }
}

That code shows the following required settings:

  • type - Either fileImporter, corpusImporter, blockifier, tagger, embedder, or exporter
  • isTrainable - Whether the plugin can be trained.

A trainable plugin obligates it to implement a few extra methods as a part of its contract with the Steamship Engine.

Steamship Registry

Steamship generates a public web listing for each public package and plugin. The steamshipRegistry block in your steamship.json file contains a fields which enhance this web listing:

That configuration looks like this:

{
    "steamshipRegistry": {
      "imageUrl": "Url of an image icon for your project",
      "tagline": "One short sentence that describes your project.",
      "tagline2": "One short sentence that elaborates on the tagline.",
      "usefulFor": "Useful for <insert your info here>.",
      "videoUrl": null,
      "githubUrl": null,
      "demoUrl": null,
      "blogUrl": null,
      "jupyterUrl": null,
      "authorName": "Name for Display on Steamship",
      "authorImageUrl": "Direct URL for author image",
      "authorGithub": "GitHub Account used for author image as backup",
      "authorEmail": null,
      "authorTwitter": null,
      "authorUrl": null,
      "tags": [
        "Tag1",
        "Tag2"
      ]
    }
}

All these fields are optional. When non-empty, your project’s web listing will gain additional UI features.