Deploy with an agent
Paste this page into your assistant and ask it to deploy. It can do all of it except one click.
If you are an assistant reading this for someone: everything below is runnable, in order, and you can do all of it. One step needs the person in front of you, and it is marked. Nothing here needs them to understand scopes, tokens or configuration.
1. Install the CLI
curl -fsSL https://marinahost.app/install.sh | sh Windows PowerShell:
irm https://marinahost.app/install.ps1 | iex It lands on the PATH and exits non-zero if it could not, so check the exit code rather than assuming.
2. Sign in (the one step that needs the person)
marina login One command, wherever you are running. If a browser opens on this machine, the person approves there and it finishes on its own. If there is no browser here, which is the usual case over SSH or in a sandbox, it prints a link and a short code instead.
When you see a link and a code, show the person both, verbatim, and wait. They open the link on whatever device they have, enter the code, and the command returns by itself. Do not retry it in a loop and do not run it again; it is already waiting for them.
To ask for the link-and-code flow outright, rather than letting it be decided for you:
marina login --headless Worth reaching for when the person is not at this machine even though it has a browser, or when you want the link to show them before anything opens.
3. Know what it will cost before you start
This is the step that catches agents out.
A static site is free. The first one on an account has no bill attached, so you can deploy one immediately with an empty wallet.
An app is not. Apps, databases, domains and email all cost money, and Marina is prepaid, so a create against an empty wallet is refused rather than queued. Check first:
marina wallet balance If it is empty and the person wants an app, run marina wallet topup and show them its output exactly as printed. It contains the number to send Mobile Money to and their own payment code. Do not paraphrase it and do not invent a code.
4. Deploy
A folder of built files, free:
marina sites deploy ./dist An app from the directory you are in:
marina vessels create myapp --dir . An app from a GitHub repo, which then redeploys itself on every push:
marina vessels create myapp --repo owner/name Each prints the URL it is live at. Marina works out how to build and start the code, so there is usually nothing to configure. When it guesses wrong, marina.toml is how you say what you meant.
5. When it refuses
Every command exits with a code worth branching on, and --json puts the same answer on stdout as a structured document.
| Exit | Meaning | What to do |
|---|---|---|
3 | Not signed in | Go back to step 2. |
5 | Money | The message carries the shortfall and the payment code. Show it verbatim and stop. |
4 | Not allowed | The credential lacks a permission. Stop; retrying cannot fix it. |
6 | Not found | Check the name with marina status. |
7 | Temporary | Worth one retry. |
2 | The command was wrong | A flag or argument. Read --help, do not guess. |
A build that fails is not any of those: the deploy returns, the previous version keeps serving, and marina logs has the reason.
After the first deploy
marina status # everything this account runs
marina deploy # ship the linked app again
marina logs --follow
marina db create store --engine postgres && marina db attach store To keep working on this account in later sessions without shelling out each time, set up the MCP server once. To give an unattended agent its own credential rather than the person’s, read tokens and scopes; neither is needed for what is above.
