forge
Clone forge-starter
Docker onlystep 1 · nothing else to install
10 minutesafter Docker · nothing → app running
Agent-readythe starter ships the skills

From nothing installed to a running app

1

Install Docker Get Docker

Ask your agent

you
I want to build an app on forge (docs: https://forge.mardash.ai/start). First, check whether this machine has Docker and the Docker Compose plugin. If either is missing, walk me through installing Docker Desktop.
claude
docker --version · docker compose version You need Docker with the Compose plugin — Docker Desktop includes it. It is not installed yet: get Docker here, then say “done”.

From the terminal

$ docker --version && docker compose version # both must answer
# not there? → https://docs.docker.com/get-docker/
2

Make the app

Ask your agent forge → new-app

you
Set up forge for me: clone https://github.com/mardash-ai/forge-starter into a folder called hello, read its README.md and CLAUDE.md, create a .env with a FORGE_SECRETS_KEY, then create a forge app called hello with a Postgres database and run it. If anything is unclear, the docs are at https://forge.mardash.ai/start.
claude
git clone forge-starter read README.md · CLAUDE.md forge → new-app --with-postgres --dev
Done. forge is set up in hello/ with a secret key, and hello is built and running at localhost:3000 with Postgres. From here I have forge's skills, so short asks work.

From the terminal

$ git clone https://github.com/mardash-ai/forge-starter hello && cd hello
$ cp .env.example .env # set FORGE_SECRETS_KEY (openssl rand -hex 32)
$ ./new-app hello --with-postgres --dev
3

Open it

initprovisioninstallbuildtestlintdev · :3000ApplicationEnvironmentDependencyInstallBuildTestRunCheckRunDevServerone command · seven capabilities · gated at every step↓ each leaves a Resource and an Event
What new-app just did. Nothing happened off the record: every stage is a Resource you can list and an Event you can read.

Ask your agent

you
What did you just make?
claude
forge → resources Seven things, all passing — the picture above. Open localhost:3000.

From the terminal

$ open http://localhost:3000
$ ./forge resources --app hello · ./forge events --app hello
4

Change one line, break it, read why

Ask your agent

you
Make the greeting say “hi there”. I also moved a line in page.tsx — build it.
claude
forge → build failed → forge → explain-failure greeting is used before it is declared (app/page.tsx:7). Fixed and rebuilt — BuildSucceeded.

From the terminal

$ ./forge build --app hello BuildFailed res_01J…
$ ./forge explain --resource res_01J…
Analysis app/page.tsx:7 — 'greeting' used before declared. Move the const above the return.
5

Check its health

Ask your agent

you
Is it healthy?
claude
forge → inspect health ok — one check (db) passing.

From the terminal

$ ./forge inspect health --app hello
{ "status": "ok", "checks": [ { "name": "db", "status": "ok" } ] }

Next: The starter, explained Your first feature.

The starter pins forge 1.55.0 for both planes; the harness refreshes the pin.