Dashboard · Screens
Deployments
Your front end is built in your own repository and uploaded to Manybases. Manybases runs no build of your code, and keeps no copy of it. The whole flow — connect GitHub, link the repository, add the workflow, push — is in Deploy from GitHub; this page describes the screen.
The screen has two tabs: Manybases (the site hosted on manybases.online) and Third-party (the app hosted anywhere else).
Manybases tab#
The screen shows four facts and a list: which repository is linked, where the app answers, the site's own address, and what happened to the site. Linking a repository and obtaining the workflow are done by your agent (link_repo, get_deploy_workflow); the screen shows the result.
The three tiles#
- repository — the repository linked to this project (
owner/name), or why there is none:- no repository linked — "Link one from your agent. Until you do, a push from any repository is refused."
- no GitHub account — "Connect GitHub from Integrations, then link a repository from your agent."
- GitHub account removed — every GitHub account you connected was removed on GitHub. Disconnect the removed account from Integrations → GitHub, then connect GitHub again.
- could not be read — "We could not read your GitHub connection just now. Reload in a moment."
- A repository is shown but a note says its GitHub account was removed on GitHub: pushes from that repository are refused. Disconnect the removed account from Integrations → GitHub, connect GitHub again, then link the repository from your agent.
- site address — the readable address of the site we host for this project,
https://<subdomain>.manybases.online, or why there is none:- no address yet — the project has neither been deployed nor claimed a name.
- could not be read — we could not read the subdomain registry just now. It does not mean the project has no address; reload in a moment.
- An address is shown without a link, and a note says the edge has not picked it up yet: the name is already yours and will not change, but it answers
404for at most a few more minutes, with nothing for you to do. The derivedproj-…address serves in the meantime.
- app url — the project's app URL, or "not set yet". It reads "app url" and never "site", because it is a declaration of the owner and can point at a front hosted elsewhere. The first site deployment fills it in when it is empty and never replaces a value that exists; taking the site down clears it only if it still pointed at that site.
Unlink#
Shown when a link exists, a removed one included. Unlink for good withdraws this repository's right to deploy again; the site already deployed keeps serving. This is the one gesture of the flow that has no tool and needs a signed-in human, and this screen is its only home.
History#
Deployments, removals and refused attempts, newest first, fifty per page. A filter above the list — All events, Deployments, Removals, Refused attempts — is part of the URL, so it can be shared and the Back button works. An unrecognised filter in the URL lists every event and says so.
Each line carries:
- the event — Deployed, Removed or Refused;
- its source: "From
owner/name" on a deployment, "Removed by", or "Attempted from" on a refusal; "Deployed with an account key", "Removed with an account key", "Attempted with an account key" when a key made the call directly; or "Source was not recorded for this deployment / removal / attempt" for older lines; - its facts: the file count and size of a deployment, whether a removal found a site or it was already gone and whether the app URL was cleared, the status and error code of a refusal — and, on a refusal, the request id the workflow printed in its log, which is how you match the refusal you received to the line you read;
- when it happened, relative for the last 30 days, absolute beyond.
Empty states say what they mean: "Nothing has happened to this site yet", "No deployments (or removals, or refused attempts) are recorded for this site", "There is nothing older than this page". Three notices can replace the list: the project is still being set up (its history will be readable when it is ready); the history could not be looked at (if your key is limited to certain projects, it may not cover this one); the history could not be read just now (on our side — reload). One entry that cannot be read hides the whole page rather than the gap.
This history is not guaranteed complete, and it cannot tell you when it is incomplete: refusal lines are written under a rate limit counted per IP, so during a burst a legitimate refusal may never have been recorded. An absent refusal is not proof that a push was accepted.
What the screen no longer shows#
The workflow file, the numbered steps and the repository selector left this screen: linking and obtaining the workflow are an agent's gestures, and the guide carries the workflow in full. Three facts that used to be notices here still hold: a deployed site is public the second the upload succeeds; Manybases keeps the record, not the files — to roll back, run the workflow again on an earlier commit; and uninstalling the app on GitHub stops deployments only within about ten minutes, where unlinking or disconnecting stops them at once. See Deploy from GitHub.
Third-party tab#
A publishable key in the browser, a secret key on your server: your app talks to this project's API directly, from any origin. Four steps, each with a copy button:
-
API URL — this project's data API; every call from your app goes here. It is the
urlofcreateClient(url, key). -
Keys — a ready publishable key, shown once at creation (lost it? rotate it from API keys); or a notice that none is ready, with the panel on the left to create one. Every publishable key signs users up, whether you or your agent created it (until 2026-09-07 one issued by an agent could not). Secret keys are server-side only, created and rotated from API keys by a signed-in human.
-
Environment variables — paste into
.env.local, then the same three in your host (Vercel: Project → Settings → Environment Variables) and redeploy:NEXT_PUBLIC_MANYBASES_URL=<the project's API URL> NEXT_PUBLIC_MANYBASES_PUBLISHABLE_KEY=pk_… # paste the value shown once at creation MANYBASES_SECRET_KEY= # server-side only — never with a public prefix -
Code —
npm install @manybases/js, a browser or server client with the publishable key, and a server-only client with the secret key that sees every row.
What to expect. 300 requests per minute per key, shared by every visitor of your app. The browser keeps the user's session in localStorage — your CSP protects it. No automatic retry, no idempotency key unless you ask for one. Details in Host elsewhere.
