Store & verification
Caspian's own catalogue lives at store.getcaspian.app. Extensions listed there are reviewed and signed by Caspian and carry a verified badge in the browser; everything else installs too, without the badge.
What the badge means
Where an extension can come from
Reviewed, signed, verified badge, updates from the store.
Installs from the listing with Add to Caspian. Runs unverified: Caspian trusts Chrome's review for what it is, but did not check it.
For development and private tools. Unverified — unless the package ships a Caspian verification file, see below.
Publishing
The store opens for submissions with Caspian 0.1.6. A listing is: your package (a .zip of the extension folder or a .crx), an icon, screenshots, a description, a support address, and the source repository if it is open. Review looks at permissions against what the extension does, at where it sends data, and at the code that runs on pages. Store extensions update through the store: publish a new version and installed copies pick it up.
Verification for sideloaded extensions
A package Caspian has reviewed can carry its verification with it, so a copy installed from a file (an enterprise's own distribution, a developer's own site) still shows the badge. It is one file in the package root:
{
"id": "abcdefghijklmnopabcdefghijklmnop",
"version": "1.4.2",
"sha256": "<sha256 of the package contents, as the store computed it>",
"issued": "2026-09-14T00:00:00Z",
"signature": "<Ed25519 signature by Caspian's store key, base64>"
}Caspian ships the store's public key. On install it hashes the package the same way, checks the signature over id · version · sha256 · issued, and only then shows the badge. Change a byte and the badge goes; the extension still runs, unverified. You cannot create this file yourself — it comes from the store for a reviewed version — but you can ship it with any copy of that version.
Ids and keys
Ids are Chrome's format, 32 letters a–p. A store listing keeps the id of the package's key (the same id the Chrome Web Store would give it), so an extension published on both stores has one id everywhere and chrome.runtime.id is stable. Unpacked folders get an id derived from their path, as in Chrome.
Store API (for tooling)
GET store.getcaspian.app/api/extensions lists the catalogue as JSON; /api/extensions/<id> gives one listing with its versions and package URLs; /verified.json is the signed list Caspian downloads. All three are public and cacheable.