> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ruminate.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Environment and commands

> Environment variables and npm scripts for running Ruminate locally.

Configure auth and (for hosted interpretation) a model key.

## Environment variables

| Variable                                  | Needed for                                                    |
| ----------------------------------------- | ------------------------------------------------------------- |
| `NEXT_PUBLIC_CLERK_*`, `CLERK_SECRET_KEY` | Accounts and organizations                                    |
| `ANTHROPIC_API_KEY`                       | Hosted interpretation of repositories                         |
| `GITHUB_TOKEN`                            | GitHub access without the Clerk connection                    |
| `DATABASE_URL`                            | Postgres (Supabase pooler). Unset uses SQLite                 |
| `RUMINATE_DB`                             | Database path. Default `.ruminate/ruminate.db`                |
| `RUMINATE_LEARNER`                        | Who the MCP server acts for. Default `local`                  |
| `RUMINATE_MODEL`                          | Override the generation model                                 |
| `NEXT_PUBLIC_APP_URL`                     | Public origin for MCP snippets. Default `https://ruminate.so` |
| `NEXT_PUBLIC_DOCS_URL`                    | Product docs. Default `https://docs.ruminate.so`              |

<Note>
  `KINAESTHETIC_*` names are still read as fallbacks during the rename cutover. Prefer `RUMINATE_*`.
</Note>

## Commands

| Command                                 | What it does                                             |
| --------------------------------------- | -------------------------------------------------------- |
| `npm run dev`                           | Run the app                                              |
| `npm run refresh [id]`                  | Re-read structure without re-interpreting. No model call |
| `npm run analyze github <owner> <repo>` | Analyse a repository from the terminal                   |
| `npm test`                              | Unit tests                                               |
| `npm run test:e2e`                      | Playwright end-to-end tests                              |
| `npm run typecheck`                     | `tsc --noEmit`                                           |
| `npm run mcp`                           | Run the MCP server over stdio                            |

`npm run refresh` recomputes static analysis and exploration priorities against the stored interpretation. Use it after a `git pull`, or after improving the analyzer. See [How it works](/how-it-works).
