Publishing a plugin
Publish an Athanor plugin to the directory: who may publish, the four Publish steps, automatic screening, human review, updates and Ed25519 signing.
Who may publish
To publish, your arbastro account needs:
- to be signed in;
- a verified email address ("Verify your email address before publishing a plugin." otherwise);
- two-step sign-in or a passkey ("Add a passkey or two-step sign-in to your arbastro account before publishing a plugin." otherwise).
By submitting, you agree to the Plugin Developer Terms and the Review Guidelines. Read both before your first submission. You can submit up to 20 versions a day.
Before you start
- Give the plugin its real id. Templates start as
local.my-plugin. Changeidinmanifest.jsonto something that is yours, likeyourname.compound-numbers, before the first submission: the id is the plugin's identity for its whole life, and no other account can publish under it. - Set the version. Plain
MAJOR.MINOR.PATCH, such as1.0.0. Every submission needs a version number you have not submitted before. - One logic file, one window file. What is uploaded is the manifest, the
mainfile and theuifile. Anything else in the folder is not. Put styles and scripts for the window insideui.html. - Keep it readable. Submit the code as written, not one minified line.
Open the Publish window
- Turn on developer mode (see Build your first plugin) and import or create the plugin, so it runs as a Development plugin.
- Open the Plugins window (Plugins in the top bar › Browse plugins…, or Main menu › Object › Plugins › Browse plugins…) and choose the Development tab.
- Select Publish… on your plugin's row.
The Publish window shows a Listing preview on the left, exactly as the directory row will read, and the four steps on the right.
The four steps
1. Describe
| Field | Rule |
|---|---|
| Name | At most 60 characters |
| Tagline | One line: what it does for a chemist. At most 100 characters |
| Description | At most 8,000 characters |
| Category | Export and import, Analysis, Teaching, Reference, Biochemistry, Spectroscopy, Productivity or Fun |
| Tags | Up to 8, separated by commas |
2. Icon and images
Pick the plugin's icon from Athanor's own icon set. The listing preview updates as you choose.
A listing can also carry a gallery of up to 8 screenshots that show the plugin at work. You upload them as the developer, and they appear on the listing once the version is approved.
3. Permissions and data
For every permission in the manifest, say why the plugin needs it, in one line (up to 200 characters). The reason shows on the listing next to the permission. A submission with a permission and no reason cannot be sent.
Then answer the two data questions, which also show on the listing:
- Does it send any document content anywhere? Where?
- Does it store anything? For how long, and who can see it?
4. Details
| Field | Rule |
|---|---|
| Support contact | Required: an email address or a URL, up to 200 characters |
| License | Up to 60 characters. Starts as MIT |
| Release notes | Up to 4,000 characters. What changed in this version |
Select Submit for review. Until everything required is filled in, the footer says "Still needed:" and lists it.
Automatic screening
Every submission is screened on the server the moment it arrives, before anyone looks at it. The Publish window then shows the checklist, one line per check, and you can see it again later under Development.
| Check | If it fails |
|---|---|
The id looks like author.plugin-name |
Refused |
The version is like 1.0.0 |
Refused |
| Written for plugin API 1 | Refused |
| It has a name of 60 characters or fewer | Refused |
| Every permission is one Athanor knows | Refused |
The internet permission names its sites, with no * |
Refused |
| The package is 5 MB at most | Refused |
| No structure in the code is one the safety screen refuses | Refused |
| The listing text passes the community filter | Refused |
No eval or new Function in main.js |
Goes to review with the finding |
No reaching past the athanor API (importScripts, XMLHttpRequest, WebSocket, indexedDB, localStorage, document.cookie, window.parent, window.top) |
Goes to review with the finding |
Every http:// or https:// address in the code is a declared site |
Goes to review with the finding |
| The code is readable (not one minified line) | Goes to review with the finding |
| Every permission says why it is needed | Goes to review with the finding |
| A support contact is given | Goes to review with the finding |
| The data questions are answered | Goes to review with the finding |
A refused submission is not stored. Fix what the checklist names and submit again. The safety screen looks at every SMILES-like string in main.js and ui.html; a plugin may not ship structures the app itself refuses.
Human review
A first version, and any version that goes to review, waits for a moderator. The moderator sees the checklist, the permissions with your reasons, the data answers, your support contact and your release notes, and then:
- Approve: the version is signed and published.
- Request changes: with a note saying what to change.
- Reject: with a note saying why.
You get an email with the result, and the Development tab shows the status beside the version: In review, Published, Changes requested or Rejected, with the moderator's note. The Review Guidelines say what reviewers look for.
Updates
Submit a new version the same way, with a higher version number.
- A code-only update (the same permissions and sites, or fewer) of a published plugin that passes every automatic check goes live at once and is signed. The Publish window says "Version v is live: a code-only update that passed every automatic check. A moderator looks at it afterward."
- An update that adds a permission or a site waits for human review. After it is approved, each person who installed the plugin must also OK it before it runs for them; until then their approved version keeps running.
- An update with any failed check goes to review.
- A rejected update leaves the published version published.
- A plugin that was taken down cannot take new versions.
Signing
Every version Athanor publishes is signed with Athanor's plugin key, using Ed25519, at the moment it is approved. The signature covers the plugin id, the version, the SHA-256 hash of the uploaded package, and the permissions and sites the version declares. So a package cannot be swapped, renumbered or given more access without the signature failing.
When someone installs or updates your plugin, Athanor downloads the package from its own storage (never from your server), checks its hash against the version record, and verifies the signature with the public key built into the app. A package that fails either check is not loaded: "This version is not signed by Athanor, so it was not installed."
Development plugins, the ones you create or import on your own device, are unsigned. They run only on that device and are never synced or shared.
After publishing
- Your plugin appears in Discover and on athanor.arbastro.com/plugins, with Open in Athanor.
- People can rate and review it. Only you can reply to a review, and you can turn reviews off.
- People can report it. When three independent reports are open, it is hidden from Discover until a moderator looks. A moderator can delist a plugin (hidden from the directory) or take it down (turned off everywhere, checked when Athanor starts and every six hours).
Is this helpful?
Last updated Nov 11, 2026
- Still stuck? Read the FAQ or contact support.
- Something wrong on this page? Tell us.
- For AI tools: llms.txt
