# Console introduction

> The two command-line programs of SummerCMS, the summer developer tool and the application binary, and how summer delegates runtime commands.

WinterCMS has one console entry point, `php artisan`. SummerCMS has two programs, because the developer tooling and the running application are separate binaries:

| Program | Where it comes from | What it does |
|---------|---------------------|--------------|
| `summer` | Installed once from the framework with `go install ./cmd/summer`. | Builds and watches applications, scaffolds plugins and their parts, records API parity fixtures and builds these docs. |
| The application binary, for example `./bin/acme` | Written by `summer build` into the application's `bin/` directory. | Runs the application: the HTTP server, migrations, workers, the scheduler, admin accounts and every command its plugins add. |

The application binary is what you deploy, so everything that must run in production, such as migrations and workers, is a command of the binary rather than of `summer`.

## Getting help

Both programs list their commands with `--help`, and every command accepts `--help` for its arguments and flags:

```sh
summer --help
summer make:model --help
./bin/acme --help
./bin/acme migrate:rollback --help
```

## Commands that summer delegates

During development you often work from the application directory with `summer` alone. These `summer` commands find the application's `summer.yaml`, build `bin/<binary>` when it does not exist yet, and run the same command of the binary with the same arguments:

| summer command | Runs |
|----------------|------|
| `summer migrate` | `./bin/acme migrate` |
| `summer migrate:rollback` | `./bin/acme migrate:rollback` |
| `summer migrate:status` | `./bin/acme migrate:status` |
| `summer serve` | `./bin/acme serve` |
| `summer queue:work` | `./bin/acme queue:work` |
| `summer queue:clear` | `./bin/acme queue:clear` |
| `summer schedule:run` | `./bin/acme schedule:run` |

`summer` does not rebuild an existing binary before it delegates. Run `summer build` after you change code, or keep `summer dev` running. Every other runtime command, such as `route:list`, `key:generate` or `admin:create`, is run on the binary directly.

## The sections of this chapter

- [Setup and maintenance](/docs/console/setup-and-maintenance.md) lists every command of the application binary.
- [Scaffolding](/docs/console/scaffolding.md) covers `summer build`, `summer dev` and the `make:` commands.
- [Writing commands](/docs/console/writing-commands.md) shows how a plugin adds its own commands.
- [Utilities](/docs/console/utilities.md) covers the parity and documentation commands of `summer`.
