Skip to content
StackNext
StackNext
Install

Open source · MIT · Contributions welcome

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.

DataHandling
Spans and timingSpan names, kinds, timing, status and documented Next.js attributes. Sensitive attributes are redacted.
Route and HTTP metadataPath, HTTP method, status code and duration. Query values and fragments are removed.
Database eventsNormalized SQL shape and timing from the optional Drizzle and Prisma adapters. Bind parameters are never read.
ErrorsError name, message, stack and digest after text redaction. Secret patterns and query strings in stack URLs are replaced.
Runtime metadataA small allowlist such as service name, version, runtime, Next.js version and environment.
DiagnosticsDeterministic 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, FormData values 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.json with mode 0600.

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#fragment becomes /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=value password 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 mode 0700 and files use 0600.
  • 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 .stacknext directory 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: Bearer token generated by stacknext dev. The token is stored in .stacknext/run.json with mode 0600.
  • Read APIs and the live stream require the bearer token or an HttpOnly, SameSite=Strict dashboard session cookie. Sessions expire after 24 hours.
  • Non-loopback Host headers, cross-origin requests and Sec-Fetch-Site: cross-site requests are rejected.
  • The dashboard sends a restrictive content security policy, nosniff, X-Frame-Options: DENY and Referrer-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.