Guides
Publish an app
From GitHub, a zip or a single HTML page, from the portal or from a coding agent over MCP.
From the portal
In the portal, click Publish an app. It opens on a conversation that asks one question: where does the code live right now?
| Your answer | What cyantula does |
|---|---|
| It is already in a GitHub repository | Lists the repositories your connected GitHub account can reach, then publishes the one you pick |
| There is no repository yet | Creates a repository in the company's GitHub organisation, seeded with the platform's best practices, with write access for you |
| It is only on my computer | Creates the repository and shows a drop zone. You drop a zip of the folder. It lands as one commit and is deployed |
It proposes the name, the web address and the description itself. Anything that changes something stops for a Confirm that shows the exact action.
Prefer a form? Go to /new?mode=form: paste the GitHub URL, pick colleagues, add a logo or description, pick the branch and the security type (identity headers, the default, or OAuth). A server without an Anthropic key shows this form instead of the conversation.
No GitHub account is needed to publish. If you have not connected one, cyantula keeps the repository for you: upload new versions as a zip on the app's page, or let cyantula's coding agent make the changes. Connecting GitHub under Profile is optional and only adds direct git access, for example to edit the app in Claude Code. Feedback on an app works the same way: without a connected account, cyantula posts it for you and puts your name on it.
A single HTML page needs no container. A zip with an index.html and nothing to build, or a single .html file, is served straight from the gateway and is live the moment it is deployed.
What happens next
cyantula clones the code, uses your own Dockerfile if the repository has a working one (otherwise writes one), builds, starts and health-checks the app. When the build or start fails, it reads the logs and tries again, up to a set number of times. Missing required settings pause the deploy and the owner gets an email with a direct link. The app goes live at https://<slug>.<apps domain>, behind the sign-in.
From a coding agent
From a coding agent instead of the portal (Claude Code shown; any MCP client takes the same address):
claude mcp add --transport http cyantula https://<portal>/mcpThen /mcp, choose cyantula, Authenticate: a browser opens, you sign in and approve the agent. The agent can now publish an app, upload a zip when it cannot push to GitHub, deploy, wait until the app answers a real request, and read the deploy log. A machine without a browser can use a personal access token from Profile, Coding agent.
New versions
After that, a new commit does not go live on its own: cyantula notices it and tells the owner, who clicks Deploy (in the portal, or in Slack when Slack is set up). The new version starts next to the old one and only takes traffic once it answers. Switch on a dev address (https://<slug>--dev.<apps domain>) if you want a copy that follows every commit.