# Quickstart

> Connect your coding agent to an InstaCloud project and deploy something, in about five minutes.

This guide takes you from no account to a coding agent deploying on InstaCloud. You need a coding agent (Claude Code, Cursor, Codex, or any other) and Node.js 18 or newer. No Dockerfile is needed until the last step.

<Steps>
  <Step title="Create an account" titleSize="h2">
    [Sign up](https://console.instacloud.com/signup) with GitHub, Google, or email. Already have an account? [Sign in](https://console.instacloud.com/signin) and go to the next step.
  </Step>

  <Step title="Create a project" titleSize="h2">
    In the console, click **Create Project**. The console opens the project's **Quick Start** page, which prints the setup command for this project with its project id already filled in.

        Prefer to stay in the terminal? Skip the console. This creates a project named after the current directory and links it in the same run:

    ```bash
    npx -y insta@latest agent setup --create
    ```
  </Step>

  <Step title="Connect your agent" titleSize="h2">
    Copy the prompt or the command from the console, or use either form below with your project id.

    <CodeGroup>

    ```text title="Prompt" wrap
    Fetch and execute the appropriate instructions to set me up for InstaCloud from https://instacloud.com/prompt.md. Project id: <project-id>.
    ```

    ```bash title="CLI"
    npx -y insta@latest agent setup --project <project-id>
    ```

    </CodeGroup>

    Both do the same work. The `insta` CLI is installed globally, the `insta` skill and the remote MCP server are registered for every coding agent on this machine, the console opens in your browser once so you can approve the sign-in, and the current directory is linked to the project. Both are safe to run again.

    <Note>
      Setup targets production. Machines without Node, native Windows shells, and the staging deployment are covered in [Set up your coding agent](https://www.instacloud.com/docs/agents/setup).
    </Note>
  </Step>

  <Step title="Verify" titleSize="h2">
    Start a new agent session so it picks up the MCP server, then ask it to check the wiring. Or run the check yourself.

    <CodeGroup>

    ```text title="Prompt" wrap
    Check my InstaCloud setup: run insta status and call insta_whoami.
    ```

    ```bash title="CLI"
    insta status
    ```

    </CodeGroup>

    Either way you should see the environment, the signed-in user, and the linked project and branch:

    ```text
    env:     prod
    api:     https://api.instacloud.com
    user:    you@example.com
    project: 7d3c2a10-5b8e-4f61-9a2c-0e4f6b1d8c35 (branch main)
    ```

    If the agent gets answers from both `insta status` and `insta_whoami`, the CLI, the skill, and the MCP server are all wired. In Claude Code, `claude mcp list` also shows `insta-cloud` as connected.
  </Step>

  <Step title="Deploy something" titleSize="h2">
    Hand the work to the agent. Pick the prompt that matches where you are:

    <Tabs>
      <Tab title="I have an app">
        Run your agent in the app's directory. Source deploys build from a Dockerfile, so the app needs one.

        ```text wrap
        Deploy this app on InstaCloud with a Postgres database wired in.
        ```
      </Tab>
      <Tab title="Start from scratch">
        Run your agent in an empty directory.

        ```text wrap
        Build a todo app with Postgres for the data, then deploy it on InstaCloud and send me the live URL.
        ```
      </Tab>
    </Tabs>

    The agent adds the services, wires the database credentials into compute, and deploys. When it finishes it reports the service URL. You approve the sign-in, and the agent drives the rest.

    <Accordion title="CLI: the commands the agent runs">
      The same commands work by hand:

      ```bash
      insta services add postgres db
      insta services add compute app
      insta secrets bind DATABASE_URL postgres/db --to compute/app
      insta deploy .
      ```

      `services add` creates each service on the current branch. `secrets bind` injects the Postgres connection string as `DATABASE_URL` when compute deploys. `deploy .` builds the directory remotely from its Dockerfile and prints the URL. Ports, regions, images, and build troubleshooting are in [Build & deploy](https://www.instacloud.com/docs/deploy/overview). On self-hosted InstaCloud OSS, `secrets bind` answers `501`: every compute container already receives each service's credentials under their own names (`insta secrets list` names them).
    </Accordion>

    No Dockerfile and no agent at hand? In the console, open the project's **Services** page, click **Add Service**, and choose **Deploy a Template**.

      </Step>
</Steps>

## Next steps

<CardGroup cols={2}>
  <Card title="Postgres" icon="database" href="https://www.instacloud.com/docs/postgres/overview">
    A real, isolated Postgres server per project that scales to zero and branches in seconds.
  </Card>
  <Card title="Storage" icon="box-archive" href="https://www.instacloud.com/docs/storage/overview">
    An S3-compatible bucket per branch, forked with the branch.
  </Card>
  <Card title="Compute" icon="server" href="https://www.instacloud.com/docs/compute/overview">
    Run any container in a microVM, always on or scaling to zero.
  </Card>
  <Card title="MCP tools" icon="plug" href="https://www.instacloud.com/docs/reference/mcp-tools">
    The `insta_*` tools the MCP server exposes, grouped by area.
  </Card>
</CardGroup>
