# please run<no value>

Figures out how to start this project, then remembers it.

<!--more-->

```bash
please run
please run set [--term] [--check "<probe>"] "<command>" ["<command>" ...]
please run reset
```

The first time, `please run` reads a small, fixed set of files if present, README, package.json, Cargo.toml, pyproject.toml, requirements.txt, Dockerfile, docker-compose.yml, Makefile, go.mod, Procfile, and .tool-versions, and asks the AI how to start the project. It shows you the plan and asks for confirmation before running anything.

Once confirmed, the decision is saved outside the working tree, so it never shows up in `git status`, and every `please run` after that replays it directly with no AI call and no confirmation.

If the project needs something running first, such as a database or a Docker daemon, the plan can include a cheap check that runs before the real commands, with a short hint printed if it fails.

## Dev servers open in a new terminal

If the run command is a long-running process, a dev server or a file watcher, `please run` opens it in a new terminal window so your current shell stays free. Pass `--here` to force it inline, or `--new-terminal` to force a new window.

## please run set

```bash
please run set "npm run dev"
please run set --term "bin/dev"
please run set --check "docker info" "docker compose up -d" "npm run dev"
```

Records the run commands by hand, with no AI call. This is also how `please chat` overrides how a project runs: tell the agent what your project actually needs and it saves it with `please run set`. `--term` marks the command long-running; `--check` gives a probe command that must succeed before the rest.

## please run reset

```bash
please run reset
```

Clears the saved decision, so the next `please run` figures it out fresh.

{{< callout type="info" >}}
  `please run` works outside a Git repository too, since running a project has nothing to do with version control. The saved decision lives in `.git/please/` inside a repository, or in a per-project cache under your home directory when there is no repository.
{{< /callout >}}
