Skip to content
Theme

Publish an extension

Pointman’s marketplace lists the extensions on GitHub that are ready to install, at pointman.ai/extensions and in the apps. Nobody submits anything: the marketplace finds your repo by its topic and lists its newest release.

Terminal window
gh repo edit acme/pointman-greeter --add-topic pointman-extension
git tag v0.1.1 && git push origin v0.1.1

Once the release is published, greeter is listed if:

  1. The repo is public and has the topic pointman-extension. It’s named pointman-<id>, with the id in its extension.toml.
  2. It has a release tagged v<version>, with the version in its extension.toml, that isn’t a draft or a prerelease. The marketplace lists the newest one.
  3. Its extension.toml is at the top of the repo and passes core’s checks, the same ones core runs when it adds an extension to your catalogue. Every rule is in the extension.toml reference. It needs something a node runs: a [run], [behavior] or [client] table.
  4. It’s small enough: at the tag, GitHub’s download of the repo is at most 20 MB, and 2,000 files or 50 MB unpacked, with no symbolic links.
  5. A compiled one has a build for every platform in platforms, as release assets named <id>-<version>-<platform>.tar.gz, each at most 50 MB. The template’s release workflow attaches them: see Write an extension.
  6. Its id is its own. The first publisher to list an id keeps it, and the ids of Pointman’s own extensions are reserved.

Your publisher is the GitHub account that owns the repo, a person or an organisation. Every extension it lists shows on its publisher page.

The marketplace looks at GitHub every 30 minutes, so a new release is listed within half an hour. Pages and search can take another five minutes to catch up.

Each new release replaces the listed version. Earlier ones stay in its list of versions, with their release notes.

It isn’t listed when What to do
The repo is private or hasn’t got the pointman-extension topic Make it public, and add the topic
The repo’s name isn’t pointman- and the manifest’s id Rename the repo, or change the id
It has no release, or only drafts and prereleases Publish the release
The tag isn’t v and the version in extension.toml Bump version, then tag v<version>
extension.toml isn’t at the top of the repo, or breaks a rule, such as an unknown field or a summary over 200 characters Fix it against the reference and release again
It has none of [run], [behavior] or [client], so there’s nothing for a node to run Add the one it needs
The repo is too big at the tag, or has a symbolic link Move big files out of the repo, and replace links with the files
A compiled one is missing a platform’s build, or a build is over 50 MB Attach every platform in platforms, or take the platform out
Another publisher listed the id first, or it’s one of Pointman’s Pick another id, and rename the repo to match
Pointman has blocked the repo or its publisher Blocks are rare, and each is kept with its reason

Each listed extension gets a page of its own, on the web and in the apps. It’s made from your repo at the release’s tag:

On the page From
Name, summary, version and platforms extension.toml
What it adds and asks for: commands, panes, settings, accounts and permissions extension.toml
The README The repo’s README, with relative links and images made absolute
Versions Each release, with its notes
The icon icon.png at the repo’s root
Keywords The repo’s topics, without pointman-extension
Licence and homepage The repo’s licence and its website, as GitHub has them
Stars The repo’s stars

Set the topics and the homepage on GitHub:

Terminal window
gh repo edit acme/pointman-greeter --add-topic greetings --homepage https://acme.example.com/greeter

People install it from its page: Install in the apps, or the pointman add acme/pointman-greeter line and Open in Pointman on the web.

A community extension needs an owner of the workspace. In the apps, Install shows an “unverified publisher” warning for them to confirm. With pointman add, the command asks the owner for approval on their device first. Official and verified ones are added in one step.

Put a PNG named icon.png at the root of the repo, beside extension.toml:

pointman-greeter/
extension.toml
icon.png # square, 256×256, at most 256 KiB
README.md

The marketplace takes it from the release’s tag. It must be a PNG of at most 256 KiB, and it’s shown at 256×256, so make it square. Without one, the page shows a monogram of the extension’s name.

Tier Whose extensions Badge
Official Repos of the pointman-ai organisation Official, with Pointman’s mark
Verified Publishers Pointman has checked: who they are, and a review of their extensions ✓ Verified
Community Everyone else whose release is listed none

Verified goes with the publisher, not the extension: once acme is verified, every extension it lists shows ✓ Verified, including the ones it lists later.

Pointman keeps the list of verified publishers itself, with the reason each one is on it: who the publisher is, how that was checked, and which of its extensions were reviewed.