Build on your machine

Create and run a Contrast project from your terminal, with your own coding agent.

Every Contrast project is a normal repository you can run on your own machine. The contrast CLI creates one from a template and runs the whole stack locally, so you can work in your editor, with your own coding agent, or both.

Install

terminal
curl -fsSL https://contrast.dev/install.sh | sh

It works on macOS and Linux and needs no sudo. It installs the contrast and peach commands into ~/.local/bin and adds that folder to your shell’s PATH. If this machine has no bun it installs bun, and if it has no Node.js it installs Node.js 24, which Contrast projects run on.

Open a new terminal afterwards so the commands are on your PATH.

Create and run a project

terminal
contrast create my-app
cd my-app
contrast dev

contrast create asks which template to start from: App (web and iOS, with sign-in and synced data), Game, or Website. Pass --template app, game, or website to skip the question. It installs the dependencies and makes the first git commit, so you start from a clean, working tree.

contrast dev starts the web app and, for projects with an iOS app, Metro for the iOS preview, then prints the web address. It reloads as you save.

Set it up with your agent

Paste this into Claude Code, Codex, or another coding agent, started in an empty folder:

Set up a new Contrast app in this empty directory: install the CLI with `curl -fsSL https://contrast.dev/install.sh | sh`, run `contrast create . --template app`, start `contrast dev` in the background, check the app renders with `contrast shot`, then read AGENTS.md and tell me what you built on.

The agent installs the CLI, creates the project in place, starts it, and checks that it renders. Every project carries an AGENTS.md that explains its structure and how to run and check it, and Claude Code and Codex read it on their own. Change app to game or website for the other templates.

Check your work

Run these from the project folder while contrast dev is running:

  • contrast shot saves a screenshot of the web app, or of one route with contrast shot /settings. It exits with an error when the page logged one, so an agent can use it as a check.
  • contrast ios opens the app in an iOS simulator in your browser, rendered by peach. peach describe, peach screenshot, and peach get errors inspect what is on screen.
  • bunx tsc --noEmit typechecks the project.

Put it online

terminal
contrast login
contrast link --create
contrast deploy

contrast login signs you in through the browser. contrast link --create uploads the project to your Contrast account and records it in contrast.json, so you can also open it in the Dev space. contrast deploy builds it and puts it on a live URL.

To hand the whole workspace, chat and agent squad included, to your own agent instead, see Drive with your own agent.

Ready?

Create a web, iOS, and Android app in minutes with agents working alongside you.