# Tooling: the dev data root separates from the installed one Running the server or CLI from source used to operate on the very same data as the user's real installed penguin: core's `resolveRoot()` returns `PENGUIN_HOME ?? ~/.penguin/data`, the dev entry points set nothing, and so `pnpm dev` shared agents, sessions and `web.db` with the production install. The development entry points — `pnpm dev`, `pnpm dev:server`, `pnpm penguin`, and packages/cli's own `penguin` script — now default `PENGUIN_HOME` to a separate dev data root, `~/.penguin/dev-data`, via POSIX `${PENGUIN_HOME:-…}` substitution in the scripts themselves. An explicitly exported `PENGUIN_HOME` still wins, and the product defaults — `resolveRoot()`, the server config, CLI `--root` — are unchanged: the isolation lives only in the dev scripts, so the installed penguin keeps `~/.penguin/data`. CONTRIBUTING.md's development-commands section and the installation docs (zh + en) document the dev root.