Skip to main content
Most apps with an index.html need no configuration. Add marina.json at the project root when you want to set initial app details, handle requests, or use Marina services.
marina.json

Manifest fields

The name and icon initialize a newly created app. After creation, change display metadata in the Marina dashboard; later code deployments preserve it.

Browser output

A project containing index.html can deploy directly. Projects with a package.json and a build script are built before deployment. Marina recognizes browser output in dist, build, out, public, or .output/public when that directory contains index.html.

Handle requests

Declare an entrypoint when the app needs to handle requests or use Marina runtime services:
marina.json
The entrypoint exports the handler passed to defineApp. Declare only the services that version uses:
marina.json
Only declare services the app uses. Adding a service to an existing app may produce a proposed version that a workspace publisher must approve before it can become live. Workspace connections are declared with the exact connection id and the operations the version may call on each:
marina.json
See Using connections in apps for validation, approval, and the calling API. App-specific credentials and direct HTTPS calls use runtime.secrets and egress.hosts:
marina.json
Secret names and allowed hosts belong to the immutable app version. Adding either may require publisher approval. See Managed secrets and outbound HTTPS for the runtime API, host matching rules, and CLI commands. To let CI jobs and other callers without a browser use the app, declare the scopes their app keys can carry:
marina.json

Object storage

Store files and JSON under an isolated application namespace.

Application database

Query managed SQL data and evolve its schema with deployment migrations.

Connections

Read your business systems through workspace connections.

Background jobs

Run durable work on a schedule or from a request.

AI

Generate text with managed models.

Temporary links

Open one route to a request without a browser session.

Secrets and egress

Store app credentials and call approved public HTTPS hosts.

Project linking

After the first successful deploy, the CLI writes .marina/project.json. This stable link tells future commands which Marina app the directory belongs to, even if its display name changes. Do not commit .marina/project.json. To target an app explicitly from an unlinked directory, pass --app <slug>.

Name precedence

When creating an app, the CLI chooses its name in this order:
  1. --name
  2. name in marina.json
  3. name in package.json
  4. The directory name