> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fimo.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Sites and onboarding

> Create a Fimo site, choose its framework and package manager, or connect an existing application.

Use `fimo init` for a new site. Use `fimo link` when you already have an application and want to keep its code and Git history.

<a id="create-a-project" />

## Create a site

<Tabs>
  <Tab title="npm">
    ```bash theme={null}
    npx fimo@latest init my-site --package-manager npm
    ```
  </Tab>

  <Tab title="Bun">
    ```bash theme={null}
    bunx fimo@latest init my-site --package-manager bun
    ```
  </Tab>

  <Tab title="pnpm">
    ```bash theme={null}
    pnpm dlx fimo@latest init my-site --package-manager pnpm
    ```
  </Tab>

  <Tab title="Yarn">
    ```bash theme={null}
    yarn dlx fimo@latest init my-site --package-manager yarn
    ```
  </Tab>
</Tabs>

The interactive setup signs you in, creates the site, asks for a framework and package manager, installs dependencies, and can set up Fimo skills for your coding agent.

Next.js App Router is the default. You can choose React Router, Vite with React, Astro, or SvelteKit:

```bash theme={null}
fimo init my-react-site --framework react-router
fimo init my-site --framework vite
fimo init my-site --framework astro
fimo init my-site --framework sveltekit
```

`--framework react-router` selects Fimo's canonical React Router template. The
default Next.js shell is also React-based, but uses the Next.js App Router.

See [Frameworks](/docs/cli/frameworks) before choosing an integration.

## Choose a package manager

The setup can use pnpm, npm, Yarn, or Bun. The tabs in the create-site command pass the matching
`--package-manager` value, so setup does not need to ask again. Omit the option when you want the interactive picker.

Commit the selected lockfile. If the site has no lockfile, set an exact `packageManager` value in `package.json`. `fimo validate` reports missing or conflicting package-manager signals before a deploy.

Fimo currently supports pnpm 11.x and earlier for publishable sites. `fimo validate` rejects pnpm 12 or newer. Pin an exact supported version, reinstall dependencies, and commit the updated lockfile before deploying.

## Connect an existing application

Run this in the application's root directory:

<Tabs>
  <Tab title="npm">
    ```bash theme={null}
    npx fimo@latest link
    ```
  </Tab>

  <Tab title="Bun">
    ```bash theme={null}
    bunx fimo@latest link
    ```
  </Tab>

  <Tab title="pnpm">
    ```bash theme={null}
    pnpm dlx fimo@latest link
    ```
  </Tab>

  <Tab title="Yarn">
    ```bash theme={null}
    yarn dlx fimo@latest link
    ```
  </Tab>
</Tabs>

The command links the folder to a new or existing Fimo site. It does not replace your application or change its framework.

To clone a Fimo site that already has code, use:

<Tabs>
  <Tab title="npm">
    ```bash theme={null}
    npx fimo@latest clone <projectId> [directory]
    ```
  </Tab>

  <Tab title="Bun">
    ```bash theme={null}
    bunx fimo@latest clone <projectId> [directory]
    ```
  </Tab>

  <Tab title="pnpm">
    ```bash theme={null}
    pnpm dlx fimo@latest clone <projectId> [directory]
    ```
  </Tab>

  <Tab title="Yarn">
    ```bash theme={null}
    yarn dlx fimo@latest clone <projectId> [directory]
    ```
  </Tab>
</Tabs>

`fimo clone` fetches the code and links the folder, but does not install dependencies. For the full path from a site in Fimo to a running local site, follow [Work on your site locally](/docs/get-started/work-locally).

<a id="move-a-project-to-another-organization" />

## Move a site to another organization

Run this from the site directory, or pass the site ID explicitly:

```bash theme={null}
fimo projects transfer --to acme-studio
fimo projects transfer <projectId> --to <organizationId> --yes
```

`--to` accepts an organization ID or slug. You need full access on the site and
admin or owner access in **both** organizations, and the destination organization
needs an active plan: your personal organization qualifies on Free, a team
organization needs a paid plan.

The site keeps its ID, code, content, history, domains and URLs.
Idle and paused agents move with it, keeping their definitions, paused state,
schedules and webhook URLs. New runs belong to the destination organization;
past runs and charges remain with the previous organization. Everyone who
had access through the previous organization loses it, pending site invites are
revoked, and you keep full access. When you run the command inside the site,
`.fimo/project.json` is updated to the new organization.

<Warning>
  Integrations do not move with the site. A connection is an agreement between a provider and the organization that made
  it, so the transfer disconnects every integration on the site and deletes its stored credentials before the site
  changes hands. Reconnect them in the new organization afterwards.
</Warning>

While the transfer is running, Fimo Studio and other CLI actions for that
site return a temporary `project_transfer_in_progress` error. Retry after the
transfer finishes. An expired transfer automatically stops blocking the site.

Some state cannot follow a site across organizations, so the transfer is
refused until you clear it:

| Reported reason | What to do |
| - | - |
| `agent_work_in_flight` | Wait for queued and running agent runs to finish. |
| `unsettled_agent_holds` | Wait for credit holds to settle. |
| `unsettled_usage_ledger` | Wait for runtime or schedule compute to settle. |
| `source_registered_domain` | Move or release the domain the current organization owns. |
| `project_integrations_present` | An integration could not be disconnected. Remove it manually, then retry. |
| `concurrent_transfer` | Another transfer is already running. Wait, then retry. |

Add the global `--json` flag for the machine-readable result. A refusal is
reported as `error.code` with the API's own reason in `error.details.reason`:

| `error.code` | When |
| - | - |
| `PROJECT_TRANSFER_IN_PROGRESS` | Another transfer is using the site. Retry shortly. |
| `PROJECT_TRANSFER_BLOCKED` | One of the reasons above; the codes are in `error.details.blockers`. |
| `ORGANIZATION_FORBIDDEN` | You are not an admin or owner of the destination. |
| `ORGANIZATION_NOT_FOUND` | The destination does not exist, or you do not belong to it. |
| `SUBSCRIPTION_REQUIRED` | The destination organization has no active paid plan. |
| `PROJECT_NOT_FOUND` | The site does not exist or is no longer available. |
| `PROJECT_TRANSFER_FAILED` | The transfer could not be completed; retry or inspect the details. |
| `ORGANIZATION_LOOKUP_FAILED` | Your organizations could not be listed, so no transfer was tried. |

## Continue building

After setup, enter the site and use its selected package manager:

<Tabs>
  <Tab title="npm">
    ```bash theme={null}
    cd my-site
    npm run dev
    npm exec -- fimo validate
    ```
  </Tab>

  <Tab title="Bun">
    ```bash theme={null}
    cd my-site
    bun run dev
    bunx --no-install fimo validate
    ```
  </Tab>

  <Tab title="pnpm">
    ```bash theme={null}
    cd my-site
    pnpm dev
    pnpm exec fimo validate
    ```
  </Tab>

  <Tab title="Yarn">
    ```bash theme={null}
    cd my-site
    yarn dev
    yarn fimo validate
    ```
  </Tab>
</Tabs>

Your coding agent should read `AGENTS.md`, then load the `fimo-code` skill before changing content models, forms, or framework integration.

For non-interactive setup and all available flags, see the [CLI reference](/docs/reference/cli).

## What's next

<Columns cols={3}>
  <Card title="Add content" icon="database" href="/https/fimo.ai/docs/cli/content">
    Create editable page and collection content.
  </Card>

  <Card title="Add a form" icon="rectangle-list" href="/https/fimo.ai/docs/cli/forms">
    Collect and review submissions.
  </Card>

  <Card title="Set up your coding agent" icon="plug" href="/https/fimo.ai/docs/ai/connect-agents">
    Connect a coding tool to Fimo on this machine.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.