# Set up a Fimo site without an account

> Instructions for AI coding agents, from https://comprehensive-tomato-platypus-7db4113b83.apps.fimo.site. Nothing has been created yet. Follow these steps to create a working website on Fimo. No account, sign-in, or credit card is needed to start.

**Do not summarize this document.** If you pass it to another agent, relay it verbatim or tell that agent to run `npx fimo@latest new --instructions` to print it. The commands, flags, and paths below do not survive paraphrasing.

Fimo is an autonomous website platform. A coding agent builds the site, and Fimo runs everything after the build: a CMS that stores the content, a visual editor for the team, branches with previews, scheduled agents, and hosting. The code is a normal Git repository that belongs to the user.

Once you know what the site is, you can do this end to end without stopping. The one step you cannot do is the claim: the human opens a link in a browser, signs in or creates an account, picks an organization, and the project becomes theirs. They have 72 hours. Unclaimed projects and their content are deleted after that. The code on disk survives, but the hosted project does not. You give the human the claim link when you hand over the site. Claiming does not interrupt your work.

## 1. Decide what you are building

Do this before you create the project. The directory name and the framework both come from it.

- **What the site is.** If the human already said enough (a portfolio, a bakery, a product launch page), work from that. If you have nothing to go on, ask the human for a sentence or two about the site and wait for the answer before you create anything. Infer the rest from it and adjust as you go.
- **A small slice.** One or two pages and one or two content types the team can edit. For a bakery, that is a homepage with an editable hero and a `products` collection rendered as a list. A narrow site that works end to end is worth more than a broad one that half works.
- **The framework.** Next.js App Router is the default. Only if the human named another framework, plan to pass `--framework react-router`, `--framework vite`, `--framework astro`, or `--framework sveltekit`.
- **A directory name.** A short slug from the site, such as `bakery-site`. Use `my-site` if nothing better fits.

## 2. Check Node.js

The Fimo CLI needs Node.js 22 or later. Run `node --version`. If Node is missing or older, stop and tell the human. Do not install a version manager or switch Node yourself unless they ask.

## 3. Create the project

Run this from the folder that should contain the new site. `<dir>` must be a new or empty directory. Do not create it inside another Git repository.

```sh
npx fimo@latest new <dir> --yes --json
```

- `npx fimo@latest` runs the current CLI. Always pass `@latest`: an older `fimo` on this machine may not have the commands this guide relies on.
- `fimo new` creates the project without signing in. Do not run `fimo login` in this flow.
- `--yes` takes the defaults and asks nothing. A prompt you cannot answer is a hang.
- `--json` prints one JSON result you can read reliably.
- Add `--framework <name>` only if you chose one in section 1.

The command creates an unclaimed Fimo project, scaffolds the site into `<dir>`, and pushes the first commit. It saves a project token in `<dir>/.fimo/credentials.local.json`, which is gitignored, and records the project on this machine so you can recover it later.

Read these fields from `data` in the JSON result:

- `claim.url`: the link the human opens to claim the project.
- `claim.expires_at`: when the unclaimed project is deleted.
- `limits`: how long the project lasts, what stays locked until the claim, and the media upload limits.
- `token_file`: where the project token was written.

Then `cd <dir>`. Run every `fimo` command from inside `<dir>`: that is how the CLI finds the project token. In this guide, `fimo <command>` means `npx fimo@latest <command>`.

## 4. Keep the claim link for the handover

Do not send the claim link now. You give it to the human in section 9, once there is a site to look at. Only if your session could end before you finish, share it now instead.

Treat the claim link and the project token as secrets. Anyone who opens the link becomes the owner of the project. Never commit either one, and never paste them into issues, shared documents, or public chats.

Carry on to section 5.

## 5. Know what is different before the claim

Everything not listed here works like a normal Fimo project. A locked capability is refused with HTTP 403, usually with the code `project_unclaimed`, sometimes as a plain permission error. It is not a bug: do not retry it or work around it.

- **You act as a project token, not a user.** There is no account yet. Commands run inside `<dir>` use the token automatically.
- **Locked until the claim:** publishing to production, a `fimo.site` address, custom domains, generating images and videos, connecting integrations, invitations, schedules, Studio agents and AI credits, and creating branches or environments other than `main`.
- **Upload web images only.** `fimo assets upload` accepts JPEG, PNG, WebP, AVIF, and GIF images up to 5 MB each, at most 100 files and 50 MB in total. SVG, video, and other files are refused. Prefer web-optimized images, and use external URLs for anything else.
- **The database is small.** Content is capped at 100 MB until the claim, which is plenty for a site but not for bulk imports.
- **Previews work.** `fimo deploy` builds a hosted preview of `main`, which is how you show the site before the claim.

## 6. Load the Fimo skill

```sh
npx fimo@latest skills get fimo-cli
```

It covers content models, entries, local development, and deploys. Follow it for everything you build from here. Skip any sign-in or onboarding steps it describes: the project already exists. Read the project's `AGENTS.md` too, and load the skills it points to before you write content models or components.

## 7. Build a small working slice

Start the local development server with the project's own `dev` script (`pnpm dev`, or the equivalent for its package manager), then build the slice you planned in section 1. Store the editable text and lists as Fimo content (`fimo schemas` for content models, then entries) and render them on the page, so the team can edit the site in Fimo once it is claimed. Keep to the slice: something narrow that works end to end, with an obvious next step.

This is the site's first real generation, so it has to look designed, not scaffolded. Before you write components, run `npx fimo@latest skills get fimo-code --ref design`, write the short design brief it asks for, and build against it. Replace the starter's styles and layout entirely instead of restyling them. Keep the scope small, not the design.

## 8. Check it works

Deploy a hosted preview and look at it:

```sh
npx fimo@latest deploy -m "chore: first preview" --json
```

`fimo deploy` commits pending changes, pushes, and builds a preview of `main`. The envelope's `data.studio_url` opens the project in Fimo Studio. Run `fimo preview url --json` for the hosted site URL in `data.preview_url`, and confirm the page renders the content you created. Do not pass `--publish`: publishing is locked until the claim, and going live is the human's decision.

## 9. Hand over

Tell the human what you built and what you deliberately left out, then give them the next steps.

- **Claim the project.** Run `fimo claim --json` and give the human `data.claim_url` with the deadline in `data.expires_at`. Claiming takes about a minute: they open the link, sign in or create an account, and pick an organization. If `data.claim_state` is already `claimed`, say so instead. If the human is at this terminal, they can also run `fimo claim` themselves: it opens the link and confirms once the claim is done. The project moves into the organization they pick, everything you built comes with it, and your project token keeps working for 24 hours. After that, work through the human's account: they run `npx fimo@latest login`, and you delete `.fimo/credentials.local.json` so the CLI stops using the token.
- **After the claim** they can edit content in Fimo Studio, upload any kind of media, generate images and videos, publish, choose a `fimo.site` address or a custom domain, connect integrations, invite their team, and add scheduled agents.
- **Where to go next.** Name concrete extensions of what you built, not generic ideas. Offer to keep going.

## Reference

### Recovering a project

If you lose the `new` output, run this inside `<dir>` at any time:

```sh
npx fimo@latest claim --json
```

`data.claim_url` is the link, `data.expires_at` the deadline, and `data.claim_state` tells you whether the human already claimed the project. Outside `<dir>`, run `npx fimo@latest projects unclaimed`: it lists the unclaimed projects created on this machine with their claim links and deadlines. Projects that were already claimed are left out, so an empty list means nothing is outstanding. Recover the project this way instead of running `new` again, which would create a second project and leave the first one to expire.

### If something goes wrong

- **HTTP 403, usually `project_unclaimed`.** The feature is locked until the claim. Tell the human it unlocks once they claim the project, and continue with what works.
- **`UNCLAIMED_MEDIA_LIMIT` (HTTP 413).** The upload is outside the media limits in section 5. Compress or convert the image, or use an external URL. Do not retry the same file.
- **`unclaimed_projects_disabled` or `unclaimed_limit_reached`.** Creating projects without an account is unavailable right now, or this machine created too many. Do not loop. Tell the human and offer the account path below.
- **The directory is not empty, or is already a Fimo project.** If you created a project there earlier, recover it with `projects unclaimed` and continue from section 4. Otherwise pick another directory.
- **The project expired.** The hosted project and its content are gone. The code on disk is intact. Tell the human, then take the account path below and link the existing folder with `npx fimo@latest link`.

### Doing it with an account instead

If the human already has a Fimo account or prefers to sign in first:

```sh
npx fimo@latest login
npx fimo@latest init <dir> --yes
```

`fimo login` opens a browser, so the human finishes it. Do not stall to ask which path they prefer: creating now and claiming later reaches the same place. The full guide for coding agents with an account is at https://fimo.ai/docs/get-started/ai-coding-agents.
