Legal / Privacy
Your data stays on your machine.
StackNext is a local-first debugging tool. This page explains what the collector receives, what is redacted or dropped, where records are stored, and why nothing is uploaded.
Last updated November 10, 2026
The short version
StackNext collects telemetry from your Next.js app over loopback, keeps a fixed-size sample in memory, and writes explicit records only under the project's .stacknext directory. There is no cloud service, account, analytics pipeline or outbound ingestion.
- No account, hosted backend, analytics endpoint or outbound telemetry.
- Instrumentation talks only to the collector on this machine.
- Captures, baselines, comparisons and snapshots are redacted local files and are never uploaded by StackNext.
- This website sets no cookies and loads no third-party tracking scripts.
What the collector receives
The collector accepts only the data needed to show a request, its database activity, its errors and deterministic diagnostic findings. Everything passes through validation and redaction before it enters the in-memory store.
| Data | Handling |
|---|---|
| Spans and timing | Span names, kinds, timing, status and documented Next.js attributes. Sensitive attributes are redacted. |
| Route and HTTP metadata | Path, HTTP method, status code and duration. Query values and fragments are removed. |
| Database events | Normalized SQL shape and timing from the optional Drizzle and Prisma adapters. Bind parameters are never read. |
| Errors | Error name, message, stack and digest after text redaction. Secret patterns and query strings in stack URLs are replaced. |
| Runtime metadata | A small allowlist such as service name, version, runtime, Next.js version and environment. |
| Diagnostics | Deterministic findings derived from the already-redacted sample. Evidence is sanitized again before it is returned by the CLI, dashboard, export or MCP server. |
What is never captured
StackNext does not read, transmit or store the following, regardless of how the collector is configured:
- Request or response bodies.
- Request headers or cookies.
- URL query values or fragments.
- SQL bind parameters.
- Server Action arguments,
FormDatavalues or return values. The action helper records only the name and attributes you pass explicitly. - Playwright screenshots, videos or trace archives.
- Machine or user identifiers.
- The collector bearer token in run, baseline, comparison or snapshot records. It exists only in
.stacknext/run.jsonwith mode0600.
Two redaction passes
Redaction happens once in your application process before events are queued, and again in the collector before the data is stored. A bug in one layer does not automatically expose raw data through the other.
- URLs:
/path?token=secret#fragmentbecomes/path. - Sensitive keys: names containing authorization, cookie, password, secret, API key, token, credential or connection string become
[redacted]. - Headers: attribute maps with a header-shaped key are replaced wholesale.
- Secret patterns: bearer tokens, JWTs, common API key formats, credential-bearing connection strings and
key=valuepassword or token patterns are replaced. - SQL and errors: redaction patterns are applied to query text, error messages and stacks. Bind parameters are never included.
Redaction is pattern-based and deliberately conservative, not a formal secret scanner. If an application embeds an unrecognized secret in a SQL string, a URL path segment, a span attribute or an error message, it may still be stored. Keep credentials out of those places and review an export before sharing it.
Local files and retention
The live sample is held in memory with fixed capacity and retention limits. Drop counters are surfaced in the dashboard, CLI and health endpoint when the store fills.
- Defaults are 5,000 spans and 10 minutes. Older events are dropped rather than written to a remote store.
- Snapshots, runs, baselines and comparisons are explicit JSON records under
.stacknext. Directories use mode0700and files use0600. - Automatic exit and first-error snapshots rotate beyond the newest ten by default. Manual and imported snapshots are never deleted automatically.
- Individual record files are capped at 16 MiB and snapshots at 64 MiB. Oversized saves fail instead of truncating data.
- Delete the
.stacknextdirectory to remove local records. StackNext never uploads them.
Loopback network boundary
The collector and dashboard share one Node process bound to 127.0.0.1 or localhost. Startup rejects any other host.
- Ingestion requires an
Authorization: Bearertoken generated bystacknext dev. The token is stored in.stacknext/run.jsonwith mode0600. - Read APIs and the live stream require the bearer token or an
HttpOnly,SameSite=Strictdashboard session cookie. Sessions expire after 24 hours. - Non-loopback
Hostheaders, cross-origin requests andSec-Fetch-Site: cross-siterequests are rejected. - The dashboard sends a restrictive content security policy,
nosniff,X-Frame-Options: DENYandReferrer-Policy: no-referrer. - The MCP client refuses collector URLs that are not loopback.
AI coding agents and MCP
StackNext does not bundle an AI provider, send telemetry to a hosted inference service or require an API key. Diagnostics are deterministic rules, not model output. The MCP server is read-only and uses GET requests over loopback, so a coding agent can inspect the sample without changing it.
If you connect a hosted coding agent to the MCP server, that agent's own privacy policy applies to what it reads. StackNext does not control the agent or its retention.
This website
This marketing site is a static Next.js application. It does not set cookies, run analytics, load ad networks or include third-party tracking scripts. Fonts and images are served from this origin.
Links to GitHub, npm and the documentation take you to external services with their own privacy policies. The hosting provider may process standard request logs, such as IP address and user agent, under its own policy.
The product itself does not disable or reconfigure any monitoring your app already uses. If another OpenTelemetry provider is registered, StackNext yields to it instead of starting a second SDK.
Changes and questions
This page is updated when captured data, the redaction model or the local boundary changes. For general questions, open an issue in the StackNext repository. Report security concerns through the security policy rather than a public issue.
The full engineering detail lives in the privacy and redaction documentation.