Skip to main content
Run your app locally while you build it:
Open the printed URL, edit your code, and save. The app reloads in place. Every service your app uses in production also works locally. No Docker, no setup.

How it works

marina dev is driven entirely by the project’s marina.json, the same manifest a deploy uses. It requires two things: a signed-in CLI (marina setup) and a manifest with an entrypoint. A static project with no entrypoint has no handler to run locally; deploy it instead. Because the manifest drives both environments, code that works under marina dev behaves the same when deployed.

Where @marina/runtime comes from

You do not install it. The @marina/runtime import is supplied by Marina at build time: deployments and marina dev both resolve it to the same runtime files, so there is no package version to manage and nothing to add to package.json.

What works locally

Pages carry a small “local dev” badge identifying the local instance, and your app sees you as the signed-in user.

Using live data

Connection calls run as you, so access depends on your own permissions:
  • Admins can use every connection.
  • Other members need dev access on a connection, granted by an admin under Settings → Connections → Dev access. Without it, calls fail with dev access not granted.
  • Connections configured so that each person connects their own account require you to connect yours first, under Settings → Your connections. No dev-access grant is needed there.

Resetting local state

Local database, storage, and job state are disposable. Delete the .marina/dev directory in the project to reset all of it. The next marina dev reapplies migrations to a fresh database.

Troubleshooting