# scribase dev

Boots the full local Scribase stack — Postgres plus optional application
services — with no Docker and no configuration file required. All state is
kept in `.scribase/` beside your project (or in `SCRIBASE_HOME`).

## Subcommands

### `scribase dev` (bare)

Starts the full local stack: Postgres, auth, storage, realtime, and edge
functions. Blocks until interrupted (Ctrl-C). Equivalent to `scribase dev serve`.

```sh
scribase dev
```

### `scribase dev --services <list>`

Boot only a subset of services. Comma-separated list.

```sh
scribase dev --services auth,storage
scribase dev --services realtime
```

Valid service names: `auth`, `storage`, `realtime`, `functions` (alias: `edge`). Use `all` to enable every service.

Before starting, a **preflight** lists which service binaries were found next to the `scribase` executable or on `PATH`:

```
preflight: service binaries
  auth       found    /usr/local/bin/gotrue
  storage    MISSING  `storage-api`
```

A missing binary is dropped from the boot set with a message; the remaining services still come up.

### `scribase dev up [--schema FILE]`

Starts the local Postgres cluster only (no application services). Prints the connection string and returns.

```sh
scribase dev up
scribase dev up --schema ./schema.scribase
```

With `--schema`, the schema file is compiled and applied immediately after the database is ready.

### `scribase dev status`

Shows every local database cluster and branch.

```sh
scribase dev status
```

Output:

```
primary                  running  primary
my-feature               stopped  branch
```

### `scribase dev url`

Prints the primary database connection string.

```sh
scribase dev url
# postgresql://postgres:postgres@127.0.0.1:54322/postgres
```

### `scribase dev down`

Stops the local database, keeping data intact. `scribase dev up` brings it back.

```sh
scribase dev down
```

### `scribase dev destroy`

Stops and deletes all local databases and branch clusters. Irreversible.

```sh
scribase dev destroy
```

## Configuration

| Variable | Description |
|---|---|
| `SCRIBASE_HOME` | Override the `.scribase` workspace directory |

Service binary overrides:

| Variable | Default binary |
|---|---|
| `ORION_AUTH_BIN` | `gotrue` |
| `ORION_STORAGE_BIN` | `storage-api` |
| `ORION_REALTIME_BIN` | `realtime` |
| `ORION_FUNCTIONS_BIN` | `edge-runtime` |

## Notes

- The local Postgres cluster binds to a random available port. `scribase dev url` always shows the current address.
- Two checkouts of the same project do not share a database; deleting the checkout removes its databases.
- The local stack does not use Docker. The `scribase` binary manages Postgres process lifecycle directly.
