# `shelldocs dev`
> Start the dev server with hot-reload for .md, .razor, and .cs changes.
Source: https://shelldocs.shellui.dev/docs/cli/dev
`shelldocs dev` is the daily-driver runner : `dotnet watch run` under the hood, with the watch set extended to include markdown so editing a `.md` file re-triggers the navigation-graph rebuild without a manual restart.
## Synopsis
```bash
shelldocs dev [--dir
] [--port ]
```
## Default use
Run from your docs project root:
```bash
shelldocs dev
```
Serves at `http://localhost:5000` and watches:
- `.cs` (C# source)
- `.razor` (component source)
- `.css` and `.js` (styling / interop)
- `content/**/*.md` (docs pages)
Editing any watched file triggers a hot-reload : Blazor's rebuild-and-refresh for source files, ShellDocs' nav-graph rebuild for markdown.
## Changing the port
```bash
shelldocs dev --port 5200
```
Binds to `http://localhost:5200` instead. Useful when 5000 is taken by another Blazor project.
## Running from a different directory
```bash
shelldocs dev --dir docs/MyDocs.Docs --port 5200
```
Points at a specific project directory instead of the working dir. Handy in monorepos where you're normally in `../src/` but want to spin up the docs site.
## Under the hood
`dev` shells out to:
```bash
dotnet watch --project --non-interactive run --urls http://localhost:
```
`--non-interactive` disables `dotnet watch`'s prompt for "restart on non-hot-reloadable changes" : ShellDocs sites usually just want the file-watcher to rebuild without asking.
`Ctrl+C` in the CLI forwards to the child process's entire process tree, so `dotnet watch` shuts down cleanly.
## Options
| Name | Type | Default | Description |
|------|------|---------|-------------|
| `--dir` | `string` | `cwd` | Project directory. dev looks for a .csproj here. |
| `--port` | `int` | `5000` | Port to bind on. |
## Exit codes
| Name | Type | Default | Description |
|------|------|---------|-------------|
| `0` | `ok` | | Server shut down cleanly (e.g. Ctrl+C). |
| `1` | `usage` | | No .csproj found in the target directory. |
| `other` | `pass-through` | | dotnet watch run exit code propagated. |
## Skipping the CLI
`shelldocs dev` is a thin convenience over `dotnet watch run`. If you'd rather run watch yourself : `cd docs/MyDocs.Docs && dotnet watch run` does the same thing (minus the `--non-interactive` flag and the markdown-in-watch-set optimization).
## See also
- [shelldocs build](https://shelldocs.shellui.dev/docs/cli/build.md): Publish a static site once you're ready to deploy.
- [Quick start](https://shelldocs.shellui.dev/docs/getting-started/quick-start.md): Full walkthrough from init to dev.