Appendix
Something went wrong
Everything Comet can refuse to do is on this one page, filed under the exact words it puts on your screen. Find your words, read the two paragraphs underneath, carry on.
How to use this page
- Copy four or five distinctive words from the message on your screen.
- Press Ctrl+F (Cmd+F on a Mac) and paste them in.
- If nothing matches, use the list below, which groups the entries by chapter.
Messages that contain a number — an HTTP 502, a file name, a database
name — are shown here with that part replaced by …. Match the words,
not the numbers.
Jump to
- Chapter 1 — getting it online
- A page of code starting
<?php - 500 Internal Server Error
- 403 Forbidden
- 404 Not Found
- A completely blank white page
- The address bar starts
file:/// HOST SERVED RAW PHP SOURCENo candidate handler produced a newer PHPworked for a single file but not for the whole installCannot fetch api/probe.php over HTTPmarker did not come backhandler accepted but PHP version did not change.htaccess … is not writable by PHP- Chapter 2 — claiming and login
This install was already claimeddid not present its setup keyThis install has not been claimed yetCould not create api/data/setup.key- You are suddenly signed out
- Chapter 3 — database and publishing
Invalid database nameis missing the required "comet-" prefixThat name is already taken on MaincloudCould not determine availabilityNot approved yetdid not return a login request tokenno sessionToken came backCould not exchange the approved sessiondid not issue an anonymous tokencame back with issuerwould discard it and strandNo SpacetimeDB token is storedcomet.wasm is missing from this installdoes not start with the WebAssembly magic numbercomet.wasm could not be readPublishing to Maincloud failedMaincloud rejected the tokenbelongs to a different SpacetimeDB identitycannot make outbound HTTPS requestsno stored SpacetimeDB token to export- The site is very slow, once
- Chapters 4 and 5 — site and pages
- The public site shows the old version
- Publishing reported a failure
- An upload is refused
Chapter 1 — getting it online
On screen<?php … define('COMET_MARKER', 'COMET_PHP_OK');
What it means. Instead of a website you are looking at the inside of Comet's files as plain text. Your host is not running PHP for this folder — it is handing the files straight out. This is the most important entry on the page: on a live site this leaks things that were meant to stay private.
Fix it
- Sign in to your hosting control panel.
- Open MultiPHP Manager (in cPanel it is under Software; other panels call it PHP Selector or PHP Version).
- Tick the domain or subdomain your Comet folder lives under.
- Set the PHP version to 8.0 or newer. If the list only offers 7.x, pick the highest available — Comet runs on old versions too.
- Press Apply, then reload your Comet address.
If your panel has no such screen
Open a support ticket with your host and ask, word for word: “Please make PHP run for my domain — .php files are currently being served as plain text.” That sentence tells them exactly what is wrong. Meanwhile, delete the Comet folder or password protect it, because it is publicly readable in this state.
On screen500 Internal Server Error
What it means. Your host's web server rejected a line in the settings file that came with Comet. It is a common, harmless difference between hosts, and it is one line to remove.
Fix it
- Open your control panel's File Manager and go into your Comet folder.
- Turn on hidden files: Settings → Show hidden files (dotfiles).
- Right-click
.htaccessand choose Edit. - Find a line that begins with
AddHandler. Delete that whole line. Leave everything else exactly as it is. - Save, then reload your Comet address.
If the error persists, delete the .htaccess file entirely and reload. Comet
still runs without it; you lose only some tidiness in the web addresses. Tell your host that
their server rejects AddHandler lines and ask what they use instead.
On screen403 Forbidden — You don't have permission to access this resource
What it means. Usually you have opened a folder that has no front page, for example
the api or assets folder. Comet blocks folder listings on purpose so
that strangers cannot browse your files.
Fix it
- Check the address. You want the folder Comet was extracted into, ending in a slash —
for example
example.com/comet/, notexample.com/comet/api/. - If the top-level Comet address itself gives 403, the file permissions are wrong. In File Manager, set folders to 755 and files to 644 for the Comet folder and everything inside it. Most panels have a “recursive” tick box for this.
On screen404 Not Found
What it means. There is nothing at that address. Nine times in ten the folder is one level deeper or one level shallower than you think.
Fix it
- In File Manager, look at the actual path. A common outcome of unzipping is
public_html/comet/comet/— a folder inside a folder of the same name. If you see that, move the inner folder's contents up one level. - Confirm
index.htmlis directly inside the folder you are opening. - Remember the trailing slash:
example.com/comet/.
On screenA completely blank white page
What it means. The page loaded but Comet's own code did not, which almost always
means the assets folder did not upload completely.
Fix it
- In File Manager, open the
assetsfolder. It should contain several files, none of them zero bytes. - If it is empty or short, upload the
.zipagain and use Extract rather than dragging loose files over FTP. - Reload with a hard refresh: Ctrl+Shift+R, or Cmd+Shift+R on a Mac.
In the address barfile:///C:/Users/…/index.html
What it means. You double-clicked Comet's index.html on your own
computer. Browsers refuse to run a program loaded this way, so Comet cannot start. This is a
browser security rule and there is no setting that changes it.
Fix it
Upload the folder to your web host and open it by its web address, as
chapter 1 describes. The address must begin
http:// or https://.
This guide is different — it is ordinary pages, so reading it from a folder is fine.
If you only want a look first
You can run Comet on your own computer without a web host, but it takes one command.
Open Terminal (macOS) or PowerShell (Windows), type cd with a
space after it, drag the unzipped Comet folder onto the window, press Enter, then run:
python3 -m http.server 8000
Now open http://localhost:8000/. Leave that window open while you use Comet;
closing it stops the site.
What you will not get this way. Your computer is not running PHP, so image uploads and the search-engine copies of your pages will not work — both need a real web host. Everything else does. Treat it as a preview, not a home.
Comet saysHOST SERVED RAW PHP SOURCE — handler not installed. Rolled back.
What it means. You asked Comet to switch your folder to a newer PHP version. It tried one, immediately tested the result, found your host serving the file as plain text instead of running it, and undid the change. Nothing is broken: your install is exactly as it was a second ago.
What to do
Do not retry the same option. Set the PHP version from your control panel instead — follow the steps in the entry above — and then reload Comet. It will see the new version and stop offering the upgrade.
What it does not mean
It does not mean your site leaked anything. Comet tested with its own probe file, which contains nothing private, and reversed the change before any other page could be requested.
Comet saysNo candidate handler produced a newer PHP. The .htaccess has been restored exactly as it was.
What it means. Comet tried every way it knows to ask your host for a newer PHP, and none of them worked. Your host does not support that method, or has no newer PHP installed. Your files are untouched.
What to do
Nothing, if the host check is otherwise green — Comet runs happily on the version you have. If you would like a newer one, set it from your control panel's MultiPHP Manager or ask your host to.
Comet saysThe handler worked for a single file but not for the whole install. Rolled back.
What it means. The new PHP version worked for one test file but not across the whole folder — usually because a parent folder's own settings override yours. Comet undid the change rather than leaving your install half-switched.
What to do
Set the PHP version from your control panel for the whole domain instead of from inside
Comet. If you host several sites in subfolders, check whether a parent folder has its own
.htaccess forcing a version.
Comet saysCannot fetch api/probe.php over HTTP from this server, so a handler change could not be verified or rolled back. Refusing to modify .htaccess.
What it means. Comet will not change your settings file unless it can immediately check the result and undo it if it went wrong. On this host it cannot reach its own address, so it declined to touch anything. This is caution, not breakage.
What to do
- Carry on with setup. This only blocks the optional PHP upgrade.
- If you want a newer PHP, set it from your control panel.
- The usual underlying cause is a host that blocks outgoing connections; see the outbound entry, because that will also affect chapter 3.
Comet saysmarker did not come back (HTTP …). Rolled back.
What it means. After trying a PHP setting, Comet asked its own probe page for a password-like marker and did not get it. The setting did not work, so Comet put your file back.
What to do
Same as above: set the PHP version from your control panel rather than from inside Comet.
If the number in brackets is 403 or 406, your host has a security
filter blocking Comet from calling itself; the rest of Comet is unaffected.
Comet sayshandler accepted but PHP version did not change
What it means. Your host accepted the instruction without complaint and then ignored it. Some hosts lock the PHP version centrally.
What to do
Set it from the control panel, or ask your host. Comet keeps working on the version you have.
Comet saysThere is no .htaccess and the install directory is not writable by PHP, so one cannot be created.
— or —
.htaccess exists but is not writable by PHP. chmod it to 644 and retry.
What it means. Comet is not allowed to write in its own folder. This will also stop it from claiming the install in chapter 2, so it is worth fixing now.
Fix it
- Open File Manager and find your Comet folder.
- Right-click it, choose Permissions (sometimes Change Permissions), and set it to 755.
- Do the same for
.htaccess, but set that one to 644. - Reload Comet and try again.
If the permissions look right and it still fails, the folder is probably owned by a
different user than the one your website runs as — that happens when files are restored from
a backup or copied by a host engineer. Ask your host to “fix ownership on my
public_html”.
Chapter 2 — claiming and login
Comet saysThis install was already claimed at …, and its setup key was issued once at that moment. It is NOT re-issued here, because rotating it would lock out an owner who is midway through setup. If you hold the key, send it as "key". If it is lost, or the claim was not yours, delete the single file api/data/setup.key on the server and call begin_setup again — that file holds only the setup key, so the stored SpacetimeDB token in api/data/comet-secrets.token is untouched.
What it means. Somebody has already pressed the claim button on this install. If that was you, on this computer or another one, your setup key still works — Comet simply refuses to print it twice.
If it was you and you have the key
Paste it into the box the wizard offers and carry on.
If it was you and you have lost the key
- Open File Manager and go to your Comet folder, then into
api, thendata. - Delete only the file
setup.key. - Reload Comet and claim again. You get a fresh key — save it this time.
Delete that one file, not the folder
Do not delete the whole api/data folder. The file beside it,
comet-secrets.token, is your database key. On a zero-signup (Door B) install
that key can never be issued again, and deleting it strands your database permanently.
If it was not you
Someone found your address before you claimed it. Delete api/data/setup.key
as above, claim it immediately, and then keep the address private until chapter 3 is
finished. If the site had already been published and claimed by that person, the safest
course is to delete the whole folder, re-extract the ZIP, and start again with a new
database name.
Comet saysThis install was already claimed and this request did not present its setup key. Send the key the wizard showed you as "key". If it was lost — or if the install was claimed by someone who is not you — delete the single file api/data/setup.key on the server (cPanel File Manager or FTP), then POST action=begin_setup to claim it again.
What it means. The same situation as the entry above, seen from a different button: Comet was asked to change something and the request did not carry the setup key.
What to do
Paste your setup key when the wizard asks. If it is lost, follow the delete-one-file steps
in the entry above — including the warning about deleting
only setup.key and never the api/data folder.
Comet saysThis install has not been claimed yet. POST action=begin_setup to claim it and receive its setup key. The key is shown once and is required by every call that changes anything.
What it means. Nobody owns this install yet. It is the normal state of a brand new Comet, and it is the state you want to leave as quickly as possible.
What to do
Press the claim button on the setup screen — the one the red banner points at — and save the key it shows you. Chapter 2 walks through it.
Comet saysCould not create api/data/setup.key — the install directory is not writable by PHP. Make it writable (755, owned by your account) and try again. Nothing was claimed.
What it means. Comet tried to write down that you are the owner and your host would not let it. Nothing changed, so you can safely try again after fixing the permissions.
Fix it
- File Manager → your Comet folder → Permissions → 755.
- Do the same for the
apifolder inside it. - Reload Comet and press claim again.
Still refused? Ask your host to check that public_html and everything under it
is owned by your own account. This is the same underlying problem as
the .htaccess permission entry.
SymptomComet has stopped recognising you — the editor is gone and you are back at a sign-in screen
What it means. Your day-to-day login lives inside the browser you claimed the site with. Clearing cookies and site data, switching browsers, switching computers, or opening a private window all mean Comet no longer knows you.
What to do
- First, try the original browser on the original computer, not in a private window. Very often that is all it takes.
- Otherwise, open Comet's recovery screen and type your recovery code — the
COMET-…code from chapter 3. - Comet issues a brand new code immediately. Save that one; the old one is now dead.
If the recovery code is lost too
There is still a way back: the console key stored inside your own database, readable from your SpacetimeDB dashboard. The three tiers are laid out in the table at the end of chapter 2. This route needs the account that owns the database, which is one of the reasons chapter 3 recommends signing in rather than going anonymous.
Chapter 3 — database and publishing
Comet saysInvalid database name "…". It must be "comet-" followed by lowercase letters, digits and single hyphens — no capitals, no underscores, no leading, trailing or doubled hyphen. Pattern: ^comet-[a-z0-9]+(-[a-z0-9]+)*$. Example: comet-acme-arts.
What it means. Your name has a character in it that database names cannot contain. Nothing was created; just edit the box.
Fix it
- Capitals → make them lower case.
comet-Acme→comet-acme. - Underscores or spaces → use hyphens.
comet-acme_arts→comet-acme-arts. - Two hyphens in a row → use one.
- A hyphen at the very end → remove it.
- Accented or non-English letters → use the plain English letters.
Comet saysThe database name "…" is missing the required "comet-" prefix. Every database Comet creates is named comet-<slug> so that you can find — and delete — them later on a SpacetimeDB account that may also hold databases Comet did not make.
What it means. The name is otherwise fine but does not start with comet-.
Comet insists on that prefix so that, months from now, you can look at a list of databases and
know instantly which ones are Comet's.
Fix it
Put comet- at the front, or clear the box and type only the part after it — the
setup screen adds the prefix for you.
Comet saysThat name is already taken on Maincloud (names are global, not per-account).
What it means. Somebody in the world already has a database with that exact name. There is one shared list of names for everybody, so this is not about your account.
Fix it
Add a distinguishing word: a town, a year, your initials.
comet-photos → comet-photos-newcastle. Comet checks as you type,
so you will know immediately.
Comet saysCould not determine availability (upstream HTTP …).
What it means. Comet asked whether the name was free and got no clear answer. Usually a brief hiccup at SpacetimeDB's end.
What to do
Wait half a minute and try again. If it keeps happening, your host may be blocking outgoing connections — see the outbound entry.
Comet saysNot approved yet. Approve the login in the tab that opened, then poll again.
What it means. Comet is still waiting for you to press Approve on spacetimedb.com. This is normal for the first few seconds.
What to do
- Switch to the other browser tab — the one at spacetimedb.com.
- Sign in if you have not, then press Approve.
- Come back to the Comet tab. It moves on by itself within a couple of seconds.
If the tab never opened, your browser blocked the pop-up. Look for a small blocked-pop-up icon at the right-hand end of the address bar, allow it, and start the sign-in step again.
Comet saysspacetimedb.com did not return a login request token (HTTP …).
What it means. Comet could not begin the sign-in conversation at all.
What to do
- Try again in a minute — the far end may be briefly busy.
- If the number is
0, your host is not letting Comet reach the internet: the outbound entry. - If it keeps failing and you need the site up today, you can use the zero-signup door instead — but read the price in chapter 3 first, because it cannot be undone later.
Comet saysThe login was approved but no sessionToken came back.
What it means. You pressed Approve, and the reply that came back was incomplete. Nothing was saved.
What to do
Start the sign-in step again from the beginning. It is safe to repeat: no database has been created yet and nothing has been charged or used up.
Comet saysCould not exchange the approved session for a SpacetimeDB token (HTTP …).
What it means. The approval worked but the final swap for a lasting key did not.
What to do
Start the sign-in step again. If it fails twice in the same way, sign out of spacetimedb.com in the other tab, sign back in, and retry — a stale session in that tab is the usual cause.
Comet saysspacetimedb.com did not issue an anonymous token (HTTP …).
What it means. The zero-signup door could not get a key. Nothing was created.
What to do
Try again in a minute. If it persists, use the sign-in door instead — it is the recommended one anyway, and it takes three minutes. If neither works, the cause is almost certainly blocked outbound connections.
Comet saysThe anonymous token came back with issuer "…", which Maincloud will not accept for creating a database. Use Door A (sign in) instead.
What it means. The zero-signup key came back in a form that cannot create databases. Comet stopped here rather than letting you find out at the last step.
What to do
Take the sign-in door, exactly as the message says. Nothing was created and nothing is lost.
Comet saysThis install already published "…" using a zero-signup (Door B) token. That token is the only credential that can ever update or delete that database — it does not appear in your SpacetimeDB dashboard. Signing in with an account now would discard it and strand "…" permanently. Download the current token first (action=export_token), or re-run setup against a new database name.
What it means. You already have a working database that was created without an account, and you are now signing in with one. Comet has stopped and changed nothing, because going ahead would have thrown away the only key to that database.
This is the one-way door that chapter 3 warns about. Signing in afterwards does not upgrade a zero-signup database; it abandons it.
What to do — pick one
- Stay as you are. Your site works. Press Cancel and carry on. Make sure you have downloaded your database key file and stored it safely.
- Move to an account properly. Download the current key first (Comet's Download my database key button), then run setup again with a new database name under your account. You are starting the site's content from scratch — pages do not transfer.
Whichever you choose, download the key file before touching anything.
Comet saysNo SpacetimeDB token is stored. Complete login_start/login_poll (Door A) or login_anon (Door B) first.
What it means. Comet was asked to create the database before it had a key to do it with — usually because a step was skipped, or the browser was reloaded midway.
What to do
Go back to the door-choosing step and complete it: either sign in and approve, or take the zero-signup route. Then the publish step will work.
Comet sayspackage/module/comet.wasm is missing from this install, so there is nothing to publish. Re-extract the ZIP.
What it means. The file that becomes your database did not make it onto your host.
Fix it
- In File Manager, look for
package→module→comet.wasm. - If it is not there, upload the original
.zipagain and use Extract over the top of your install. Nothing you have done so far is lost. - Reload Comet and press publish again.
FTP is the usual culprit: some clients quietly skip files they do not recognise. Extracting from the zip in File Manager avoids the problem entirely.
Comet sayspackage/module/comet.wasm does not start with the WebAssembly magic number — it was corrupted in transfer. Re-upload it in binary mode.
What it means. The file is there but damaged. An FTP program set to “ASCII” or “Auto” rewrites parts of files as it uploads, which ruins anything that is not plain text.
Fix it — the easy way
Upload the original .zip through File Manager and press Extract over
your install. Zip extraction never damages files.
Fix it — if you must use FTP
- In FileZilla: Transfer → Transfer type → Binary.
- Delete the damaged
comet.wasmon the host. - Upload it again, and check the file size on the host matches the one on your computer, to the byte.
Comet sayspackage/module/comet.wasm could not be read.
What it means. The file exists but Comet is not allowed to open it, or it is zero bytes.
Fix it
In File Manager, set comet.wasm's permissions to 644 and the
package and module folders to 755. If the file size shows as
0, re-extract the ZIP as in the entry above.
Comet saysPublishing to Maincloud failed (HTTP …).
What it means. The final step — creating the database — was refused. Comet shows a second, more specific sentence underneath; that sentence is what you should act on. The common ones each have their own entry:
Maincloud rejected the token— sign in again.belongs to a different SpacetimeDB identity— pick another name.Maincloud rejected the request.— usually a damaged module file; see the corruption entry.The request never completed— see the outbound entry.
What it does not mean
It does not mean you have half a database. Publishing either works or it does not; a failed attempt leaves nothing behind, and it is safe to fix the cause and press the button again.
Comet saysMaincloud rejected the token. It must be issued by https://auth.spacetimedb.com — re-run the login step.
What it means. The key Comet is holding is not valid for creating databases. Most often it has simply gone stale because setup was left half-finished for a long time.
What to do
Go back to the door-choosing step and sign in again. Approving a second time is harmless and costs nothing.
Comet saysThat database name already exists and belongs to a different SpacetimeDB identity. Names are a single global namespace on Maincloud, so this is a collision, not a fault. Pick another name — name_check reports it as taken before you get this far.
What it means. Somebody else already owns that name. It is not a bug and not a permissions problem with your account.
What to do
Choose a different name and publish again — see the taken-name entry for how to pick one.
One case where this is you
If you set the site up before with a zero-signup key and are now signed in with an account, the “different identity” is your own earlier anonymous key. See the stranding entry — do not simply force it through.
Comet saysno ext/curl and allow_url_fopen is off — this host cannot make outbound HTTPS requests
What it means. Your web host will not let Comet contact anything on the internet. It is a hosting restriction, not a Comet fault, and it blocks chapter 3 entirely — nothing you click will get past it.
Fix it
Open a support ticket with your host and ask, word for word: “Please enable the PHP cURL extension for my hosting account.” It is a standard request and usually takes minutes. Almost every host has it on already; if yours does not, this is the only thing standing between you and a working site.
If your host refuses, Comet cannot create your database there, and you will need hosting that allows outgoing requests.
Comet saysThis install has no stored SpacetimeDB token to export.
What it means. You pressed Download my database key before there was a key to download.
What to do
Finish the door step first — sign in and approve, or take the zero-signup route — and then download the key. If you took the zero-signup door, do not leave this until later: that file is the only handle on your database that will ever exist.
SymptomThe site takes several seconds to load, once, then behaves normally
What it means. Free databases go to sleep after about a week without visitors. The next visit wakes it, which takes a few seconds. Every load after that is normal again.
What to do
Nothing. Reload once. Nothing has been lost, nothing has expired, and there is no setting to turn back on. If a site matters enough that the very first visitor of the week must not wait, visiting it yourself every few days is enough to keep it awake.
Chapters 4 and 5 — site and pages
SymptomThe editor shows your changes, but the public site still shows the old version
What it means. Almost certainly that you have not pressed Publish. Comet keeps your work as a draft that only you can see, and publishing is what makes it public. This is by far the most common confusion in the whole product.
What to do
- Press Publish and wait for it to report success.
- Check again in a private or incognito window, not your normal one.
- Still old? Hard-refresh: Ctrl+Shift+R, or Cmd+Shift+R on a Mac.
The full explanation is in chapter 5.
SymptomPublishing reported a failure
What it means. Publishing writes files onto your web host, so it can fail the way any file operation can. Your site is still showing the previous version — which is the safe outcome, but it does mean nothing you just wrote is live.
Fix it, in this order
- Space. Check your hosting disk usage in the control panel. A full account is the most common cause. Delete old backups or unused media.
- Permissions. The Comet folder should be 755, owned by your account — the same fix as the .htaccess entry.
- Size. A very large site with many pages can take longer than your host allows for a single request. Publish again — the work already done is not repeated.
Always publish a second time after fixing something, and confirm success before you walk away.
SymptomAn image upload is refused, or never finishes
What it means. Either the file is larger than the 64 MB limit, or your host cut the upload short.
What to do
- Photographs straight from a camera or phone are far bigger than a website needs. Resize to about 2000 pixels on the long edge before uploading; it will look identical and load far faster.
- Check the file type. Comet takes ordinary web images — JPEG, PNG, WebP, GIF, SVG. It refuses anything that could run as a program, on purpose.
- If a modest file still fails, check your hosting disk space, as in the entry above.
Still stuck
Two things make any question you ask far easier to answer:
- The exact words on your screen, copied rather than described. “It says Publishing to Maincloud failed (HTTP 401)” can be answered immediately; “it does not work” cannot.
- Which chapter you were in, and what the last thing you pressed was.
And one reassurance: nothing on this page is permanent damage. The only truly irreversible situations in Comet are losing a zero-signup database key (chapter 3) and losing your recovery code and your database account together (chapter 2). Everything else can be retried.