-
Notifications
You must be signed in to change notification settings - Fork 512
[Docs Mintlify] - Updates and new additions #1401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||
|---|---|---|---|---|---|---|---|---|
|
|
@@ -17,9 +17,6 @@ A JWT is a string that consists of three parts separated by dots (`.`): | |||||||
|
|
||||||||
| The structure looks like this: `header.payload.signature` | ||||||||
|
|
||||||||
| ## JWT Viewer | ||||||||
|
|
||||||||
| Use the interactive JWT viewer below to decode and inspect JWT tokens. If you're signed in, it will automatically load and display your current session token: | ||||||||
|
|
||||||||
| ## Stack Auth JWT Structure | ||||||||
|
|
||||||||
|
|
@@ -264,7 +261,7 @@ const { payload } = await jose.jwtVerify(token, jwks, { | |||||||
|
|
||||||||
| ### Debugging JWTs | ||||||||
|
|
||||||||
| Use the JWT viewer above to inspect tokens and verify their contents. Pay special attention to: | ||||||||
| Use a JWT viewer such as [jwt.io](https://jwt.io/) to inspect tokens and verify their contents. Pay special attention to: | ||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add a warning before recommending third-party JWT viewers. Pointing to jwt.io without a caution may lead users to paste active production tokens into an external site. Add an explicit “use only redacted/test tokens” warning and suggest local decoding where possible. 🔐 Proposed doc tweak-Use a JWT viewer such as [jwt.io](https://jwt.io/) to inspect tokens and verify their contents. Pay special attention to:
+Use a JWT viewer such as [jwt.io](https://jwt.io/) to inspect tokens and verify their contents.
+Never paste active production tokens into third-party tools; use test/redacted tokens (or a local decoder) instead. Pay special attention to:📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||
|
|
||||||||
| * Expiration times (`exp` claim) | ||||||||
| * Audience (`aud` claim) matching your project | ||||||||
|
|
||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,158 @@ | ||
| --- | ||
| title: "Stack CLI" | ||
| description: "Use the Stack Auth CLI to initialize projects, manage config, run admin scripts, and start the local emulator" | ||
| sidebarTitle: "Stack CLI" | ||
| --- | ||
|
|
||
| The Stack Auth CLI is published as `@stackframe/stack-cli` and exposes the `stack` command. Use it for project setup, branch config workflows, quick admin scripts, and the [local emulator](/guides/going-further/local-emulator). | ||
|
|
||
| ## Install | ||
|
|
||
| Install the CLI globally to use the `stack` command from any project: | ||
|
|
||
| ```sh title="Terminal" | ||
| npm install -g @stackframe/stack-cli@latest | ||
| ``` | ||
|
|
||
| Then check that it is available: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack --help | ||
| ``` | ||
|
|
||
| You can also run any command without installing globally by prefixing it with `npx @stackframe/stack-cli@latest`, for example: | ||
|
|
||
| ```sh title="Terminal" | ||
| npx @stackframe/stack-cli@latest init | ||
| ``` | ||
|
|
||
| ## Global options | ||
|
|
||
| These options can be used before a subcommand: | ||
|
|
||
| | Option | Description | | ||
| | --- | --- | | ||
| | `--project-id <id>` | Project ID for commands that operate on one project. You can also set `STACK_PROJECT_ID`. | | ||
| | `--json` | Print JSON output for commands that support it, such as `project list` and `project create`. | | ||
| | `--version` | Print the CLI version. | | ||
|
|
||
| The CLI reads Stack Auth endpoints from `STACK_API_URL` and `STACK_DASHBOARD_URL`. If unset, it uses Stack Auth Cloud. | ||
|
|
||
| ## Authentication | ||
|
|
||
| Log in with a browser: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack login | ||
| ``` | ||
|
|
||
| This stores `STACK_CLI_REFRESH_TOKEN` in the CLI credentials file. You can also provide it through the environment, which is useful in CI. | ||
|
|
||
| ```sh title="Terminal" | ||
| STACK_CLI_REFRESH_TOKEN=<refresh-token> stack project list | ||
| ``` | ||
|
|
||
| Log out by removing the saved refresh token: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack logout | ||
| ``` | ||
|
|
||
| If you have an anonymous CLI session that should be linked during login, set `STACK_CLI_ANON_REFRESH_TOKEN` before running `login`. | ||
|
|
||
| ## Initialize a project | ||
|
|
||
| Run the interactive setup wizard: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack init | ||
| ``` | ||
|
|
||
| The wizard can create a cloud project, create a local config file for the emulator, or link an existing project. In interactive terminals, it can run an agent to apply the setup changes to your app. Use `--no-agent` to print manual setup instructions instead. | ||
|
|
||
| ### Non-interactive init | ||
|
|
||
| Use `--mode` to skip prompts: | ||
|
|
||
| | Command | What it does | | ||
| | --- | --- | | ||
| | `stack init --mode create --apps authentication,teams` | Create `stack.config.ts` for local config-driven development. | | ||
| | `stack init --mode create-cloud` | Create a new Stack Auth Cloud project and write keys to `.env`. | | ||
| | `stack init --mode link-config --config-file ./stack.config.ts` | Link setup instructions to an existing local config file. | | ||
| | `stack init --mode link-cloud --select-project-id <id>` | Write keys for an existing cloud project to `.env`. | | ||
|
|
||
| Other useful flags: | ||
|
|
||
| | Option | Description | | ||
| | --- | --- | | ||
| | `--apps <apps>` | Comma-separated app IDs to enable in `create` mode. | | ||
| | `--config-file <path>` | Existing config file for `link-config` mode. | | ||
| | `--select-project-id <id>` | Existing cloud project for `link-cloud` mode. | | ||
| | `--output-dir <dir>` | Directory where output files should be written. Defaults to the current directory. | | ||
| | `--no-agent` | Skip the setup agent and print manual instructions. | | ||
|
|
||
| ## Project commands | ||
|
|
||
| List projects owned by the logged-in user: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack project list | ||
| ``` | ||
|
|
||
| Create a project: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack project create --display-name "My App" | ||
| ``` | ||
|
|
||
| Use `--json` when you want machine-readable output: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack --json project list | ||
| ``` | ||
|
|
||
| ## Config commands | ||
|
|
||
| Pull branch config into a local TypeScript config file: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack --project-id <project-id> config pull --config-file ./stack.config.ts | ||
| ``` | ||
|
|
||
| By default, `config pull` refuses to overwrite an existing file. Add `--overwrite` when that is intended. | ||
|
|
||
| Push a local config file to branch config: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack --project-id <project-id> config push --config-file ./stack.config.ts | ||
| ``` | ||
|
|
||
| `config pull` requires `stack login`. `config push` supports either `stack login` or `STACK_SECRET_SERVER_KEY`. | ||
|
|
||
| When running in GitHub Actions, `config push` records `GITHUB_REPOSITORY`, `GITHUB_REF_NAME`, `GITHUB_SHA`, and the config file path as the config source when those environment variables are available. | ||
|
|
||
| ## Execute admin JavaScript | ||
|
|
||
| `stack exec` runs JavaScript with a preconfigured `StackServerApp` available as `stackServerApp`. | ||
|
|
||
| ```sh title="Terminal" | ||
| stack --project-id <project-id> exec "return await stackServerApp.listUsers()" | ||
| ``` | ||
|
|
||
| The JavaScript is executed as an async function. Return values are printed as formatted JSON; `undefined` prints nothing. | ||
|
|
||
| <Warning> | ||
| `stack exec` has server-level access to the selected project. It requires `stack login` and intentionally rejects `STACK_SECRET_SERVER_KEY` auth. | ||
| </Warning> | ||
|
|
||
| ## Local emulator commands | ||
|
|
||
| The CLI also manages the QEMU local emulator: | ||
|
|
||
| ```sh title="Terminal" | ||
| stack emulator start | ||
| stack emulator status | ||
| stack emulator stop | ||
| ``` | ||
|
|
||
| See the [local emulator guide](/guides/going-further/local-emulator) for setup, ports, environment variables, and troubleshooting. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Removing the "JWT Viewer" section left two consecutive blank lines between the
header.payload.signatureparagraph and the## Stack Auth JWT Structureheading. Consider removing the extra blank line for cleaner rendering.Prompt To Fix With AI
Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!